3

今日は、「に基づく税計算方法」の動作の違いを理解するために、Magentoの税計算がどのように機能するかを研究していました。

_unitBaseCalculation_rowBaseCalculation_totalBaseCalculationのすべてのメソッドを実装するMage_Tax_Model_Sales_Total_Quote_Tax詳しく調べました。

私はそれらがまったく同じ結果を生み出すことを発見しました。では、なぜ彼らはそれらを実装するのに苦労したのでしょうか?

たとえば、単価の計算では、単一ユニットの税金を計算し、割引額を数量で除算し(割引後に税金が適用される場合)、両方を差し引いてから、数量を再度乗算するという問題が発生します。丸め誤差が発生するだけです。

一方、行の合計の計算は、最も直感的な計算(行の「小計」から価格を取得)から割引額(割引後に税金が適用される場合)を差し引いたものです。

3つ目は、2つ目の集計であり、一度に計算されます。

これは、税計算ロジックに混乱と難読化をもたらすだけです。なぜこれが行われたのか、誰かが光を当てることができますか?

(丸め誤差?下位互換性?TheDailyWTF賞の候補?)

編集:記録のために、これはMagento 1.6および1.7の時点で当てはまりますが、古いバージョンについてはわかりません。

4

1 に答える 1

8

私はこれをhttps://gist.github.com/2572772から見つけました(Alan Stormによると思われます)

この機能は、税金の計算方法に関する個々のローカルルール(またはクライアントの要求)によって動機付けられた可能性があります。これは、加算と丸めがいつ発生するかによって、端数の合計が異なる可能性があるためです。THat氏によると、私の推測が正しいかどうかを確認するためのコードを実行していないので、YMMVです。将来の研究のために考慮すべき他の分野。

各モードは、ショッピングカートの価格ルールとストア全体の割引とどのように連携しますか

ショッピングカートの価格ルールの場合、割引額(見積もりアイテムの数量で割り切れない可能性があるため、丸め誤差が発生する可能性があります)を分割して、最終結果が実際には同じプロセスになるようにするのは骨の折れる作業ですが、「丸めに関しては、いつ」と「どこで」。

于 2012-08-14T13:01:25.627 に答える