2012-08-14 64 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」。