2012-08-14 67 views
3

今天,我正在研究的Magento税计算工作如何理解“的基础上计税方法”的行为之间的区别。Magento为什么3个税收计算方法?

我深深追查到Mage_Tax_Model_Sales_Total_Quote_Tax它实现在_unitBaseCalculation所有方法,_rowBaseCalculation_totalBaseCalculation

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

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

而行汇总计算是最直观的一个(这需要价格从行“分类汇总”)减去优惠金额(如果打折后加税)。

而第三个是只在第二个的集合体,一次计算。

这只是介绍了混乱和混淆税务计算逻辑。任何人都可以阐明为什么这样做?

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

编辑:为了记录这是真的如Magento的1.6和1.7的,不知道旧的版本。

+0

“刚刚引入的舍入误差” - 你确定吗?你能证明两种方法总是能产生相同的结果吗?可能出现的问题示例:如果某个项目的税金必须为{货币单位}的确切数量,税率为17%,那么每个成本为20的项目的100个项目的总税额不会超过2000个项目的1个项目! – AakashM 2012-08-14 12:53:38

+0

嗯..我主要是用“很好”的数字进行测试,所以他们在我的测试中给出了相同的结果。我的意思是通过“舍入误差”,每种方法都会根据舍入时间的不同而产生不同的结果,这对我来说似乎是非常直观的。 – 2012-08-14 12:55:44

+3

会计师(甚至更多税务稽查员)都是陌生的人,他们很少被直觉,简单的数学或者常识所打动。人们一直在做计费和税收的时间比他们编程的时间长得多。有许多规则和法规'先有技术',软件必须遵循,即使事后看来显而易见的是重写会带来更好的系统。尽管如此,问还是有道理的。 – AakashM 2012-08-14 12:59:27

回答

8

我发现这个来自:https://gist.github.com/2572772(由Alan风暴似乎)

此功能可能是由各个地方的规则(或客户端请求)的税收应如何计算的动机,因为分数数额可能会增加取决于添加和舍入的时间不同。说,我没有通过代码运行,看看我的猜测是否适合YMMV。其他领域要考虑未来的研究。

如何每种模式的购物车价格规则玩和存储宽折扣

对于购物车价格规则,它经过艰苦的麻烦来划分的优惠金额(可能不是由报价项目整除数量,因此引入舍入误差),以便最终结果实际上是相同的过程,但只有关于舍入的不同“when”和“where”。