Magento: Bruttowert für kostenlosen Versand / Tablerates

In Magento kann man per Tablerates einstellen, dass ab einer bestimmten Zwischensumme (Warenkorb) der Versand kostenlos ist. Das Problem hierbei ist aber, dass Magento vom Nettobetrag des Warenkorbes ausgeht, und nicht vom Bruttobetrag. Wenn man also in den Tablerates ‚Versandkostenfrei ab 50 Euro‘ einstellt, ist der Versand tatsächlich erst ab 59,50 Euro kostenlos.

Mit ein paar Zeilen kann man dies aber umgehen.

Zuerst kopiert man die Datei app/code/core/Mage/Shipping/Model/Carrier/Tablerate.php nach app/code/local/Mage/Shipping/Model/Carrier/Tablerate.php

Somit wird der neue Code bei einem Magento-Update nicht überschrieben.

In diese Datei schreibt man nun zwischen dem Block ‚// exclude Virtual products price from Package value if pre-configured‘ und ‚// Free shipping by qty‘ in ca. Zeile 77 folgenden Code:

//NEU Versandkostenfrei ab xx Euro NETTO
if (Mage::helper('tax')->priceIncludesTax()) {
   foreach ($request->getAllItems() as $item) {
      $request->setPackageValue($request->getPackageValue() + $item->getTaxAmount());
   }
}

Der Aufbau der tablerates.csv sieht dabei wie folgt aus:

"Land","Region","Postleitzahl","Zwischensumme (und mehr)","Versandpreis"
*,*,*,50.0000,0.0000
*,*,*,0.0000,4.9000

Das könnte dich auch interessieren …

7 Antworten

  1. Andi sagt:

    Funktioniert einwandfrei auf 1.6.2, Danke

  2. Falkone sagt:

    Hehe – funzt super auch bei der 1.8.1 – kommt aber darauf an was für ein Wert in der Config steht.
    Mage::helper(‚tax‘)->priceIncludesTax() liefert bei mir nen false damit springt es auch nicht an – ich habe daher Mage::helper(‚tax‘)->displayCartPriceInclTax() genommen – hier heißt es selber ausprobieren.

    if (Mage::helper(‚tax‘)->displayCartPriceInclTax()) {
    foreach ($request->getAllItems() as $item) {
    $request->setPackageValue($request->getPackageValue() + $item->getTaxAmount());
    }
    }

  3. minge sagt:

    Danke für diese feine Lösung!

    Hinweis: im Code oben sollte man folgende Ersetzung vornehmen:

    -> ersetzen mit ->

  4. Danny sagt:

    Hallo Marco,
    bei mir funkitoniert es unter 1.7.0.2.
    Danke!

  5. Mr-Fit.de sagt:

    Moin moin,

    Unter Magento 1.7.0 funktioniert dieser Zusatz leider auch nicht. Es werden immernoch in der TableRates die Werte als Nettowerte gesehen… 🙁

  6. marco sagt:

    Welche version von Magento wird verwendet?
    Der Code ist auch richtig implementiert?

  7. Stefan B. sagt:

    Hat leider nicht funktioniert. 2x Artikel mit 7% im Warenkorb; Bruttobetrag 40,30 Euro. TableRate ist bei 40,00 Euro eingestellt => kein kostenfreier Versand. 🙁

    DEU,*,*,0.0000,3.0000
    DEU,*,*,40.0000,0.0000

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.