今天,我正在研究的Magento税计算工作如何理解“的基础上计税方法”的行为之间的区别。Magento为什么3个税收计算方法?
我深深追查到Mage_Tax_Model_Sales_Total_Quote_Tax它实现在_unitBaseCalculation所有方法,_rowBaseCalculation,_totalBaseCalculation。
我发现他们产生相同的结果。那么他们为什么要经历实施它们的麻烦?
例如,单位价格计算就是计算单个单位的税额,然后将折扣金额除以数量(如果折扣后应用了税款),然后将两者相减,然后再乘以数量...这只是引入舍入误差。
而行汇总计算是最直观的一个(这需要价格从行“分类汇总”)减去优惠金额(如果打折后加税)。
而第三个是只在第二个的集合体,一次计算。
这只是介绍了混乱和混淆税务计算逻辑。任何人都可以阐明为什么这样做?
(?舍入误差的向后兼容性候选人TheDailyWTF奖?)
编辑:为了记录这是真的如Magento的1.6和1.7的,不知道旧的版本。
“刚刚引入的舍入误差” - 你确定吗?你能证明两种方法总是能产生相同的结果吗?可能出现的问题示例:如果某个项目的税金必须为{货币单位}的确切数量,税率为17%,那么每个成本为20的项目的100个项目的总税额不会超过2000个项目的1个项目! – AakashM 2012-08-14 12:53:38
嗯..我主要是用“很好”的数字进行测试,所以他们在我的测试中给出了相同的结果。我的意思是通过“舍入误差”,每种方法都会根据舍入时间的不同而产生不同的结果,这对我来说似乎是非常直观的。 – 2012-08-14 12:55:44
会计师(甚至更多税务稽查员)都是陌生的人,他们很少被直觉,简单的数学或者常识所打动。人们一直在做计费和税收的时间比他们编程的时间长得多。有许多规则和法规'先有技术',软件必须遵循,即使事后看来显而易见的是重写会带来更好的系统。尽管如此,问还是有道理的。 – AakashM 2012-08-14 12:59:27