Magento, Versand per Table-Rates & Rabattgutschein

StartMagento & E-Commerce BlogMagentoMagento, Versand per Table-Rates & Rabattgutschein

Ab und an bekomme ich per E-Mail Fragen von angehenden Magento Shop-Betreibern, die mein Buch „Magento: Das umfassende Handbuch“ (gibt’s übrigens nur noch in digitaler Form) gelesen haben. Sollte es sich um eine Problemstellung handeln, die auch für weitere Magento Fans interessant sein dürfte, so werde ich zukünftig den einen oder anderen Blog Beitrag schreiben. Vielleicht wird dadurch das eine oder andere Magento Problem schneller und ohne große Tüftelei gelöst!

Vorhin prasselte folgende Frage in meinen Posteingang:

[…] Ich möchte ab 85,00 € versandkostenfrei versenden und habe dies über Table Rate realisiert. Funktioniert wunderbar.
Wenn nun ein Kunde einen Warenkorbwert von 85,00 € (brutto) hat und einen 10%-Rabattgutschein
einlöst, wird die Ware trotz Unterschreitung der 85,00 € versandkostenfrei verschickt, da sich das System auf die Zwischensumme bezieht
und nicht auf die Zwischensumme abzgl. dem Rabatt.

Können Sie mir weiterhelfen? […]

Die Problemstellung ist damit klar: Wenn man seinen Kunden schon mit einem Rabatt in Form eines Gutscheins belohnt, müssen sie zumindest die Versandkosten bezahlen, sollte der Wert des Warenkorbs abzüglich Rabatt unter der Grenze für den kostenlosen Versand liegen. Ansonsten belohnt man seine Kunden mit einem Rabatt und erlässt ihm im Zweifelsfall auch noch die Versandkosten und als Shop-Betreiber legt man am Ende des Tages bei solchen Bestellungen drauf und verdient keinen Euro. Klingt also logisch und macht Sinn.

Tatsächlich dachte ich im ersten Moment „okay das lässt sich doch ganz einfach einstellen“. Pustekuchen. In der Tag hat es die Frage in sich und ich habe das halbe Magento Backend abgegrast, da ich fest davon überzeugt war, es handele sich um eine Anforderung die sich konfigurieren lässt. Nach etwas Recherche bin ich auf folgenden Blog Beitrag gestoßen, der exakt dieses Problem behandelt: http://www.devproblems.com/table-rates-shipping-based-on-price-after-discount-magento/

Die Lösung sieht wie folgt aus:

  1. Kopiere die Datei /app/code/core/Mage/Shipping/Model/Carrier/Tablerate.php nach /app/code/local/Mage/Shipping/Model/Carrier/Tablerate.php damit bei einem Update das File nicht überschrieben wird
  2. Springe in die Zeile 80 (bei Magento 1.9.2.2) und suche die Stelle public function collectRates(Mage_Shipping_Model_Rate_Request $request)
  3. Füge innerhalb dieser Funktion folgenden Code ein:
    $s_price = $request->getPackageValueWithDiscount();
    $request->setPackageValue($s_price);
  4. Bei mir sieht die Funktion nun folgendermaßen aus
    public function collectRates(Mage_Shipping_Model_Rate_Request $request)
    {
    if (!$this->getConfigFlag('active')) {
    return false;
    }
    $s_price = $request->getPackageValueWithDiscount();
    $request->setPackageValue($s_price);

Anschließend berechnet Magento die Versandkosten nach dem Rabatt! Auch wenn diese Berechnungsvariante durchaus Sinn ergibt, im Standard kalkuliert Magento ein wenig anders. Mit dieser kleinen Anpassung kann man aber seinen Magento Shop entsprechend anpassen und hat anschließend eine „saubere“ Versandkostenberechnung.

Warenkorb

Ein Warenkorb mit 85€, 10% Rabatt & ab 85€ versandkostenfreie Lieferung – mit einem kleinen Hack klappt auch das

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.