diff --git a/app/Console/Commands/SummaryUse.php b/app/Console/Commands/SummaryUse.php index 658f934..43b18f2 100644 --- a/app/Console/Commands/SummaryUse.php +++ b/app/Console/Commands/SummaryUse.php @@ -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; } } diff --git a/app/Models/UseByKeySummary.php b/app/Models/UseByKeySummary.php index 94031e0..020696a 100644 --- a/app/Models/UseByKeySummary.php +++ b/app/Models/UseByKeySummary.php @@ -12,6 +12,7 @@ class UseByKeySummary extends AppModel const COL_NAME_SUMMARY_KEY1 = "summary_key1"; const COL_NAME_SUMMARY_KEY2 = "summary_key2"; const COL_NAME_RECEIPT_ORDER_COUNT = 'receipt_order_count'; + const COL_NAME_MAIL_ORDER_COUNT = 'mail_order_count'; const COL_NAME_SMS_SEND_COUNT = 'sms_send_count'; const COL_NAME_SMS_SEND_COST = 'sms_send_cost'; const COL_NAME_IS_FIXED = 'is_fixed'; diff --git a/app/Repositories/Custom/HelloTechno/UseSummaryRepository.php b/app/Repositories/Custom/HelloTechno/UseSummaryRepository.php index 7fe81ea..a053a8b 100644 --- a/app/Repositories/Custom/HelloTechno/UseSummaryRepository.php +++ b/app/Repositories/Custom/HelloTechno/UseSummaryRepository.php @@ -96,6 +96,7 @@ class UseSummaryRepository extends BaseRepository $this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_SUMMARY_KEY1]), $this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_SUMMARY_KEY2]), $this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_RECEIPT_ORDER_COUNT]), + $this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_MAIL_ORDER_COUNT]), $this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_SMS_SEND_COUNT]), $this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_IS_FIXED]), $this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_UPDATED_AT]), @@ -116,6 +117,7 @@ class UseSummaryRepository extends BaseRepository $this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_SUMMARY_KEY2]), $this->makeColumnNameForSelect([$name, HtCustomParkingName::COL_NAME_PARKING_NAME]), $this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_RECEIPT_ORDER_COUNT]), + $this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_MAIL_ORDER_COUNT]), $this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_SMS_SEND_COUNT]), ]; return $columns; diff --git a/database/migrations/2023_06_07_144200_create_use_summaries_table.php b/database/migrations/2023_06_07_144200_create_use_summaries_table.php index 2663bd4..4608486 100644 --- a/database/migrations/2023_06_07_144200_create_use_summaries_table.php +++ b/database/migrations/2023_06_07_144200_create_use_summaries_table.php @@ -36,6 +36,7 @@ return new class extends Migration $table->string("summary_yyyymm")->comment("集計年月"); $table->unsignedInteger("receipt_order_count")->default(0)->comment("領収証発行依頼件数"); + $table->unsignedInteger("mail_order_count")->default(0)->comment("郵送依頼件数"); $table->unsignedInteger("sms_send_count")->default(0)->comment("SMS送信件数"); $table->unsignedInteger("sms_send_cost")->default(0)->comment("SMS送信コスト"); $table->boolean('is_fixed')->default(false)->comment('確定済み'); diff --git a/database/migrations/2023_06_08_092700_create_use_by_key_summaries_table.php b/database/migrations/2023_06_08_092700_create_use_by_key_summaries_table.php index f4043d3..d794c2f 100644 --- a/database/migrations/2023_06_08_092700_create_use_by_key_summaries_table.php +++ b/database/migrations/2023_06_08_092700_create_use_by_key_summaries_table.php @@ -39,6 +39,7 @@ return new class extends Migration $table->string("summary_key2")->comment("集計キー2")->nullable(); $table->unsignedInteger("receipt_order_count")->default(0)->comment("領収証発行依頼件数"); + $table->unsignedInteger("mail_order_count")->default(0)->comment("郵送依頼件数"); $table->unsignedInteger("sms_send_count")->default(0)->comment("SMS送信件数"); $table->unsignedInteger("sms_send_cost")->default(0)->comment("SMS送信コスト"); $table->boolean('is_fixed')->default(false)->comment('確定済み');