Heute war ich studieren, wie Magento Steuerberechnung funktioniert, um den Unterschied zwischen den Verhaltensweisen für " verstehen Steuerberechnungsmethode auf der Grundlage von ".
Ich verfolgte tief in die Mage_Steuer_Modell_Umsatz_Gesamt_Quote_Steuer die alle Methoden in der _unitBaseCalculation , _rowBaseCalculation , _totalBaseCalculation .
Ich habe festgestellt, dass sie zu genau den gleichen Ergebnissen führen. Warum hat man sich also die Mühe gemacht, sie zu implementieren?
Bei der Berechnung des Stückpreises wird beispielsweise die Steuer für die einzelne Einheit berechnet und dann der Rabattbetrag durch die Menge geteilt (wenn die Steuer nach dem Rabatt erhoben wird), dann beides subtrahiert und dann wieder mit der Menge multipliziert... was zu Rundungsfehlern führt.
Die Berechnung der Zeilensumme hingegen ist die intuitivste (sie nimmt den Preis aus der Zeile "Zwischensumme") abzüglich des Rabattbetrags (falls die Steuer nach dem Rabatt erhoben wird).
Die dritte ist lediglich eine Zusammenfassung der zweiten, die auf einmal berechnet wird.
Dadurch wird die Logik der Steuerberechnung nur noch verwirrender und undurchsichtiger. Kann jemand erklären, warum dies so gemacht wurde?
(Rundungsfehler ? Rückwärtskompatibilität ? Anwärter auf den TheDailyWTF-Preis ?)
EDIT : Für das Protokoll ist dies wahr, wie von Magento 1.6 und 1.7, weiß nicht, über ältere Versionen.