3

今天我正在研究 Magento 税收计算的工作原理,以了解“基于税收计算方法”的行为之间的差异。

我深入追踪了Mage_Tax_Model_Sales_Total_Quote_Tax,它实现了_unitBaseCalculation_rowBaseCalculation_totalBaseCalculation中的所有方法。

我发现它们产生完全相同的结果。那么,他们为什么要经历实施它们的麻烦呢?

例如,单价计算麻烦的是计算单个单元的税,然后将折扣金额除以数量(如果在折扣后应用税),然后将两者相减,然后再乘以数量......这只是引入了舍入误差。

而行总计计算是最直观的计算(从“小计”行中获取价格)减去折扣金额(如果在折扣后应用税收)。

而第三个只是第二个的聚合,一次计算。

这只是给税收计算逻辑带来了混乱和混淆。任何人都可以阐明为什么这样做吗?

(舍入错误?向后兼容性?TheDailyWTF 奖的候选人?)

编辑:据记录,这在 Magento 1.6 和 1.7 中是正确的,不知道旧版本。

4

1 回答 1

8

我从以下位置找到了这个:https ://gist.github.com/2572772 (似乎是 Alan Storm)

此功能可能是受个别当地规则(或客户要求)关于如何计算税款的推动,因为根据添加和四舍五入发生的时间,小数加起来可能会有所不同。也就是说,我还没有运行代码来查看我的猜测是否正确,所以 YMMV。未来研究需要考虑的其他领域。

每种模式如何与购物车价格规则和商店折扣一起玩

对于购物车价格规则,要费尽心思去划分折扣金额(可能不能被报价商品数量整除,从而引入舍入误差),最终结果实际上是相同的过程,只是不同“ when"s 和 "where"s 关于舍入。

于 2012-08-14T13:01:25.627 回答