今天我正在研究Magento税收计算如何理解“基于的税收计算方法”的行为之间的差异。
我深入研究 Mage_Tax_Model_Sales_Total_Quote_Tax ,它实现了 _unitBaseCalculation , _rowBaseCalculation , _totalBaseCalculation 中的所有方法。
我发现他们产生了完全相同的结果。那他们为什么要经历实施它们的麻烦呢?
例如,单位价格计算会计算单个单位的税收,然后将折扣金额除以数量(如果在折扣后应用税额),然后减去两者,然后再乘以数量......只是引入了舍入错误。
行总计算是最直观的计算(从行“小计”中取价格)减去折扣金额(如果在折扣后应用税额)。
虽然第三个只是第二个的聚合,一次计算。
这只会给税务计算逻辑带来混淆和混淆。任何人都可以阐明为什么这样做了吗?
(舍入错误?向后兼容性?TheDailyWTF奖的候选人?)
编辑:对于记录,从Magento 1.6和1.7开始就是如此,不知道旧版本。
答案 0 :(得分:8)
我发现了这个:https://gist.github.com/2572772(似乎是Alan Storm)
此功能可能是由个别本地规则(或客户请求)决定如何计算税收,因为根据添加和舍入的时间,小数量可能会有所不同。说,我还没有完成代码,看看我的猜测是否正确如此YMMV。未来研究需要考虑的其他方面。
每种模式如何与购物车价格规则和商店广泛折扣一起使用
对于购物车价格规则,它经历了划分折扣金额(可能无法被引用项目数量整除从而引入舍入错误)的麻烦,以便最终结果实际上是相同的过程,但仅不同的“什么时候”和“哪里”的四舍五入。