Skip to content

v3.5.23 綠界電子發票:開了稅金又用折價券時開票失敗(1200031)

Choose a tag to compare

@j7-dev j7-dev released this 12 Oct 11:04
· 26 commits to master since this release

綠界電子發票:開了稅金又用折價券時開票失敗(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 ✅

修正

  1. 折扣行改用差額計算:折扣 = 訂單總額 − 已列出的明細(商品、運費、費用),不再自己重算稅額。折價券和後台手動改金額都適用。
  2. 運費有課稅時,不再多出一行假的折扣(以前運費稅會被扣兩次)。
  3. 費用有課稅時,費用行改列含稅金額(以前漏掉費用的稅)。
  4. 2 元四捨五入誤差的容忍檢查,改成把折扣行一起算進去。

驗證與已知限制

  • 自動測試:整合測試 345 個全部通過(上一版是 339 個,這次新增 6 個,都在開啟 5% 稅金的情境下測)。新增的測試用舊版程式跑會失敗,失敗的數字(-286)和 issue 回報的 log 一致。
  • 回歸:沒開稅金時套用折價券、後台手動調降商品金額,結果和以前相同。
  • 尚未測試:還沒在開啟稅金的正式綠界發票環境實際開過票。

Closes #137