/** * 実行 */ protected function perform() { // 案件ID $ankenId = $this->_request['aid']; // モデル $m =& $this->_model; // 基本情報 $anken =& $m->getAnkenData($ankenId); $this->appendDataFrom($anken); // ログインクライアントIDチェック if ($this->_core->getLoginKind() == 'client' && $this->_loginClientId != $anken['client_id']) { throw new RequestParamsException('ログインクライアントIDと要求したクライアントIDが一致しません。'); } // 締め日 $shime = $anken['shime_date']; // キャンペーン期間 $from = $anken['campaign_from']; $to = $anken['campaign_to']; // 空の期間配列を作成 $blank = DateManager::getArrayShimeSpan($ankenId, $from, $to, $shime); // 集計 $data =& $m->Result_ClientReportResult_counting($anken, $blank); // テンプレートに渡す $this->_dataFrom['list'] =& $data; /////////////////////////////////////////////// // UPLOAD用のフォームのカスタム処理 /////////////////////////////////////////////// $path = $m->Result_ClientReportResult_getUploadFormTmplPath($ankenId); $this->_dataFrom["upform_path"] = $path; /////////////////////////////////////////////// // 拡張リンク用のカスタム処理 /////////////////////////////////////////////// $tmpl = $m->Result_ClientReportResult_getExtraLinkTmplPath($ankenId); $this->_dataFrom["extra_link_path"] = $tmpl; }
/** * 対象案件の売上と支払を、締め日区切りで集計します */ function &getSummaryDataGroupByShimebi(&$db, &$anken) { $code = $anken['campaign_code']; $ankenId = $anken['anken_id']; $campaignFrom = $anken['campaign_from']; $campaignTo = $anken['campaign_to']; $shime = $anken['shime_date']; // 締め日区切りの配列を取得 // 締め日から締め日を from, to で配列にする $span =& DateManager::getArrayShimeSpan($ankenId, $campaignFrom, $campaignTo, $shime); // 戻り値用配列を初期化 $total = array(); // 期間ごとに処理 foreach ($span as $key => $value) { // 条件配列を初期化 $like = array(); // 対象期間(締め日区切り) $like['from'] = $value['from']; $like['to'] = $value['to']; // 集計オブジェクトを取得 $client =& ListSummaryManager::createForClient($ankenId, $db, $code, $like); $media =& ListSummaryManager::createForMedia($ankenId, $db, $code, $like); $year = date('Y', strtotime($like['from'])); $month = date('m', strtotime($like['from'])); $total[$year][$month]['input'] = $client->getAmountReward(); $total[$year][$month]['output'] = $media->getAmountReward(); } return $total; }
/** * 実行 */ protected function perform() { // 案件ID $ankenId = $this->_request['aid']; // モデル $m =& $this->_model; // 基本情報 $anken =& $m->getAnkenData($ankenId); $this->appendDataFrom($anken); // ログインクライアントIDチェック if ($this->_core->getLoginKind() == 'client' && $this->_loginClientId != $anken['client_id']) { throw new RequestParamsException('ログインクライアントIDと要求したクライアントIDが一致しません。'); } // 締め日 $shime = $anken['shime_date']; // キャンペーン期間 $from = $anken['campaign_from']; $to = $anken['campaign_to']; // 空の期間配列を作成 $blank = DateManager::getArrayShimeSpan($ankenId, $from, $to, $shime); // 集計 $data =& $m->Result_ClientReportResult_counting($anken, $blank); // テンプレートに渡す $this->_dataFrom['list'] =& $data; // 案件情報のアクションID対応の値 $enum = new AcceptUseActionIdEnum(); $this->_dataFrom["accept_use_action"] = $enum->getKey('アクションID'); // 案件情報の定率対応の値 $enum = new PriceTypeCdEnum(); $this->_dataFrom["price_use_rate"] = $enum->getKey('定率'); //--------------------------------------- // UPLOAD用のフォームのカスタム処理 //--------------------------------------- $path = $m->Result_ClientReportResult_getUploadFormTmplPath($ankenId); $this->_dataFrom["upform_path"] = $path; //--------------------------------------- // CSVの追加オプション表示 //--------------------------------------- $this->_dataFrom["add_option_name"] = $m->Result_ClientReportResult_getAddLabelForUploadForm($ankenId); //--------------------------------------- // 流通売上合計金額表示設定の表示 //--------------------------------------- $this->_dataFrom["sales_distribution_amount_flg"] = $m->Result_ClientReportResult_GetSalesDistributionAmountFlag($ankenId); //--------------------------------------- // フッターのリンク //--------------------------------------- $tmpl = $m->getExtraLinkTmplPath($ankenId); $this->_dataFrom["extra_link_path"] = $tmpl; //--------------------------------------- // レポートの表示/非表示制御 //--------------------------------------- $this->_dataFrom["disp"] =& $m->getReportDisp($ankenId, $this->_core->getLoginKind()); }
/** * 成果件数を取得します * @param array $ankenList 対象メディアデータ * @param array $like 検索条件配列 */ public function &Result_MediaCompanyDownload_getSeikaData(&$ankenList, &$like) { $db =& $this->_core->getDB(); // 条件を作成 $where = ""; $param = array(); // メディア企業ID (検索条件) if (empty($like['media_company_id']) == false) { $mediaCompanyId = $like['media_company_id']; $where .= " and M.media_company_id=? "; $param[] = $mediaCompanyId; } // ステータス if (empty($like['status']) == false && count($like['status']) != 3) { $status = $like['status']; if (in_array(1, $status) == true) { $list[] = " CS.accept_flg=1 "; } if (in_array(2, $status) == true) { $list[] = " CS.accept_flg=0 "; } if (in_array(3, $status) == true) { $list[] = " CS.accept_flg is null "; } $s = implode(' or ', $list); if (strlen($s) != 0) { $where .= " and ({$s}) "; } } // 対象日付条件 $targetData = 'CS.action_date'; if (empty($like['date_target']) == false && $like['date_target'] == 2) { $targetData = 'CS.accept_date'; } $result = array(); // 拡張処理用SQL文 $sql = <<<SQL select is_custom, result_media_company_download as flg from ald_custom_status where anken_id=? SQL; // 案件毎に成果データを取得し整理します。 foreach ($ankenList as $key => $anken) { $ankenId = intval($anken['anken_id']); // 検索範囲を取得 $from = trim($like['target_month']); $next = strtotime("{$month} + 1 month"); $to = date('Y-m-d', $next); $shime = $anken['anken_shime_date']; $ankenWhere = $where . " and {$targetData} between ? and ?"; $span =& DateManager::getArrayShimeSpan($ankenId, $from, $to, $shime); $ankenParam = $param; $ankenParam[] = $span[0]['from']; $ankenParam[] = $span[0]['to']; // 拡張テーブルから拡張確認 $data =& $db->query($sql, array($ankenId)); // 対象モデル $model =& $this; if (count($data) == 1) { $isCustom = $data[0]['is_custom']; $flag = $data[0]['flg']; // 拡張処理であれば一時的にモデル入れ替え if ($isCustom == '1' && $flag == '1') { // ファイルパス $base = $this->_core->getBaseName(); $path = ABS_MODEL . "alladinExtend/{$ankenId}/{$base}_{$ankenId}_model.php"; require_once $path; // クラス名称 $b = str_replace('/', '_', $base); $className = "{$b}_{$ankenId}_model"; // インスタンス生成 $model = new $className($this->_core); } // 成果データ取得 $data =& $model->Result_MediaCompanyDownload_getAnkenSeikaData($anken, $ankenWhere, $ankenParam); if (count($data) != 0) { // 整理 $model->Result_MediaCompanyDownload_formatAnkenSeikaData($anken, $data); // 結果を連結 array_splice($result, count($result), 0, $data); } } } return $result; }
/** * 実行 */ protected function perform() { // 案件ID $ankenId = $this->_request['aid']; // メディアID $mediaId = $this->_request['mid']; // モデル $m =& $this->_model; // 基本情報 $anken =& $m->getAnkenAndMediaData($ankenId, $mediaId); $this->appendDataFrom($anken); // キャンペーンコード $code = $anken['campaign_code']; // 提携メディア情報 $teikei = $m->Result_MediaReportResult_getTeikeiMediaData($code, $mediaId, $this->_loginMediaCompanyId); // ダウンロードフラグ if ($this->_loginClientId == null) { $this->_dataFrom['download_flag'] = $teikei['download_flag']; } // キャンペーン期間 $from = $anken['campaign_from']; $to = $anken['campaign_to']; // 締め日 $shime = $anken['shime_date']; // 空データを作成 $blank = DateManager::getArrayShimeSpan($ankenId, $from, $to, $shime); // 集計 $data =& $m->Result_MediaReportResult_counting($anken, $teikei, $blank); //---------------------------------- // メディア今月請求対象明確化 //---------------------------------- // 注意文の基準日を取得 $baseDay = MEDIA_REPORT_RESULT_NOTICE_BASE_DAY; $shimeDay = $anken['shime_date']; $nowY = date('Y'); $nowM = date('m'); $nowD = date('d'); $nowYM = date('Y-m'); if ($baseDay < $shimeDay) { if ($nowD <= $baseDay) { $d = mktime(0, 0, 0, $nowM - 1, 1, $nowY); $this->_dataFrom['notice_target_ym'] = date('Y-m', $d); $this->_dataFrom['notice_text_m'] = date('m', $d); } else { $this->_dataFrom['notice_target_ym'] = $nowYM; $this->_dataFrom['notice_text_m'] = $nowM; } } else { if ($nowD <= $baseDay) { $d = mktime(0, 0, 0, $nowM - 1, 1, $nowY); $this->_dataFrom['notice_target_ym'] = $nowYM; $this->_dataFrom['notice_text_m'] = date('m', $d); } else { $d = mktime(0, 0, 0, $nowM + 1, 1, $nowY); $this->_dataFrom['notice_target_ym'] = date('Y-m', $d); $this->_dataFrom['notice_text_m'] = $nowM; } } // テンプレートに渡す $this->_dataFrom['list'] =& $data; }
/** * 実行 */ protected function perform() { // 案件ID $ankenId = $this->_request['aid']; // メディア企業ID $mediaCompanyId = $this->_request['media_company_id']; // モデル $m =& $this->_model; //------------------------- // メディア企業絞り込み処理 //------------------------- $mediaCompanyId = $this->_request['media_company_id']; $mediaCompany =& $m->getMediaCompanyData($mediaCompanyId); $this->_dataFrom['media_company'] =& $mediaCompany; $this->_dataFrom['like_media_company'] = true; // 基本情報 $anken =& $m->getAnkenData($ankenId); $this->appendDataFrom($anken); // 締め日 $shime = $anken['shime_date']; // キャンペーン期間 $from = $anken['campaign_from']; $to = $anken['campaign_to']; // 空の期間配列を作成 $blank = DateManager::getArrayShimeSpan($ankenId, $from, $to, $shime); // 集計 $like = array(); $like['media_company_id'] = $mediaCompanyId; $data =& $m->Result_ClientReportResult_counting($anken, $blank, $like); // テンプレートに渡す $this->_dataFrom['list'] =& $data; //--------------------------------------------- // UPLOAD用のフォームのカスタム処理 //--------------------------------------------- $path = $m->Result_ClientReportResult_getUploadFormTmplPath($ankenId); $this->_dataFrom["upform_path"] = $path; }
/** * 実行 */ protected function perform() { // 案件ID $ankenId = $this->_request['aid']; // メディアID $mediaId = $this->_request['mid']; // モデル $m =& $this->_model; // 基本情報 $anken =& $m->getAnkenAndMediaData($ankenId, $mediaId); $this->appendDataFrom($anken); // キャンペーンコード $code = $anken['campaign_code']; // 提携メディア情報 $teikei = $m->Result_MediaReportResult_getTeikeiMediaData($code, $mediaId, $this->_loginMediaCompanyId); // ダウンロードフラグ if ($this->_loginClientId == null) { $this->_dataFrom['download_flag'] = $teikei['download_flag']; } // キャンペーン期間 $from = $anken['campaign_from']; $to = $anken['campaign_to']; // 締め日 $shime = $anken['shime_date']; // 空データを作成 $blank = DateManager::getArrayShimeSpan($ankenId, $from, $to, $shime); // 集計 $data =& $m->Result_MediaReportResult_counting($anken, $teikei, $blank); // テンプレートに渡す $this->_dataFrom['list'] =& $data; }