月初処理バッチ / 未入金データ処理


{success} 本ジョブ実行時にクローズされていない請求データ(organization_payments.closed = 0)に対してクローズ処理と、当月費用支払い用の請求データの新規作成を行います。


概要

毎月1日の0時、監理団体ステータス更新ジョブUpdateOrganizationStatusの処理が終了した後に、本ジョブ(未入金の請求データ処理ジョブ)を実行します。

本ジョブ実行時にクローズされていない請求データ(organization_payments.closed = 0)に対してクローズ処理と、当月費用支払い用の請求データの新規作成を行います。

請求データをクローズするのは「先月末23時に決済できなかった請求データ」と「先月のアカウント停止復活する当月費用支払い用の未決済分の請求データ」です。

「先月末23時に決済できなかった請求データ」をクローズする際、そのレコードの値を流用して当月費用支払い用の請求データの新規作成を行います。


条件

①先月末23時に決済できなかった請求データの処理

organization_paymentsテーブル

項目 条件
payment_year 今年
payment_month 今月
payment_type 1 : 毎月
status 1 : 未入金
closed false
SELECT *
  FROM organization_payments
 WHERE payment_year = {today()->year}    -- 請求年:今年
   AND payment_month = {today()->month}  -- 請求年:今月
   AND status = 1                        -- 請求状態:未入金
   AND closed = 0                        -- 請求クローズフラグ:false
   AND deleted_at IS NULL



②先月のアカウント停止復活する当月費用支払い用の未決済分の請求データの処理

organization_paymentsテーブル

項目 条件
payment_year 先月の年
payment_month 先月
payment_type 10 : アカウント停止
status 1 : 未入金
closed false
SELECT *
  FROM organization_payments
 WHERE payment_year = {today()->firstOfMonth()->subMonth()->year}   -- 請求年:先月の年
   AND payment_month = {today()->firstOfMonth()->subMonth()->month} -- 請求年:先月
   AND status = 1                                                   -- 請求状態:未入金
   AND closed = 0                                                   -- 請求データクローズフラグ:false
   AND deleted_at IS NULL

更新内容

①先月末23時に決済できなかった請求データの処理

organization_paymentsテーブルの更新分

{primary} 先月末23時に決済できなかった請求データの請求データクローズフラグを立てます。

物理名 論理名 更新値 備考
closed 請求データクローズフラグ 1 フラグを立てます


organization_paymentsテーブルの当月費用支払い用請求データ新規作成

{primary} 先月末23時に決済できなかった請求データを元ネタとして、当月費用支払い用請求データを新規作成します。

物理名 論理名 更新値 備考
organization_id 監理団体ID 元ネタの請求データの値コピー
organization_payment_setting_id 監理団体 支払設定ID 元ネタの請求データの値コピー
payment_year 支払年 today()->year 当年
payment_month 支払月 today()->month 当月
payment_type 請求種類 10 : アカウント停止
status 請求状態 1 : 未請求
closed 請求データクローズフラグ false
billing_period_from 請求対象期間 開始 元ネタの請求データの値コピー
billing_period_until 請求対象期間 終了 元ネタの請求データの値コピー
payment_method 支払方法 元ネタの請求データの値コピー
payment_timing 支払時期 元ネタの請求データの値コピー
plan プラン人数 元ネタの請求データの値コピー
basic_charge_unit_price 基本料金単価 元ネタの請求データの値コピー
pay_per_use_price 従量課金単価 元ネタの請求データの値コピー
credit_card_number カード番号 元ネタの請求データの値コピー
billing_confirmed_at 請求確定日時 now() 現在日時
subtotal_amount 請求 小計 元ネタの請求データの値コピー
tax 請求 消費税 元ネタの請求データの値コピー
total_amount 請求 合計 元ネタの請求データの値コピー
is_annual_payment この請求データで基本料金年払いをするか? 元ネタの請求データの値コピー
payment_details 請求明細 元ネタの請求データの値コピー
total_amount_init 請求 合計 初期値 元ネタの請求データの値コピー



②先月のアカウント停止復活する当月費用支払い用の未決済分の請求データの処理

organization_paymentsテーブルの更新分

{primary} 先月のアカウント停止復活する当月費用支払い用の未決済分の請求データの請求データクローズフラグを立てます。

物理名 論理名 更新値 備考
closed 請求データクローズフラグ 1 フラグを立てます

対象クラスファイル

App\Console\Kernelの設定値

$schedule->command('monthlybatch:outsetProcess')->monthly();

月初処理バッチ

監理団体のステータスを更新するジョブApp\Jobs\UpdateOrganizationStatusを実行します。

App\Console\Commands\MonthlyOutsetProcessBatch

未入金の請求データ処理ジョブ

条件に該当する請求データorganization_paymentsレコードの請求金額関連のカラムを更新します。


App\Jobs\ProcessUnpaidData