issue #234 整單作廢與發票狀態解耦決策鏈
這頁保留整單作廢與發票狀態的 issue source。它的重點是:不要用舊文字把發票 issued 狀態誤當成整單作廢硬阻擋。
最終結論
申請單資料狀態與發票/收據狀態是兩條軸。PM 後續決策推翻了「有發票就不能整單作廢」的簡化說法;整單作廢不應只因發票已開立就被硬擋。帳務狀態需要由發票/收據流程各自處理。
決策鏈
| 來源 | 內容 |
|---|---|
| #52 | 早期作廢規則與發票狀態有混在一起的描述。 |
| #195 | 帳務/發票狀態轉移問題延伸。 |
| #234 | 明確整理整單作廢是否應檢發票 issued,結論轉向解耦。 |
| #239 | per-item invoice/receipt flow 補強後,帳務確認與申請單作廢更不能混成單一狀態。 |
現行 code 錨點
| 目的 | 錨點 |
|---|---|
| 整單作廢守門 | ApplicationVoidGuard.CheckErpVoidBlockersAsync |
| 整單作廢執行 | ApplicationActionService.CancelAsync |
| 單項發票/收據驗證 | Verify-ItemVoucher.cs |
| 申請單狀態權威 | 資產狀態機 |
注意事項
- 不要把舊 issue body 的發票 issued gate 直接搬回 code。
- 要回答「能不能作廢」先看申請單/資產狀態;要回答「帳務票據怎麼處理」另看票據 flow。
- 這頁是 source 層,穩定規則應併入作廢/帳務 concept。