一个订单分两次开票后,两张Invoice税额之和超过订单税额。问题常出在自定义Totals没有处理已开票金额和最后一张发票舍入。
解决记录
步骤1:比较订单、order_item与两张invoice_item的qty、tax_amount、discount_tax_compensation_amount。
步骤2:自定义Invoice Total只计算本次可开票行,扣除已开票金额;不要重新按订单小计完整算一次。
步骤3:基础币种先计算并按Magento精度舍入,最后一张Invoice吸收舍入差,确保累计值等于订单。
步骤4:修复后用新测试订单验证;历史已发送发票按财务流程冲销重开,不直接改账务表。
命令与数据检查
SELECT increment_id,tax_amount,base_tax_amount,discount_amount,grand_total FROM sales_invoice WHERE order_id=:order_id ORDER BY entity_id;SELECT item_id,qty_invoiced,tax_invoiced FROM sales_order_item WHERE order_id=:order_id;
上线前验收
按1+1、1+2和最后剩余数量开票,所有Invoice累计税、折扣和总额与Order完全相等。

