ADR-0015: STL(決済レコード)の消込と天引き計算の役割分離
- Status: Accepted (旧形式「## ステータス: 採用済み」より転記)
- Mode: Standard (内容から推定・旧 README 一覧より移設)
- Kruchten Type: Property
- Scope: product
- Implementation Status: Done (STL 消込・天引き役割分離実装済)
Kruchten Type は ADR-0031 (2026-05-13) で遡及追加。分類根拠は ADR-0031 §決定セクションおよび docs/adr/README.md の Kruchten 3 分類ガイドを参照。 Status / Mode / Scope は 2026-06-11 に遡及追加 (ADR-0031 corrigendum パターン)。出典: Status = 旧形式「## ステータス」節の機械転記 / Mode = 旧 README §既存 ADR 一覧の推定値 (git 履歴) / Scope = ADR-0049 4 層分類の遡及付与 (PR レビューで確定)。
ステータス: 採用済み
コンテキスト
STL(Settlement)レコードは「INV と銀行入出金の突き合わせ(消込)」という基本的な役割に加え、給与・報酬の「源泉徴収・社保天引き計算」という別の会計処理を担うことになった。この 2 つの役割を同一ロジックに混在させるか、分離するかを決める必要があった。
決定
消込と天引き計算を別ロジックとして実装し、天引きは適用条件を限定する。
| 処理 | 担当モジュール | 適用条件 |
|---|---|---|
| 消込(INV ↔ BANKの突き合わせ) | 410_subledger_engine.js | 全 STL に適用 |
| 天引き計算(源泉税・社保控除の自動 STL 生成) | 401_rpa_hc.js | 摘要に「月額給与・報酬」を含む INV のみ |
天引き計算の deductMap のキーは INV 摘要の「対象月」とし、同月のすべての天引き項目を一括で処理する。
理由
- 給与天引きのロジックを消込エンジンに含めると、給与以外の INV(設備費・交通費等)に誤って天引き計算が走るリスクがある
401_rpa_hc.jsが HC(Human Capital)ドメイン専用であることを明示し、天引き計算の責務を給与ドメインに閉じ込める- 消込は「実際の入出金と請求の紐づけ」という会計上の普遍的な概念であり、業種固有の天引きロジックと混在させるべきでない
結果・影響
- ポジティブ: 天引き計算のバグが給与 INV 以外に波及しない
- ポジティブ: 消込ロジックのテストが天引き計算の影響を受けない
- ネガティブ: 給与 INV の処理フローが
401_rpa_hc.js→410_subledger_engine.jsの 2 段階になり、単独では完結しない - 注意: 未決済残高は「請求総額から再計算(全 STL 合計を逆算)」する方式。減算積み上げ方式は採用しない(天引き STL の混入で計算がずれるため)
Confirmation (準拠確認 / Fitness Function)
本セクションは ADR-0036 (Accepted 2026-05-14) で遡及追加された。ADR-0031 パターン (業界標準準拠メタデータ後付け = 誤字修正範疇) に準拠する遡及で本文の意思決定内容は不変。
- 検証手段: 既存テスト (testT* / test_{slice_id}_{condition})
- 実行頻度: Nightly
- 違反時の対応: Slack 通知