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)が実行されること
SSOT32_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.1deductMap構築仕訳振替INV32_wrk_invoice 全行決済手段="仕訳振替" かつ 有効フラグ=TRUE のINVを 親発注ID(ORD) + "|" + 摘要対象月 でキー集計。対象月は 【RPA:HC】YYYY-MM から7文字抽出deductMap変数: { key: totalAmt }摘要に【RPA:HC】がないINV → キーなし → 天引き対象外
C1.2メインINV: 天引き計算税込金額_計画, deductMap32_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_IDAction 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. エラーハンドリング

#エラー条件処理ユーザー通知
E1WRK_INVC または TRN_JOUR シートが見つからない処理中断"🚨 WRK_INVC または TRN_JOUR シートが見つかりません。" ダイアログ
E2WRK_BANK シートが見つからないSTL作成をスキップ(仕訳転記は続行)通知なし(bankSheet=null のまま処理)
E3承認済かつ未転記のINVが0件処理終了"✅ 承認済かつ未転記のINVはありませんでした。" ダイアログ
E4INVの発生日(P/L計上日)が空当該INVをスキップ通知なし
E5実行時例外(予期せぬエラー)try-catch で捕捉、処理中断"🚨 processInvoiceApprovals でエラーが発生しました" + エラーメッセージ
E6bankSheet の行数不足insertRowsAfter で自動拡張通知なし(自動対応)

9. テスト仕様

9.1 EMP_0002 (角会計事務所, 顧問, 月額22,000)

テストIDINV期待結果
T1支払手数料 22,000 (口座振込, AP)STL作成: 決済金額=19,958(天引き後)
T2預り金 -42 (口座振込, 財務仕訳)STL作成: 決済金額=42(絶対値)
T3雑収入 2,000 (仕訳振替)STL作成しない
T4預り金 +42 (仕訳振替)STL作成しない

9.2 EMP_0001 (代表取締役, 役員, 月額500,000)

テストIDINV期待結果
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有効フラグ=FALSEINVの有効フラグがFALSE処理されない
T12発生日が空INVの発生日(P/L計上日)が未入力当該INVスキップ(エラーなし)
T13WRK_BANKシートなしbankSheetが存在しない仕訳転記は正常完了、STL作成のみスキップ
T14決済手段が空文字INVの決済手段が空STL作成しない

付録A: ユーザーの後続作業

33_wrk_bank に自動作成されたSTLに対して:

  1. 決済日_実績を入力 -- 実際の支払日・入金日
  2. 決済ステータスを "消込済" に変更
  3. Action B を実行 -- 仕訳台帳転記 + B/S解消 + CF計上

→ 詳細: spec_engine(Action B処理仕様)