예제 #1
0
 /**
  * 実行
  */
 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;
 }
예제 #2
0
/**
 * 対象案件の売上と支払を、締め日区切りで集計します
 */
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;
}
예제 #3
0
 /**
  * 実行
  */
 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());
 }
예제 #4
0
    /**
     * 成果件数を取得します
     * @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;
    }
예제 #5
0
 /**
  * 実行
  */
 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;
 }
예제 #6
0
 /**
  * 実行
  */
 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;
 }
예제 #7
0
 /**
  * 実行
  */
 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;
 }