|
|
|
@@ -19,7 +19,7 @@ use LogicException; |
|
|
|
class SummaryUse extends BaseCommand |
|
|
|
{ |
|
|
|
|
|
|
|
const COMMAND = "summary:use {--contractId=} {--yyyymm=}"; |
|
|
|
const COMMAND = "summary:use {--contractId=} {--yyyymm=} {--current}"; |
|
|
|
|
|
|
|
/** |
|
|
|
* The name and signature of the console command. |
|
|
|
@@ -111,10 +111,18 @@ class SummaryUse extends BaseCommand |
|
|
|
|
|
|
|
// デフォルト判定 |
|
|
|
if ($yyyyMM === null) { |
|
|
|
// デフォルトは先月とする |
|
|
|
$this->targetDate = DateUtil::now()->addMonth(-1)->setDay(1)->setTime(0, 0); |
|
|
|
$this->targetYYYYMM = $this->targetDate->format('Ym'); |
|
|
|
return; |
|
|
|
|
|
|
|
if ($this->option('current')) { |
|
|
|
// Currentの場合は当月を対象とする |
|
|
|
$this->targetDate = DateUtil::now()->setDay(1)->setTime(0, 0); |
|
|
|
$this->targetYYYYMM = $this->targetDate->format('Ym'); |
|
|
|
return; |
|
|
|
} else { |
|
|
|
// デフォルトは先月とする |
|
|
|
$this->targetDate = DateUtil::now()->addMonth(-1)->setDay(1)->setTime(0, 0); |
|
|
|
$this->targetYYYYMM = $this->targetDate->format('Ym'); |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// フォーマットチェック |
|
|
|
@@ -146,6 +154,12 @@ class SummaryUse extends BaseCommand |
|
|
|
$model->is_fixed = true; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 初期設定 |
|
|
|
$model->receipt_order_count = 0; |
|
|
|
$model->mail_order_count = 0; |
|
|
|
$model->sms_send_count = 0; |
|
|
|
$model->sms_send_cost = 0; |
|
|
|
return $model; |
|
|
|
} |
|
|
|
|
|
|
|
@@ -175,8 +189,17 @@ class SummaryUse extends BaseCommand |
|
|
|
->where(ReceiptIssuingOrder::COL_NAME_ORDER_DATETIME, ">=", $from) |
|
|
|
->where(ReceiptIssuingOrder::COL_NAME_ORDER_DATETIME, "<", $to); |
|
|
|
|
|
|
|
$targetMailOrders = ReceiptIssuingOrder::getBuilder() |
|
|
|
->where(ReceiptIssuingOrder::COL_NAME_CONTRACT_ID, $model->contract_id) |
|
|
|
->whereNotNull(ReceiptIssuingOrder::COL_NAME_STATUS_ORDER_MAIL_DATETIME) |
|
|
|
->where(ReceiptIssuingOrder::COL_NAME_STATUS_ORDER_MAIL_DATETIME, ">=", $from) |
|
|
|
->where(ReceiptIssuingOrder::COL_NAME_STATUS_ORDER_MAIL_DATETIME, "<", $to); |
|
|
|
|
|
|
|
// 領収証発行依頼件数の取得 |
|
|
|
$receiptIssuingOrders = DB::table($targetOrders, 'target_orders') |
|
|
|
$receiptIssuingOrders = ReceiptIssuingOrder::getBuilder() |
|
|
|
->where(ReceiptIssuingOrder::COL_NAME_CONTRACT_ID, $model->contract_id) |
|
|
|
->where(ReceiptIssuingOrder::COL_NAME_ORDER_DATETIME, ">=", $from) |
|
|
|
->where(ReceiptIssuingOrder::COL_NAME_ORDER_DATETIME, "<", $to) |
|
|
|
->groupBy( |
|
|
|
ReceiptIssuingOrder::COL_NAME_CONTRACT_ID, |
|
|
|
ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY1, |
|
|
|
@@ -189,7 +212,6 @@ class SummaryUse extends BaseCommand |
|
|
|
DB::raw(sprintf("count(*) as count")), |
|
|
|
]) |
|
|
|
->get(); |
|
|
|
$model->receipt_order_count = 0; |
|
|
|
foreach ($receiptIssuingOrders as $ele) { |
|
|
|
|
|
|
|
$key1 = data_get($ele, ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY1); |
|
|
|
@@ -207,6 +229,41 @@ class SummaryUse extends BaseCommand |
|
|
|
$summaryByKeys->put($key, $summaryByKey); |
|
|
|
} |
|
|
|
|
|
|
|
// 郵送依頼件数の取得 |
|
|
|
$mailOrders = ReceiptIssuingOrder::getBuilder() |
|
|
|
->where(ReceiptIssuingOrder::COL_NAME_CONTRACT_ID, $model->contract_id) |
|
|
|
->whereNotNull(ReceiptIssuingOrder::COL_NAME_STATUS_ORDER_MAIL_DATETIME) |
|
|
|
->where(ReceiptIssuingOrder::COL_NAME_STATUS_ORDER_MAIL_DATETIME, ">=", $from) |
|
|
|
->where(ReceiptIssuingOrder::COL_NAME_STATUS_ORDER_MAIL_DATETIME, "<", $to) |
|
|
|
->groupBy( |
|
|
|
ReceiptIssuingOrder::COL_NAME_CONTRACT_ID, |
|
|
|
ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY1, |
|
|
|
ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY2, |
|
|
|
) |
|
|
|
->select([ |
|
|
|
ReceiptIssuingOrder::COL_NAME_CONTRACT_ID, |
|
|
|
ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY1, |
|
|
|
ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY2, |
|
|
|
DB::raw(sprintf("count(*) as count")), |
|
|
|
]) |
|
|
|
->get(); |
|
|
|
foreach ($mailOrders as $ele) { |
|
|
|
|
|
|
|
$key1 = data_get($ele, ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY1); |
|
|
|
$key2 = data_get($ele, ReceiptIssuingOrder::COL_NAME_SUMMARY_KEY2); |
|
|
|
$count = data_get($ele, 'count'); |
|
|
|
|
|
|
|
$model->mail_order_count += $count; |
|
|
|
|
|
|
|
$key = $makeKey($key1, $key2); |
|
|
|
|
|
|
|
$summaryByKey = $this->getUseByKeyModel($model, $key1, $key2); |
|
|
|
$summaryByKey->mail_order_count += $count; |
|
|
|
|
|
|
|
$summaryByKeys->put($key, $summaryByKey); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// SMS送信実績の取得 |
|
|
|
$SMSs = SMSSendOrder::getBuilder() |
|
|
|
->where(SMSSendOrder::COL_NAME_CONTRACT_ID, $model->contract_id) |
|
|
|
@@ -228,8 +285,6 @@ class SummaryUse extends BaseCommand |
|
|
|
]) |
|
|
|
->get(); |
|
|
|
|
|
|
|
$model->sms_send_count = 0; |
|
|
|
$model->sms_send_cost = 0; |
|
|
|
foreach ($SMSs as $ele) { |
|
|
|
$key1 = data_get($ele, SMSSendOrder::COL_NAME_SUMMARY_KEY1); |
|
|
|
$key2 = data_get($ele, SMSSendOrder::COL_NAME_SUMMARY_KEY2); |
|
|
|
@@ -275,9 +330,10 @@ class SummaryUse extends BaseCommand |
|
|
|
|
|
|
|
$this->outputInfo( |
|
|
|
sprintf( |
|
|
|
"集計完了:%s 領収証発行依頼:%d件 SMS送信件数:%d件 SMSコスト:%d円", |
|
|
|
"集計完了:%s 領収証発行依頼:%d件 郵送依頼:%d件 SMS送信件数:%d件 SMSコスト:%d円", |
|
|
|
$contract->name, |
|
|
|
$model->receipt_order_count, |
|
|
|
$model->mail_order_count, |
|
|
|
$model->sms_send_count, |
|
|
|
$model->sms_send_cost, |
|
|
|
) |
|
|
|
@@ -340,6 +396,12 @@ class SummaryUse extends BaseCommand |
|
|
|
$summary->is_fixed = true; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 初期設定 |
|
|
|
$summary->receipt_order_count = 0; |
|
|
|
$summary->mail_order_count = 0; |
|
|
|
$summary->sms_send_count = 0; |
|
|
|
$summary->sms_send_cost = 0; |
|
|
|
return $summary; |
|
|
|
} |
|
|
|
} |