{success} アカウント停止の監理団体の当月費用支払い用請求データの請求料金の日割り計算を行います。
毎日0時にアカウント停止の監理団体の当月費用支払い用請求データの請求料金の日割り計算を行います。
毎月1日のみ、この日割り計算バッチは実行しません。※1日は日割りではなく満額請求になるため日割り計算の必要がありません。
日割り計算対象の請求データorganization_paymentsの対象レコード抽出条件は下記になります。
毎月1日は当月費用支払い額満額になるので、日次バッチは実行しません。
| 物理名 | 論理名 | 条件値 | 備考 |
|---|---|---|---|
| payment_year | 支払年 | 今年 | |
| payment_month | 支払月 | 今月 | |
| payment_type | 支払方法 | 10 : アカウント停止 | |
| status | 請求状態 | 1 : 未入金 | |
| closed | 請求データクローズフラグ | 0 | |
| deleted_at | 削除日時 | null |
SELECT *
FROM organization_payments
WHERE payment_year = {today()->year} -- 当年月のY
AND payment_month = {today()->month} -- 当年月のn
AND payment_type = 10 -- 請求種類が「10:アカウント停止」
AND status = 1 -- 1:未入金
AND closed = 0 -- 請求クローズフラグがfalse
AND deleted_at is null
毎月1日にこの日次バッチを使用しないようにする制御はApp\Console\Commands\DailyBatchクラスのhandle()メソッド内で下記のように対応しております。
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
/* 月初は日次バッチの処理は行いません。 */
if (today()->day == 1) {
return;
}
// 日割り計算ジョブ
CalcDailyRate::dispatch();
}
| 物理名 | 論理名 | 更新値 | 備考 |
|---|---|---|---|
| subtotal_amount | 請求 小計 | 基本料金単価 x (残日数 / 今月の日数)を小数点以下切り捨て |
税抜金額を計算して取得します。 |
| tax | 請求 消費税 | 税抜金額 x 0.1を小数点以下切り捨て |
税抜金額より消費税10%で計算します。 |
| total_amount | 請求 合計 | 小計 + 消費税 |
小計と消費税の合計値。 |
| is_annual_payment | この請求データで基本料金年払いをするか? | false | 年払いの仕様があった時の名残。現在、当月費用発生するのは月払いのみなのでfalse固定。 |
| payment_details | 請求明細 | (※)jsonなので、ここに書くと分かりにくいので表枠外に記述しています。 | 請求明細の値をjsonで登録します。 |
| billing_period_from | 請求対象期間 開始 | 今月1日の年月日 | |
| billing_period_until | 請求対象期間 終了 | 今月の月末の年月日 | |
| total_amount_init | 請求 合計 初期値 | - | App\Models\Eloquents\OrganizationPaymentクラスのsetPaymentAmountProperties()メソッドにはtotal_amount_initの値セットする記述ありますが、日割り計算のときはここのif文配下は通りません。 |
(※)請求明細payment_detailsに登録する明細の内容
[
{
"amount" : 9800, // 金額
"quantity" : 1, // 数量
"item_name" : "基本料金(月払い)", // 品目
"unit_price" : 9800 // 単価
},
{
"amount" : 2000, // 金額
"quantity" : 200, // 数量
"item_name" : "従量課金額", // 品目
"unit_price" : 10 // 単価
}
]
App\Console\Kernelの設定値$schedule->command('dailybatch:daily')->daily();
日割り計算ジョブApp\Jobs\CalcDailyRateを実行します。
App\Console\Commands\DailyBatch
条件に該当する請求データorganization_paymentsレコードの請求金額関連のカラムを更新します。
App\Jobs\CalcDailyRate