集約: 買掛・支払 / Aggregate: Accounts Payable
バウンデッドコンテキスト: bc-ap
APReceipt(仕入)
| プロパティ | 型 | 説明 |
|---|---|---|
| orderNumber | string | 受注番号 |
| expenseCategory | ExpenseCategory | 費目区分 (材料費/購入品/外注費 等) |
不変条件 (Invariants)
- 仕入は受入実績 (GoodsReceipt) と 1:1 対応
- 費目はテナントの費目区分マスタに存在する必要がある
APBalance(買掛)
APBalance (集約ルート) ├── → Supplier (仕入先) └── SupplierPayment[] (支払 — 消込対象)
| プロパティ | 型 | 説明 |
|---|---|---|
| supplierId | string | 仕入先コード |
| payableAmount | Money | 支払額 |
| previousBalance | Money | 前期残高 |
| tax | Money | 消費税 |
不変条件 (Invariants)
- `残高` = `前期残高` + `当期仕入` - `当期支払` - `相殺`
- 仕入先マスタの締日 (`ClosingDayType`) と支払月オフセット (`PaymentTiming`: 当月/翌月/翌々月/翌々々月) に基づいて支払予定日を算出
- 端数処理は仕入先の `RoundingPolicy` に従う
- 支払消込は買掛残高を超過しない
- 前月残高と前々月残高の2世代を保持
- 社内仕入先 (内部振替) への支払登録は禁止
SupplierPayment(支払)
| プロパティ | 型 | 説明 |
|---|---|---|
| paymentId | string | 支払ID |
| supplierId | string | 仕入先コード |
| paymentType | PaymentMethod | 支払方法 (銀行振込/手形/現金/クレジットカード/相殺/前払い 等) |
| amount | Money | 支払額 |
| 操作 | 同一トランザクション | 結果整合性 |
| 仕入計上 | APReceipt | 買掛データ更新 |
| 支払実行 | SupplierPayment + APBalance 更新 | — |
| 期末締め | APBalance 確定 | — |