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

时间:2012-08-14 12:49:49

标签: algorithm magento

今天我正在研究Magento税收计算如何理解“基于的税收计算方法”的行为之间的差异。

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

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

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

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

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

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

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

编辑:对于记录,从Magento 1.6和1.7开始就是如此,不知道旧版本。

1 个答案:

答案 0 :(得分:8)

我发现了这个:https://gist.github.com/2572772(似乎是Alan Storm)

  

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

     

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

对于购物车价格规则,它经历了划分折扣金额(可能无法被引用项目数量整除从而引入舍入错误)的麻烦,以便最终结果实际上是相同的过程,但仅不同的“什么时候”和“哪里”的四舍五入。