月次請求データ作成バッチ


{success} 請求が発生する監理団体の、翌月KIZUNA利用料の請求データを一括で作成するバッチです。


概要

毎月21日の0時に請求が発生する監理団体の、翌月KIZUNA利用料の請求データを一括で作成するバッチです。

対象の監理団体毎に、請求データorganization_paymentsを新規作成し、翌月のKIZUNA利用料金が確定した旨をオーナーアカウントへメール送信します。


条件

{primary} 翌月KIZUNA利用料の請求データを作成する監理団体の条件を記載しています。

organization_payment_paymentsテーブル

項目 条件
basic_charge_unit_price 基本料金単価もしくは従量課金単価が0円より大きい金額が設定されているか?
pay_per_use_price 基本料金単価もしくは従量課金単価が0円より大きい金額が設定されているか?

organizationsテーブル

項目 条件
status ステータスが「利用中」か「アカウント停止」
SELECT *
  FROM organization_payment_settings ops
  LEFT JOIN organizations o
    ON ops.organization_id = o.id
 WHERE (                                  -- [organization_payment_settings] 請求が発生するか? ※基本料金単価もしくは従量課金単価が0円より大きい金額が設定されているか?
        ops.basic_charge_unit_price > 0   -- [organization_payment_settings] 基本料金単価
     OR ops.pay_per_use_price > 0         -- [organization_payment_settings] 従量課金単価
   )
   AND ops.deleted_at IS NULL
   AND o.status IN (5, 10)                -- [organizations] 監理団体のステータスが「5:利用中」か「10:アカウント停止」
   AND o.deleted_at IS NULL

処理内容

  • 翌月のKIZUNA利用料の請求データorganization_paymentsレコードを作成
  • 翌月のKIZUNA利用料金が確定した旨、オーナーアカウントのメールアドレスへ送信

登録内容

{primary} 来月のKIZUNA利用料の請求データを該当件数分、新規作成します。

organization_paymentsテーブル

物理名 論理名 登録値 備考
organization_id 監理団体ID 支払設定データの値コピー
organization_payment_setting_id 監理団体 支払設定ID 支払設定データの値コピー
payment_method 支払方法 支払設定データの値コピー
payment_timing 支払時期 支払設定データの値コピー
payment_type 請求種類 1 : 毎月
plan プラン人数 支払設定データの値コピー
basic_charge_unit_price 基本料金単価 支払設定データの値コピー
pay_per_use_price 従量課金単価 支払設定データの値コピー
credit_card_number カード番号 支払設定データの値コピー
payment_year 支払年 today()->firstOfMonth()->addMonth()->year 次月の年
payment_month 支払月 today()->firstOfMonth()->addMonth()->month 次月
billing_period_from 請求対象期間 開始 today()->firstOfMonth()->addMonth()
billing_period_until 請求対象期間 終了 today()->firstOfMonth()->addMonth()->lastOfMonth()
billing_confirmed_at 請求確定日時 now() 現在日時
status 請求状態 1 : 未請求
closed 請求データクローズフラグ false
subtotal_amount 請求 小計 basic_charge_unit_price + (pay_per_use_price * plan) 支払設定データの基本料金+(従量課金単価 x プラン人数)
tax 請求 消費税 subtotal_amount * 0.1 小数点以下切り捨て 請求 小計 x 0.1 の小数点以下切り捨て
total_amount 請求 合計 subtotal_amount + tax 請求 小計 + 請求 消費税
is_annual_payment この請求データで基本料金年払いをするか? 支払設定データの値
payment_details 請求明細 (※)jsonなので、ここに書くと分かりにくいので表枠外に記述しています。 請求明細の値をjsonで登録します。
total_amount_init 請求 合計 初期値 total_amountと同じ値

(※)請求明細payment_detailsに登録する明細の内容

[
    {
        "amount"     : 9800,                // 金額
        "quantity"   : 1,                   // 数量
        "item_name"  : "基本料金(月払い)",     // 品目
        "unit_price" : 9800                 // 単価
    },
    {
        "amount"     : 2000,            // 金額
        "quantity"   : 200,             // 数量
        "item_name"  : "従量課金額",      // 品目
        "unit_price" : 10               // 単価
    }
]

メール本文

  • 翌月のKIZUNA利用料金が確定した旨、オーナーアカウントのメールアドレスへ送信
<div style="width:100%; background:#f13757; padding:40px 20px;">
    <div style="width:80%;margin:0 auto; background:#fff; padding: 20px; border-radius:8px;">
        <div><img src="{{ $logo_src }}" alt="" style="width: 200px;"></div>
        <p style="font-weight:bold; font-size:2rem;">翌月ご利用分の利用料金が確定しました。</p>
        <p><br></p>
        <p>KIZUNA管理画面の請求情報から内容を確認してください。</p>
        <p>末日に自動で決済が行われます。</p>
        <p>※お支払いが確認できない場合、決済ができなかった場合にはアカウントが停止されますのでご注意ください。</p>
        <p><br></p>
        <p>アカウントが停止となった場合には以下の手順よりご操作ください。</p>
        <p>1. (KIZUNAにログイン後)右上に表示されている組合名を選択</p>
        <p>2. 当月費用支払いを選択</p>
        <p>3. 決済するを押していただき決済を行う</p>
        <p><br></p>
        <p>なお、上記の手順を踏んでもアカウントが利用できない場合には、</p>
        <p>下記の可能性が考えられますので、ご登録のクレジットカード会社にお問い合わせください。</p>
        <p>・カード上限金額を超えてしまっている</p>
        <p>・カードの有効期限が過ぎてしまっている</p>
        <p>・その他の要因でカードが利用できない状態になってしまっている</p>
        <p><br></p>
        <p>新しくクレジットカードをご準備される場合には、</p>
        <p>(KIZUNAにログイン後)支払い設定画面にて、新しいカード情報をご登録の上、再度、上記の手順を行ってください。</p>
        <p><br></p>
        <p>以上の内容でも解決しない場合、または本メールに見覚えがなかったり、ご不明点があった際には、</p>
        <p>下記メールアドレス迄お問い合わせください。</p>
        <p><br></p>
        <p>{{ $contact_email }}</p>
    </div>
</div>

対象クラスファイル

App\Console\Kernelの設定値

$schedule->command('monthlybatch:createBillingData')->monthlyOn(21, '0:00');

月初処理バッチ

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

App\Console\Commands\MonthlyCreateBillingDateBatch

月次請求データ作成ジョブ

条件に該当する請求データorganization_paymentsレコードを新規作成します。

App\Jobs\CreateMonthlyBilling

KIZUNA利用料金の請求確定メール

KIZUNA利用料金の請求確定メールの設定を行います。

App\Notifications\CreateMonthlyBillingNotification