Repository navigation
v3.5.23 綠界電子發票:開了稅金又用折價券時開票失敗(1200031)
綠界電子發票:開了稅金又用折價券時開票失敗(RtnCode 1200031)(issue #137)
影響對象:使用綠界電子發票,而且有開啟 WooCommerce 稅金計算(woocommerce_calc_taxes)的站台。沒開稅金的站台(多數台灣商店)不受影響,升級後開票結果和以前完全相同。
問題
訂單套用折價券後開立發票,綠界回傳 RtnCode 1200031:驗證發票金額發現錯誤,與商品合計金額不符。
原因:發票明細的商品行用的是折扣前的含稅金額,折扣行卻是用折扣後的稅額算出來的,兩邊基準不一致,折扣行少扣了折抵的營業稅。
以 issue 的訂單為例(含稅價 6,300、折價券 300):
| 修正前 | 修正後 | |
|---|---|---|
| 主機服務費 | 6,300 | 6,300 |
| 折扣 | -286(少扣 14 元稅) | -300 |
| 明細合計 | 6,014 ≠ 6,000 ❌ | 6,000 = 6,000 ✅ |
修正
- 折扣行改用差額計算:折扣 = 訂單總額 − 已列出的明細(商品、運費、費用),不再自己重算稅額。折價券和後台手動改金額都適用。
- 運費有課稅時,不再多出一行假的折扣(以前運費稅會被扣兩次)。
- 費用有課稅時,費用行改列含稅金額(以前漏掉費用的稅)。
- 2 元四捨五入誤差的容忍檢查,改成把折扣行一起算進去。
驗證與已知限制
- 自動測試:整合測試 345 個全部通過(上一版是 339 個,這次新增 6 個,都在開啟 5% 稅金的情境下測)。新增的測試用舊版程式跑會失敗,失敗的數字(-286)和 issue 回報的 log 一致。
- 回歸:沒開稅金時套用折價券、後台手動調降商品金額,結果和以前相同。
- 尚未測試:還沒在開啟稅金的正式綠界發票環境實際開過票。
Closes #137