Magento为什么要3种税收计算方法?

Rai*_*tef 3 algorithm magento

今天我正在研究Magento税收计算如何解释" 基于税收计算方法 "的行为之间的差异.

我深入研究了Mage_Tax_Model_Sales_Total_Quote_Tax,它实现了_unitBaseCalculation,_rowBaseCalculation,_totalBaseCalculation中的所有方法.

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

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

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

而第三个只是第二个的聚合,立即计算.

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

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

编辑:对于记录,这是真正的Magento 1.6和1.7,不知道旧版本.

Rai*_*tef 8

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

此功能可能是由个人本地规则(或客户请求)决定如何计算税收,因为分数金额可能会根据添加和舍入的时间而有所不同.说,我还没有完成代码,看看我的猜测是否正确如此YMMV.未来研究需要考虑的其他方面.

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

对于购物车价格规则,它经历了划分折扣金额(可能无法被引用项目数量整除从而引入舍入误差)的艰苦麻烦,因此最终结果实际上是相同的过程,但只有不同的"什么时候"s"和"哪里"的四舍五入.