Esempio n. 1
0
    /**
     * 対象売上リスト取得します。
     * @param string $billing_segment_id 請求先セグメント
     * @param string $sales_genka_type 原価種別
     * @param string $media_company_id メディア企業ID
     * @param string $target_month 月度
     */
    public function &Result_AdminReportSalesSalesSalesReport_getSales($like = null)
    {
        $db =& $this->_core->getDB();
        // 条件を作成
        $where = " s.status = ? ";
        $statusEnum = new SalesGenkaReportStatusEnum();
        $param = array($statusEnum->getKey("確定"));
        // 請求先セグメントID
        if (isset($like["billing_segment_id"]) == true && -1 < intval($like["billing_segment_id"])) {
            $billingSegmentId = $like['billing_segment_id'];
            $where .= " and b.billing_segment_id=? ";
            $param[] = $billingSegmentId;
        }
        // 案件ID
        if (empty($like['anken_id']) == false) {
            $ankenId = $like['anken_id'];
            $where .= " and s.anken_id=? ";
            $param[] = $ankenId;
        }
        // クライアントID
        if (empty($like['client_id']) == false) {
            $clientId = $like['client_id'];
            $where .= " and s.client_id=? ";
            $param[] = $clientId;
        }
        // 担当者名称
        if (empty($like['tanto_name']) == false) {
            $name = mb_strtolower($like['tanto_name']);
            $where .= " and LOWER(s.tanto_consulting_name) like ? ";
            $param[] = "%{$name}%";
        }
        // 月度
        if (empty($like['str_target_month']) == false) {
            $where .= ' and (s.target_month=?) ';
            $param[] = $like['str_target_month'];
        }
        // 入金種別
        if (0 < count($like['payment_type'])) {
            $type = $like['payment_type'];
            $where .= ' and (d.payment_type_id in (' . implode(",", $type) . ')) ';
        }
        // 売上原価種別
        if (empty($like['sales_genka_type_id']) == false) {
            $salesGenkaTypeId = $like['sales_genka_type_id'];
            $where .= " and d.sales_genka_type_id=? ";
            $param[] = $salesGenkaTypeId;
        }
        // SQL
        $sql = <<<SQL
select
s.client_id,
s.client_name,
s.anken_id,
s.anken_name,
s.billing_company_id,
s.target_month,
s.tanto_consulting_name,
s.status,
d.sales_genka_type_id,
d.title,
d.sales_price,
d.sales_count,
d.total_sales,
d.payment_scheduled_date,
d.payment_type_id,
d.memo
from ald_anken_sales as s
inner join ald_anken_sales_detail as d
on s.anken_sales_id=d.anken_sales_id
inner join ald_billing_company b
on s.billing_company_id = b.billing_company_id
where
{$where}
order by s.anken_id, d.anken_sales_detail_id
SQL;
        return $db->query($sql, $param);
    }