今日は、「に基づく税計算方法」の動作の違いを理解するために、Magentoの税計算がどのように機能するかを研究していました。
_unitBaseCalculation、_rowBaseCalculation、_totalBaseCalculationのすべてのメソッドを実装するMage_Tax_Model_Sales_Total_Quote_Taxを詳しく調べました。
私はそれらがまったく同じ結果を生み出すことを発見しました。では、なぜ彼らはそれらを実装するのに苦労したのでしょうか?
たとえば、単価の計算では、単一ユニットの税金を計算し、割引額を数量で除算し(割引後に税金が適用される場合)、両方を差し引いてから、数量を再度乗算するという問題が発生します。丸め誤差が発生するだけです。
一方、行の合計の計算は、最も直感的な計算(行の「小計」から価格を取得)から割引額(割引後に税金が適用される場合)を差し引いたものです。
3つ目は、2つ目の集計であり、一度に計算されます。
これは、税計算ロジックに混乱と難読化をもたらすだけです。なぜこれが行われたのか、誰かが光を当てることができますか?
(丸め誤差?下位互換性?TheDailyWTF賞の候補?)
編集:記録のために、これはMagento 1.6および1.7の時点で当てはまりますが、古いバージョンについてはわかりません。