Exemplo n.º 1
0
 /**
  * 実行
  */
 protected function perform()
 {
     // DB接続
     $db =& $this->_core->getDB();
     // モデル
     $m =& $this->_model;
     //-----------------------------
     // 検索が押された処理
     //-----------------------------
     if (isset($this->_request['search']) == true) {
         // 対象月の入力値を取得
         $input = $this->_like['target_month'];
         $input = strtotime($input);
         // 対象年と月を取得
         $targetYear = date('Y', $input);
         $targetMonth = date('m', $input);
         // YYYYMM文字列を作成
         $targetYm = date('Ym', $input);
         // 案件リストを取得
         $ankenList =& $m->Result_AdminReportSalesAnken_getAnkenList();
         // 結果変数
         $result = array();
         //------------------------------------
         // 案件のリストを取得し、ループで処理
         //------------------------------------
         foreach ($ankenList as $anken) {
             $row = array();
             //------------------------------
             // 案件情報を設定
             //------------------------------
             $row["anken"] = $anken;
             // 案件ID
             $ankenId = $anken['anken_id'];
             // キャンペーンコード
             $code = $anken['campaign_code'];
             //------------------------------
             // 検索条件を作成
             //------------------------------
             // 締め日から対象範囲を取得
             $hani =& $m->Result_AdminReportSalesAnken_getFromTo($anken, $targetYear, $targetMonth);
             $like['from'] = $hani['from'];
             $like['to'] = $hani['to'];
             // 承認日付を基準とします
             $like['date_target'] = 2;
             //-----------------------
             // 期間内に成果があり場合、売上原価取得
             //-----------------------
             if (empty($anken['accept_date_max']) == false && empty($anken['accept_date_min']) == false && $like['from'] <= $anken['accept_date_max'] && $anken['accept_date_min'] <= $like['to']) {
                 // 売上集計クラス
                 $summary =& ListSummaryManager::createForClient($ankenId, $db, $code, $like, $anken['price_type_cd']);
                 $tankaList =& $summary->getAcceptCountWithPrice();
                 // 卸値取得
                 $oroshiList =& $summary->getAcceptCountWithOroshi();
                 // 売上データがある場合に表示
                 if (empty($tankaList) == false) {
                     // 単価ごとに1レコードを処理
                     foreach ($tankaList as $tanka) {
                         // キャプション(承認・入金)
                         $subTotal['caption'] = $tanka['add_caption_2'];
                         // 単価
                         $price = $tanka['sales_price'];
                         $subTotal['sales_price'] = $price;
                         // 件数
                         $count = $tanka['accept'];
                         $subTotal['accept'] = $count;
                         // 単価小計
                         $sum = $price * $count;
                         $subTotal['sub_total'] = $sum;
                         // 単価
                         $row['tanka_list'][] = $subTotal;
                         // 単価合計
                         $row["sales"]["sales"] += $sum;
                         $sum = $tanka['sum_oroshi'];
                         $row["cost"]["cost"] += $sum;
                     }
                 }
                 // 卸値データがある場合に表示
                 if (empty($oroshiList) == false) {
                     // 卸値ごとに1レコードを処理
                     foreach ($oroshiList as $oroshi) {
                         // キャプション(承認・入金)
                         $subTotal['caption'] = $oroshi['add_caption_2'];
                         // 卸値
                         $price = $oroshi['oroshi_price'];
                         $subTotal['oroshi_price'] = $price;
                         // 件数
                         $count = $oroshi['accept'];
                         $subTotal['accept'] = $count;
                         // 卸値小計
                         $sum = $price * $count;
                         $subTotal['sub_total'] = $sum;
                         // 卸値
                         $row['oroshi_list'][] = $subTotal;
                     }
                 }
             }
             //-----------------------
             // 結果に追加
             //-----------------------
             $deviceCd = $anken['device_cd'];
             $result[$deviceCd][] = $row;
         }
         $report =& $result;
         //---------------------------------
         // 事前登録を取得しデフォルト値を設定します。
         //---------------------------------
         $m->Result_AdminReportSalesAnken_addBeforeValue($report, $targetYm);
         //---------------------------------
         // 売上原価と事前登録ともない案件は削除
         //---------------------------------
         $m->Result_AdminReportSalesAnken_deleteEmptyAnken($report);
         //---------------------------------
         // 請求先の情報を付与(事前送付、必着日)
         //---------------------------------
         $m->Result_AdminReportSalesAnken_addBillingInfoValue($report, $targetYear, $targetMonth);
         //---------------------------------
         // 履歴を取得しデフォルト値を設定します。
         //---------------------------------
         $m->Result_AdminReportSalesAnken_addHistoryValue($report, $targetYm);
         //---------------------------------
         // 入力テキストボックス名称を付加します。
         //---------------------------------
         $m->Result_AdminReportSalesAnken_addInputBoxName($report);
         //---------------------------------
         // 合計を取得
         //---------------------------------
         $total =& $m->Result_AdminReportSalesAnken_makeTotal($report);
         $report["total"] =& $total;
         //---------------------------------
         // セッションに保存
         //---------------------------------
         $hash = sha1(rand());
         $name = "old_admin_report_sales_anken_" . $hash;
         $this->_core->setSession($name, $report);
         //---------------------------------
         // テンプレート変数追加
         //---------------------------------
         $this->_dataFrom['show'] = true;
         $this->_dataFrom['group_pc']['list'] =& $report[1];
         $this->_dataFrom['group_mobile']['list'] =& $report[2];
         $this->_dataFrom['group_sonota']['list'] =& $report[3];
         $this->_dataFrom['group_sonota_count'] = count($report[3]);
         $this->_dataFrom['total'] =& $report["total"];
         $this->_dataFrom['hash'] = $hash;
     }
     // 表示するための設定
     $this->_dataFrom['form_action'] = "admin_report_sales_anken_conf.php";
     $this->_dataFrom['step'] = "input";
     $this->_dataFrom['input_type'] = "input";
     $this->_dataFrom['path_core_table'] = ABS_TMPL . "result/admin_report_sales_anken_core_table.tpl";
 }
