Magento 1.9 Mindestbestellwert und Warenkorbpreisregeln

Diese Beschreibung richtet sich an das Problem, dass man einen Mindesbestellwert in Kombination mit einer Warenkorbregel hat.

Der Post beschreibt wie man statt Mindestbestellmenge nach(!) Abzug Rabatt Magento so anpasst, dass die Mindestbestellmenge vor(!) Abzug von Rabatten gereinigt.

 

Folgendende Aufgabenstellung hatten wir:

der Mindesbstellwert sind 10 Produkte zu je 10€ => 100€

Für diese soll es über eine Warenkorb Regel 20€ Rabatt geben

Ziel ist:  Statt 100€ zahlt der Kunde nur 80€ für 10 Produkte.

Der Mindestbestellwert soll somit 10 Produkte sein => 100€ (vor Abzug) bzw. 80€ (nach Abzug)

 

Problem dabei:

Problem ist nun, wenn man den Mindesbestellwert in Magento auf 80€ setzt, können auch Kunden einkaufen, die nur 8 Produkte im Warenkorb haben.

 

Ursache ist:

Wenn man den Mindestbestellwert höher setzt funktioniert die 80€ statt 100€ zahlen Regeln nicht mehr. Die Ursache ist, dass Magento die Mindestbestellmenge nach(!) Abzug des Rabatts ermittelt.

Lösung:

Die Lösung ist eine Anpassung der Mindestbestellmenge. Dann wird die Mindestbestellmenge vor Abzug des Rabatts ermittelt wird.

 

Dies geschieht in der Methode „public function validateMinimumAmount()“ in Adress.php

app\code\core\Mage\Sales\Model\Quote\Address.php

ca. Zeile 1060

 

 public function validateMinimumAmount()
{
$storeId = $this->getQuote()->getStoreId();
if (!Mage::getStoreConfigFlag(’sales/minimum_order/active‘, $storeId)) {
return true;
}

if ($this->getQuote()->getIsVirtual() && $this->getAddressType() == self::TYPE_SHIPPING) {
return true;
} elseif (!$this->getQuote()->getIsVirtual() && $this->getAddressType() != self::TYPE_SHIPPING) {
return true;
}

$amount = Mage::getStoreConfig(’sales/minimum_order/amount‘, $storeId);
if ($this->getBaseSubtotalWithDiscount() < $amount) {
echo $this->getBaseSubtotal();
return false;
}
return true;
}

 

Die markierte Abfrage gilt es anzupassen:

Folgende anpassen

        if ($this->getBaseSubtotalWithDiscount() < $amount) {
echo $this->getBaseSubtotal();
return false;
}
return true;
}

ändern in:

        if ($this->getBaseSubtotal() < $amount) {
return false;
}
return true;

 

Wichtig ist, dass der „BaseSubtotal“ Wert der netto Wert ist. Man kann nun die Mindestbestellmenge als netto Wert ohne Abzug von Rabatten angegeben.

 

Mehr Infos zu Magento hier

 

Der Beitrag hat weitergeholfen? Ich würde mich sehr über einen kurzen Kommentar freuen.

6 Antworten auf „Magento 1.9 Mindestbestellwert und Warenkorbpreisregeln“

  1. Super Beitrag, danke.
    Eine Frage noch: Wir bekommt man es hin, das Magento beim Mindestbestellwert den Bruttowert nimmt und nicht netto?
    Viele Grüße
    Joachim

  2. Hallo Herr Steudter

    Gibt es in Magento die Möglichkeit, einen Mindestbestellwert nur für bestimmte Produkte einer ganzen Kategorie anzuwenden? Wenn jemand ein Produkt der Kategorie A kauft und unter € 20.00 liegt, dann kann er nicht bestellen. Liegt die Warenkorbsumme über € 20.00, dann kann er ganz normal bestellen. In diese Summe von € 20.00 dürfen auch andere Produkte aus der Kategorie B etc. miteinbezogen werden. Ich möchte nur nicht, dass einzelne Produkte dieser spezifischen Kategorie A bestellt werden können. Der Zuschlag müsste dann dynamisch sein und immer auf die € 20.00 gehen. So etwas habe ich aber bei Magento nicht gefunden.

    Danke für Ihre Hilfe!
    M. Fuchs

  3. Hallo Herr Fuchs,
    vielen Dank führ Ihr Kommentar.

    Ich bin mir recht sicher es geht mit Magento. Hatten den Fall aber auch noch nicht in der Konstellation.

    Lösung dürften die „Warenkorbregeln“ in Kombination mit Definition von versandkostenfrei als Aktion sein. Die sind super mächtig und muss „nur“ überlegen wie diese angelegt werden müssen.

    Bitte haben Sie Verständnis, dass ich da leider nicht die vollständige Lösung direkt auf Anhieb habe. Das wird vermutlich 30-60Minuten brauchen das im Detail zu planen und auch zu testen, ob es wirklich klappt und Nichts übersehen wurde-

    Grüße
    Martin Steudter

Schreibe einen Kommentar zu Martin Steudter Antworten abbrechen

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