j7-dev / woomp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

打折導致金額不同,綠界電子發票開立失敗

andykao1026 opened this issue · comments

order_id; 45832

情境:
(1)商品販售價格
【現貨免運】營養師推薦👍吃貨 防彈三口味(3入組) $1377
【加購價只要$199】台灣製造-黑珍珠爽膚化妝水100ml $199
【預購中】ALYSSANA 黑蚊剋星清涼軟膏15g $299

(2)使用外掛全部打九折
(3)折扣後訂單詳情
2024-05-13_102558

(4)綠界電子發票錯誤訊息及截圖
messageImage_1715564159292
messageImage_1715563907872

目前測試結果

  1. 打折後小數點結帳開發票,會成功
  2. 直接設定小數點也是開立成功

image

失敗原因

開不了是因為你那邊加總變成 1957 了 對不上訂單的 1956

綠界發票是

1377+199+299*2=2174,打完9折 1956.6,四捨五入,所以開1957發票

WC 訂單是

13770.9 省略為1239
199
0.9 省略為179
29920.9 省略為538
合計 1956

就對不上了

參考資料

https://stackoverflow.com/questions/44659553/woocommerce-rounding-before-calculate-totals

新增判斷
如果 $order 取得的總金額 $order_total$items 加總後總金額不同就用 $order_total_summed_by_items 當作 $order_total

$order_total_summed_by_items += round( (float) $shippingTotal, 2 ) + round( (float) $fee_amount, 2 );

if ( $order_total !== $order_total_summed_by_items && ( abs( $order_total - $order_total_summed_by_items ) < 2 ) ) {
  // 如果金額不符合,且差距在 2 元內,就是把 $order_total 改為 $order_total_summed_by_items
  $order_total = $order_total_summed_by_items;
}