Exemplo n.º 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;
}
Exemplo n.º 3
0
 /**
  * アフィリエイト売上金額を取得します。
  * @param array $kikan 期間(From,To)
  * @param string $targetMonth 対象年月
  * @param array $anken 対象案件
  */
 public function &Result_AdminReportSalesSalesEdit_getAffiliateSales(&$kikan, &$anken)
 {
     // DB接続
     $db =& $this->_core->getDB();
     $kikanTo = $kikan['To'];
     $toYear = date('Y', $kikanTo);
     $toMonth = date('m', $kikanTo);
     $result = array();
     // 検索範囲を取得
     $hani =& $this->Result_AdminReportSalesSalesEdit_getFromTo($anken, $toYear, $toMonth);
     $from = $hani['from'];
     $to = $hani['to'];
     // 案件ID
     $ankenId = $anken['anken_id'];
     // キャンペーンコード
     $code = $anken['campaign_code'];
     // 条件
     $like['from'] = $from;
     $like['to'] = $to;
     // 承認日付を基準とします
     $like['date_target'] = 2;
     // 単価タイプ
     $priceTypeCd = $anken['price_type_cd'];
     // 集計クラス
     $summary =& ListSummaryManager::createForClient($ankenId, $db, $code, $like, $priceTypeCd);
     $data =& $summary->getAcceptCountWithPrice();
     // 複数単価の場合は集計する
     $count = count($data);
     $i = 1;
     foreach ($data as $row) {
         $r = array();
         // アフィリエイト成果の売上原価種別IDは1
         $r['sales_genka_type_id'] = "1";
         // 表示順
         $r['order'] = $i;
         $r['price'] = intval($row['sales_price']);
         $r['accept'] = intval($row['accept']);
         // 報酬金額
         $r['cost'] = $r['price'] * $r['accept'];
         // 売上金額0円の場合は表示しない
         if ($r['cost'] == 0) {
             continue;
         }
         // 定率成果個数
         $r['rate_accept'] = $row['rate_accept'];
         // 結果配列に追加
         $result[] = $r;
         $i++;
     }
     return $result;
 }