STL 自動作成 — 33_wrk_bank
1. 基本情報
焦点質問: Action A実行時にどのようなSTLレコードが自動作成されるか?
| 項目 | 内容 |
|---|---|
| 関数名 | processInvoiceApprovals(STL作成はAction Aの一部) |
| ファイル | 403_subledger_engine.js |
| 入力 | 32_wrk_invoice(承認済INV) |
| 出力 | 33_wrk_bank(STLレコード) |
| メニュー | Action A(「承認済INV → 仕訳台帳」) |
2. 前提条件・依存関係
| 項目 | 内容 |
|---|---|
| 前提 | Action A(processInvoiceApprovals)が実行されること |
| SSOT | 32_wrk_invoice |
| 出力先 | 33_wrk_bank |
| 対象行 | 有効フラグ=TRUE のINVのみ処理対象 |
| 承認条件 | 請求ステータス="承認済" かつ 自動仕訳JNL_ID=空 |
| シート必須 | WRK_INVC, TRN_JOUR が存在すること。WRK_BANK が存在しない場合STL作成はスキップ |
| マスタ依存 | なし(STL作成自体は科目マスタを参照しない) |
3. 入力スキーマ(対象判定条件)
3.1 32_wrk_invoice から参照する列
| # | 列名 | 用途 | 備考 |
|---|---|---|---|
| 1 | 有効フラグ | 処理対象フィルタ | FALSE → スキップ |
| 2 | 請求ステータス | 承認状態チェック | "承認済" のみ対象 |
| 3 | 自動仕訳JNL_ID | 二重処理防止 | 空のみ対象 |
| 4 | 決済手段 | STL作成要否の判定 | 仕訳振替・資産計上は原則除外 |
| 5 | 摘要 | 資産計上例外判定 / 天引き計算 | "未収入金" 含む → STL作成 |
| 6 | 請求ID(INV) | STLの消込対象ID | そのまま転記 |
| 7 | 決済日_計画 | STLの決済日_計画 | そのまま転記 |
| 8 | 収支区分 | 入出金区分の変換元 | 支出→出金 / 収入→入金 |
| 9 | 取引先名 | STLの取引先名 | そのまま転記 |
| 10 | 組織名 | STLの組織名 | そのまま転記 |
| 11 | 税込金額_計画 | 決済金額の計算元 | 天引き計算 or 絶対値 |
| 12 | 親発注ID(ORD) | 天引きマップのキー | deductMapの参照に使用 |
| 13 | 発生日(P/L計上日) | STL_ID発番の日付基準 | Action A実行時のINV発生日 |
| 14 | 申請種別 | (参照のみ) | STLレコードには直接出力しない |
4. 処理ロジック(マトリクス)
4.1 STL作成要否の判定
| 項番 | 処理フェーズ | 入力(論理名) | 入力(物理名: タブ.列) | 処理詳細 / 変換ロジック | 出力(論理名) | 出力(物理名: タブ.列) | 例外処理 |
|---|---|---|---|---|---|---|---|
| J1.1 | 仕訳振替チェック | 決済手段 | 32_wrk_invoice.決済手段 | === "仕訳振替" → STL作成しない | -- | -- | 現金が動かないINV。即座に決済完了+残高0 |
| J1.2 | 資産計上チェック | 決済手段, 摘要 | 32_wrk_invoice.決済手段, 摘要 | === "資産計上" かつ 摘要に"未収入金"を含む → STL作成。決済口座="口座振込_福井銀行" に強制設定 | STLレコード | 33_wrk_bank | ※1 |
| J1.3 | 資産計上(STL不要) | 決済手段, 摘要 | 32_wrk_invoice.決済手段, 摘要 | === "資産計上" かつ 摘要に"未収入金"を含まない → STL作成しない | -- | -- | 即座に決済完了+残高0。頭金・未払金は返済INV経由でSTL作成 |
| J1.4 | 決済手段が空 | 決済手段 | 32_wrk_invoice.決済手段 | 空文字 → STL作成しない | -- | -- | -- |
| J1.5 | その他 | 決済手段 | 32_wrk_invoice.決済手段 | 仕訳振替・資産計上・空以外 → STL作成 | STLレコード | 33_wrk_bank | -- |
※1: コード上の判定は
payMethod === '資産計上' && memo.includes('未収入金')のみ。旧仕様書にあった頭金・未払金は現在のコードでは STL作成対象外(返済INV経由で処理)。
4.2 決済金額(税込金額_決済)の計算
| 項番 | 処理フェーズ | 入力(論理名) | 入力(物理名: タブ.列) | 処理詳細 / 変換ロジック | 出力(論理名) | 出力(物理名: タブ.列) | 例外処理 |
|---|---|---|---|---|---|---|---|
| C1.1 | deductMap構築 | 仕訳振替INV | 32_wrk_invoice 全行 | 決済手段="仕訳振替" かつ 有効フラグ=TRUE のINVを 親発注ID(ORD) + "|" + 摘要対象月 でキー集計。対象月は 【RPA:HC】YYYY-MM から7文字抽出 | deductMap | 変数: { key: totalAmt } | 摘要に【RPA:HC】がないINV → キーなし → 天引き対象外 |
| C1.2 | メインINV: 天引き計算 | 税込金額_計画, deductMap | 32_wrk_invoice.税込金額_計画 | 摘要に"月額給与・報酬"を含む かつ 親発注ID(ORD)あり → 決済金額 = 税込金額_計画 − deductMap[key] | 決済金額 | 33_wrk_bank.決済金額 | ※2 |
| C1.3 | サブINV: 絶対値 | 税込金額_計画 | 32_wrk_invoice.税込金額_計画 | メインINV以外 → 決済金額 = abs(税込金額_計画) | 決済金額 | 33_wrk_bank.決済金額 | -- |
計算例:
- EMP_0002 (角会計事務所): 仕訳振替合計=2,042 → 決済金額=22,000−2,042=19,958(差引支給額)
- EMP_0001 (代表取締役): 仕訳振替合計=95,795 → 決済金額=500,000−95,795=404,205(差引支給額)
- 法定福利費(76,375)はP/L科目のため差引対象外。会社負担分として別途STLが作成される
※2: 複数月のINVが同じORDに存在しても、摘要の対象月(
【RPA:HC】YYYY-MMから抽出)でキーを分離するため、月ごとに正確な天引き額が計算される
5. 出力サマリー
33_wrk_bank に追記されるSTLレコードのフィールド:
| # | 33_wrk_bank 列 | 値 | ソース |
|---|---|---|---|
| 1 | 有効フラグ | TRUE | 固定 |
| 2 | 決済ID(STL) | STL_{yyyyMMdd}_{NNNN} | 自動発番(§7参照) |
| 3 | 消込対象請求ID(INV) | INVの請求ID(INV) | INV転記 |
| 4 | 決済日_計画 | INVの決済日_計画 | INV転記 |
| 5 | 立替日 | 空 | 固定 |
| 6 | 決済日_実績 | 空 | ユーザーが後日入力 |
| 7 | 決済ステータス | "未処理" | 固定 |
| 8 | 入出金区分 | 支出→"出金" / 収入→"入金" | INVの収支区分から変換 |
| 9 | 決済口座 | INVの決済手段(資産計上例外時は"口座振込_福井銀行") | INV転記 or 強制設定 |
| 10 | 取引先名 | INVの取引先名 | INV転記 |
| 11 | 決済金額 | 計算結果(§4.2参照) | 計算 |
| 12 | 差額(手数料等) | 0 | 固定 |
| 13 | 差額処理科目 | 空 | 固定 |
| 14 | 組織名 | INVの組織名 | INV転記 |
| 15 | 摘要 | INVの摘要 | INV転記 |
| 16 | 消込手段 | 空 | 固定 |
| 17 | 自動仕訳JNL_ID | 空 | Action Bで書き込み |
6. 業務ルール
6.1 STL自動作成の目的
Action A(承認済INVの仕訳台帳転記)実行時に、現金の入出金が伴うINVについて、33_wrk_bank に決済予定レコード(STL)を自動作成する。ユーザーが手動で決済タブに入力する手間を省く。
6.2 天引き(差引支給額)の計算
給与・報酬の支払いでは、源泉所得税や社会保険料の従業員負担分が天引きされるため、実際の振込額(差引支給額)は請求総額より小さくなる。
- 差引支給額 = 月額給与・報酬の請求総額 − 天引き合計額
- 天引き対象: 同じ発注(ORD)・同じ対象月に属する「仕訳振替」INVの合計額
- 対象月の識別: 摘要に含まれる
【RPA:HC】YYYY-MMから年月を抽出
6.3 仕訳振替INVの扱い
仕訳振替は帳簿上の科目振替であり現金の移動を伴わないため、STLは作成しない。仕訳振替INVは即座に決済完了(未決済残高=0)となる。
6.4 資産計上INVの扱い
資産計上はB/S即時計上でありCF除外のため、原則STLは作成しない。ただし未収入金(将来の入金が見込まれる債権)のみ例外としてSTLを作成し、決済口座は 口座振込_福井銀行 に強制設定する。頭金・未払金は返済INV(口座振替等)経由で別途STLが作成される。
7. 冪等性(二重起票防止)
7.1 INV側の二重処理防止
Action Aの処理対象は 請求ステータス="承認済" かつ 自動仕訳JNL_ID=空 のINVのみ。Action A実行時にJNL_IDが書き込まれるため、同月2回実行しても既処理INVはスキップされる。
7.2 STL_ID 発番
generateStlId_(bankSheet, dateStr, offset)
形式: "STL_{yyyyMMdd}_{NNNN}"
dateStr: INVの発生日(P/L計上日)
既存STL_IDの最大連番+1 + offset から発番
キャッシュ: generateStlId_._cache[dateStr] に最大連番を保持(同一実行内で再スキャン不要)
実行開始時にキャッシュをリセット
8. エラーハンドリング
| # | エラー条件 | 処理 | ユーザー通知 |
|---|---|---|---|
| E1 | WRK_INVC または TRN_JOUR シートが見つからない | 処理中断 | "🚨 WRK_INVC または TRN_JOUR シートが見つかりません。" ダイアログ |
| E2 | WRK_BANK シートが見つからない | STL作成をスキップ(仕訳転記は続行) | 通知なし(bankSheet=null のまま処理) |
| E3 | 承認済かつ未転記のINVが0件 | 処理終了 | "✅ 承認済かつ未転記のINVはありませんでした。" ダイアログ |
| E4 | INVの発生日(P/L計上日)が空 | 当該INVをスキップ | 通知なし |
| E5 | 実行時例外(予期せぬエラー) | try-catch で捕捉、処理中断 | "🚨 processInvoiceApprovals でエラーが発生しました" + エラーメッセージ |
| E6 | bankSheet の行数不足 | insertRowsAfter で自動拡張 | 通知なし(自動対応) |
9. テスト仕様
9.1 EMP_0002 (角会計事務所, 顧問, 月額22,000)
| テストID | INV | 期待結果 |
|---|---|---|
| T1 | 支払手数料 22,000 (口座振込, AP) | STL作成: 決済金額=19,958(天引き後) |
| T2 | 預り金 -42 (口座振込, 財務仕訳) | STL作成: 決済金額=42(絶対値) |
| T3 | 雑収入 2,000 (仕訳振替) | STL作成しない |
| T4 | 預り金 +42 (仕訳振替) | STL作成しない |
9.2 EMP_0001 (代表取締役, 役員, 月額500,000)
| テストID | INV | 期待結果 |
|---|---|---|
| T5 | 役員報酬 500,000 (口座振込, AP) | STL作成: 決済金額=404,205(天引き後) |
| T6 | 預り金 -21,220 (口座振込, 財務仕訳) | STL作成: 決済金額=21,220(絶対値) |
| T7 | 預り金 -74,575 (口座振替, AP) | STL作成: 決済金額=74,575(絶対値) |
| T8 | 法定福利費 76,375 (口座振替, AP) | STL作成: 決済金額=76,375(絶対値) |
| T9 | 預り金 +21,220 (仕訳振替) | STL作成しない |
9.3 共通
| テストID | テストケース | 前提条件 | 期待結果 |
|---|---|---|---|
| T10 | 同月2回実行 | 1回目のAction Aで全INV処理済 | 2回目はINVが承認済+JNL_ID済のためスキップ |
| T11 | 有効フラグ=FALSE | INVの有効フラグがFALSE | 処理されない |
| T12 | 発生日が空 | INVの発生日(P/L計上日)が未入力 | 当該INVスキップ(エラーなし) |
| T13 | WRK_BANKシートなし | bankSheetが存在しない | 仕訳転記は正常完了、STL作成のみスキップ |
| T14 | 決済手段が空文字 | INVの決済手段が空 | STL作成しない |
付録A: ユーザーの後続作業
33_wrk_bank に自動作成されたSTLに対して:
- 決済日_実績を入力 -- 実際の支払日・入金日
- 決済ステータスを
"消込済"に変更 - Action B を実行 -- 仕訳台帳転記 + B/S解消 + CF計上
→ 詳細: spec_engine(Action B処理仕様)