Magento – Falsche Steuerberechnung bei Verwendung von % Gutscheinen / Rabatten

Magento-gutscheinWir hatten in einer Magento 1.7 Installation das Problem, dass mehr oder weniger alles falsch berechnet wurde sobald ein Gutschein bzw. ein Rabatt ins Spiel kam, der einen prozentualen Nachlass brachte. Hatte ein Kunde zum Beispiel einen 10% Gutschein ging es los.

Ausgangssituation war in diesem Testfall, dass ein Artikel inkl. 19% Mehrwertsteuer (also brutto) 159 Euro kostete. Netto wären dies dann 133,61 Euro. In der Übersicht sowie in der Rechnung wurde dies aus korrekt ausgewiesen.

In der Zwischensumme wurde dann die Nettosumme wieder korrekt dargestellt. Bei der Brutto Zwischensumme wurden aber plötzlich 35 Cent draufgerechnet, so dass es 159,35 Euro waren.

Der 10% Rabatt wurde aber korrekt berechnet. Dieser (Brutto-)Rabatt wurde aber nun nicht von den 159 Euro sondern von den vom System erfundenen 159,35 Euro abgezogen woraus sich die 143,45€ ergaben.

Die ausgewiesene Steuer hingegen hatte mit der gesamten Rechnung wieder gar nichts zu tun sondern bezieht sich auf eine Bruttosumme von 145,31 Euro.

Alles in allem hat sich Magento hier also komplett vertan.

Um dieses Problem nun zu beheben, wird folgendes getan:

  1. Im Ordner app/code/core/Mage/Tax/Model/Sales/Total/Quote wird die Datei Tax.php genommen und bei Bedarf in den Ordner app/code/local/Mage/Tax/Model/Sales/Total/Quote kopiert
  2. Dort die Zeile
    $discountRate = ($unitTax/$price) * 100;

    suchen (ca. Zeile 384) und komplett durch

    $discountRate = $inclTax == 1 ? ($unitTax/($price - $unitTax)) * 100 : ($unitTax/$price) * 100;

    ersetzen

  3. Die Zeile
    $baseDiscountRate = ($baseUnitTax/$basePrice) * 100;

    suchen (ca. Zeile 388) und komplett gegen

    $baseDiscountRate = $inclTax == 1 ? ($baseUnitTax/($basePrice - $baseUnitTax)) * 100 : ($baseUnitTax/$basePrice) * 100;

    austauschen.

  4. Die Datei abspeichern und wieder hochladen
  5. Cache löschen
  6. Das sollte es gewesen sein

Diese Änderung funktioniert nicht rückwirkend! Nur zukünftige Bestellungen sollten nun korrekt sein.

Genutzt in Magento Version 1.7.0.2 Kommentare? Ergänzungen? Hinweise? Gerne!

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

5 comments on “Magento – Falsche Steuerberechnung bei Verwendung von % Gutscheinen / Rabatten”

  1. Hallo,
    ihr solltet auf 1.8 updaten. Der Fix ist zwar für das Problem ausreichend, aber in dem Zusammenhang gibt es auch noch mehr Probleme. Zum Beispiel Rundungsfehler bei der Zahlung per Paypal. In 1.8 sind hier einige Sachen umgestellt worden und ab da geht es problemlos.

    Beste Grüße
    Tom

    1. Hi,
      korrekt, mit Version 1.8 “soll” der Fehler behoben sein, jedoch stand ein Update auf 1.8 nicht zur Debatte, da mit Updates bei vielen -vor allem größeren, angepassten und älteren- Shops viele Probleme erst entstehen. Magento ist eben nicht WordPress 🙂

      Beste Grüße zurück!

  2. Hallo,

    Habe diesen Beitrag gelesen und habe ein ähnliches Problem mit Magento 1.9.2.2.
    Artikelpreis € 55,51 inkl. MwSt.

    – Rabatt 3% = € 1,67

    + Versandkosten € 14,99 inkl. MwSt.

    So weit wäre ja alles korrekt aber das Resultat bei Magento wäre € 68,47

    Korrekt wäre € 68,83

    Magento berechnet also auf die 1,67 nochmals die MwSt.

  3. Ich spiele in solchen Fällen immer ein wenig in der Konfiguration bei Verkäufe > Steuer und bei Berechnung dann “Steuerberechnungsmethode basiert auf”. Hier mal zwischen “Gesamt”, “Zwischensumme” und “Einzelposition” wählen. Dies brachte gestern bei einem ähnlichen Problem die Lösung nachdem wir auf “Einzelpreis” gestellt hatten. Häufig kommt es zu Problemen wenn Preise z.B. netto im Backend hinterlegt werden und dann vom System umgerechnet werden sollen oder Brutto-Eingabe und netto soll berechnet werden etc.. Bei “alles in brutto” kommt es seltener zu Problemen.

Leave a Reply

Your email address will not be published. Required fields are marked *