/** * 成果IDから成果明細情報を取得します */ public function &Result_ClientReportResultSeq_getSeikaDetailBySeikaId($code, $seikaId) { $tables = new CampaignDbTables($code); $name_seika_detail = $tables->getTableName_Seika_Detail(); // DB接続 $db =& $this->_core->getDB(); // SQL $sql = <<<SQL select seika_detail_id, seika_id, detail_no, item_cd, quantity, cancel_flg, item_memo from {$name_seika_detail} where seika_id = ? SQL; $data = $db->query($sql, array($seikaId)); return $data; }
/** * 対象成果明細の親の成果を更新します */ public function Result_SeikaModifyItemPriceQuantityUpload_updateParentSeika($code, $seikaId, $updUserId) { $db =& $this->_core->getDBForUpdate(); $tables = new CampaignDbTables($code); $name_seika = $tables->getTableName_Seika(); $name_seika_detail = $tables->getTableName_Seika_Detail(); // 成果の更新 // 成果のステータス、承認日は更新しない EcSeikaManager::updateSeika($db, $name_seika, $name_seika_detail, $seikaId, $updUserId); }
public function updateSeika($promotionId, $clientUserId, $beforeSeika) { // 基本情報 $anken =& $this->getAnkenData($promotionId); // キャンペーンコード $code = $anken['campaign_code']; //締め日は承認APIが実行された日とする $acceptDate = date("Y-m-d"); // テーブル名称 $tables = new CampaignDbTables($code); $name = $tables->getTableName_Seika(); $nameDetail = $tables->getTableName_Seika_Detail(); // DB接続 $db =& $this->_core->getDBForUpdate(); $soapStatus = "100"; // クライアントID(更新者) $clientId = $anken['login_id']; // カラム(nm_soap_status)存在するかどうかを判断する $sql = <<<SQL Describe {$name} nm_soap_status SQL; $nm_soap_status = $db->query($sql); if (empty($nm_soap_status) == true) { $apiException = new InternalExecuteException(); $this->_log->info("File:[" . basename(__FILE__) . "] Line:[" . __LINE__ . "] Exception:[" . get_class($apiException) . $name . "]"); throw $apiException; } $seikaId = $beforeSeika['seika_id']; // 成果に紐づく商品情報レコードを全て取得 $seikaDetailList = $this->getSeikaDetailBySeikaId($db, $nameDetail, $seikaId); // 商品情報レコードから成果更新用データを作成 $seikaData = $this->createSeikaDataForUpdateFromDetails($seikaDetailList); $list = array(); $param = array(); // ステータス、締め日 // ステータスの変更が無い場合でも元のステータスが保留以外の場合は、 // 締め日をAPI実行日で更新する if (isset($seikaData['accept_flg'])) { $list[] = "accept_flg=?"; $param[] = $seikaData['accept_flg']; if ($acceptDate != null) { $list[] = "accept_date=?"; $param[] = $acceptDate; } } else { if ($beforeSeika['status'] != 'N') { if ($acceptDate != null) { $list[] = "accept_date=?"; $param[] = $acceptDate; } } } // 金額 $list[] = "amount_price=?"; $param[] = $seikaData['amount_price']; // 単価 $list[] = "accept_price=?"; $param[] = $seikaData['accept_price']; // 卸値 $list[] = "accept_oroshi=?"; $param[] = $seikaData['accept_oroshi']; // nm_soap_status $list[] = "nm_soap_status=?"; $param[] = $soapStatus; // 更新者はクライアントID $list[] = "upd_user_id=?"; $param[] = $clientId; // 項目作成 $update = implode(', ', $list); $sqlLine = __LINE__; $sql = <<<SQL update {$name} set {$update}, upd_time=now() where client_user_id=? and seika_id=? SQL; $param = array_merge($param, array($clientUserId, $seikaId)); $this->outPutSqlLog(basename(__FILE__), $sqlLine, $sql, $param); $db->execute($sql, $param); }