社長返信内容を現在の実装状態と照合し、対応方針を整理
整理すると: 受注確定→有効在庫が減る / 出荷完了→現在庫が減る
現在の設計: 受注確定時に InventoryReservation(outbound) 作成→有効在庫減 / completed時にStock減算→現在庫減
→ 実は現在の設計と社長のイメージはほぼ一致している! 問題は出荷確定(confirmed)の位置づけ。
| タイミング | 現在の設計 | 社長のイメージ | 一致? |
|---|---|---|---|
| 受注確定 | 有効在庫が減る(outbound予約) | 仮出荷として有効在庫から引く | ✅ 一致 |
| 出荷確定 | shipped_at記録のみ | (このステータスの意味が不明) | 要整理 |
| 出荷完了 | 現在庫が減る(Stock減算) | 現在庫が減る | ✅ 一致 |
社長の認識:「下書き → 発注確定(内容FIX・印刷準備) → 発注済み(相手に送付後)」
現在の設計: draft → ordered の1ステップ(confirmedステータスがない)
| ステータス | 現在 | 社長のイメージ |
|---|---|---|
| draft | 下書き | 下書き(仕入先ごとに作成) |
| confirmed | なし | 発注確定(印刷・メール可能) |
| ordered | 発注済み | 発注済み(相手に送付後) |
| received | 入荷完了 | 入荷済み |
社長の指摘: 受注確定→下書き戻し、出荷不能時の戻し、発注修正時の戻し
影響: 確定時に自動作成された出荷・在庫予約をどう扱うか
| 対象 | 戻し方向 | 連動処理 |
|---|---|---|
| 受注 | confirmed → draft | 出荷(preparing)削除 + 在庫予約取消 |
| 出荷 | preparing → 受注に戻す | 出荷削除 + 受注をdraftに戻す |
| 発注 | ordered → confirmed/draft | 入荷伝票なければ戻し可能 |
staff_user_id が1つだけ。得意先マスタの default_user_id から自動セット。ラベルは「担当者」のみで曖昧。CS数 × 入数 + バラ = 総量 で自動計算。商品マスタの packing_quantity から入数を自動セット。InventoryReservation(type=outbound) を自動作成。Stock::effectiveQuantity() で有効在庫を計算(= 現在庫 - 出荷予定 + 入荷予定)。Shipment::complete() 実行時に Stock.quantity を減算(= 現在庫が減る)+ StockLedger に履歴記録 + InventoryReservation を消込。forceCompletePo()(残数切り捨て)と transferRemainingToNewPo()(残数を新POに転記)が実装済み。入荷確定後にモーダルで選択可能。