Magento weist einen ziemlich großen Fehler auf, der es dem Versandmodul ermöglicht, Versandkosten ohne Rabatt oder Versandregeln (sofern diese angewendet werden) zu berechnen.
Es hat mich Stunden gekostet, eine Problemumgehung zu finden. Wenn Sie diese also verwenden, wäre ich Ihnen für einen Verweis auf dieses Blog sehr dankbar.
Wie ich das Problem behoben habe
Springe direkt zu:
/app/code/local/Mage/Shipping/Model/Carrier/Tablerate.php
Fügen Sie ungefähr in Zeile 77 (in der Funktion „collectRates“) den folgenden Code hinzu:
$s_price = $request->getPackageValueWithDiscount();
$request->setPackageValue($s_Preis);
Jetzt werden die Versandkosten auf der Grundlage des Zwischenbetrags abzüglich des Rabatts berechnet. Ich hoffe, das löst das Problem (in Version 1.7 ist das der Fall).
Tatsächlich löste dies das Problem in Magento 1.7
Vielen Dank, dadurch wurde unser Problem mit der Berechnung der Versandkosten bei Verwendung von Rabattcoupons in Magento 1.6.1 gelöst.
Danke dafür. Funktioniert in 1.8.1.0
War überrascht, dass so etwas wirklich einen „Hack“ brauchte! 🙂
Hallo, tut mir leid, ich habe ein paar Probleme, diese Zeilen anzuwenden. Ich verwende eine kostenlose Erweiterung für Versandkosten „MATRIXRATE“. Kann es sein, dass es durch diese Erweiterung anders ist?
Hallo,
endlich hat es bei mir geklappt, als ich den „Paketwert“ in „Paketwert mit Rabatt“ geändert und eine Matrix für die Versandkosten verwendet habe. Dabei ist mir aufgefallen, dass die Versandmethode \'Tablerates\' aktiviert sein muss (im System – Versandmethoden), selbst wenn die Tabelle leer ist. Dann erhält das Plugin \'Matrixrates\' auch die richtige Zwischensumme.
danke, viele Grüße.
Fantastisch, danke für die Hilfe, dieser kleine Code-Schnipsel zum Aktivieren von Tabellenpreisen hat meine Probleme gelöst.
Funktioniert einwandfrei.
Vielen Dank, Amigo.
Wo soll ich hinzufügen ?????/
öffentliche Funktion collectRates(Mage_Shipping_Model_Rate_Request $request)
{
wenn (!$this->getConfigFlag('active')) {
gibt false zurück;
}
// Schließen Sie den Preis virtueller Produkte vom Paketwert aus, falls vorkonfiguriert
wenn (!$this->getConfigFlag('include_virtual_price') && $request->getAllItems()) {
foreach ($request->getAllItems() als $item) {
wenn ($item->getParentItem()) {
weitermachen;
}
wenn ($item->getHasChildren() und $item->isShipSeparately()) {
foreach ($item->getChildren() als $child) {
wenn ($child->getProduct()->isVirtual()) {
$request->setPackageValue($request->getPackageValue() – $child->getBaseRowTotal());
}
}
} sonstwenn ($item->getProduct()->isVirtual()) {
$request->setPackageValue($request->getPackageValue() – $item->getBaseRowTotal());
}
Ich … ich liebe dich. Ich habe viele Stunden damit verbracht, damit zu kämpfen, danke!
Du bist der Typ!!! Danke, Kumpel 🙂
es funktioniert gut.
Danke.
Konnten Sie dies in 1.9 zum Laufen bringen?
Hat bei mir in 1.9 nicht funktioniert. Vielleicht übersehe ich etwas? Wenn es bei jemandem in 1.9 funktioniert, können Sie es gerne als Datei und Code posten? Danke
Ersetzen Sie getPackageValue durch getPackageValueWithDiscount in allen Dateien. Getestet auf 1.9 und funktioniert
Ich kann bestätigen, dass dieser Fix auch unter 1.9.2 funktioniert.
Hallo.
Ich verwende eine Aktionswarenkorbregel:
– Kostenloser Versand, wenn das Land Spanien ist
– Der Zwischenbetrag ist gleich oder größer als 49,59 Euro.
Wenn die Leute 49,59 Euro im Warenkorb haben, funktioniert das problemlos.
Ich habe eine Aktionswagenregel:
– Rabattcode 10%
Wenn jedoch ein Rabattcoupon von 10% eingelöst wird, ist der Versand trotzdem kostenlos und der Zwischenbetrag beträgt mit dem Coupon minus 49,59.
Wie kann ich es lösen?
Vielen Dank.
PD: Ich verwende 2 Module mit konfiguriertem tablerates.csv.
Ich habe diesen Thread erstellt. Das ist genau das, was Sie brauchen.
Ich habe für Magento 1.9.2 verwendet
https://community.magento.com/t5/Admin-Configuration-Questions/How-to-setup-Free-Shipping-with-minimum-amount-for-selected/td-p/17674
Pingback: Magento, Tischversand-Preise & Rabattgutschein - alexander-steireif.com
Super, es funktioniert sogar in 1.5.1 🙂
Hallo ,
Vielen Dank, hat mir viel Zeit gespart. Bei mir hat es in Magento 1.9.0.1 funktioniert. Danke, Kumpel.
Ich habe getPackageValue in der Datei Tablerate.php durch getPackageValueWithDiscount ersetzt.
Hallo,
Wenn ich die Bestellung abschicke, erhalte ich nach dem Ändern des Codes die Fehlermeldung „Bei der Verarbeitung Ihrer Bestellung ist ein Fehler aufgetreten … Bitte geben Sie in Magento den Fehler bei der Versandart mit Tabellenpreis an“. Bitte helfen Sie mir, das Problem zu lösen.
Ich werde verrückt, mache es genau wie oben, aber es wird in 1.9.2.4 nicht funktionieren
öffentliche Funktion collectRates(Mage_Shipping_Model_Rate_Request $request->getPackageValueWithDiscount())
{
wenn (!$this->getConfigFlag('active')) {
gibt false zurück;
}
// Schließen Sie den Preis virtueller Produkte vom Paketwert aus, falls vorkonfiguriert
wenn (!$this->getConfigFlag('include_virtual_price') && $request->getAllItems()) {
foreach ($request->getAllItems() als $item) {
wenn ($item->getParentItem()) {
weitermachen;
}
wenn ($item->getHasChildren() und $item->isShipSeparately()) {
foreach ($item->getChildren() als $child) {
wenn ($child->getProduct()->isVirtual()) {
$request->setPackageValue($request->getPackageValueWithDiscount() – $child->getBaseRowTotal());
}
}
} sonstwenn ($item->getProduct()->isVirtual()) {
$request->setPackageValue($request->getPackageValueWithDiscount() – $item->getBaseRowTotal());
}
}
}
Nur um zu verdeutlichen, was Raul für Matrixrate.php gesagt hat: Dies ist ein Webshopapps-Plugin. Dieser Hack funktioniert perfekt auf Magento 1.9.2.4
Fügen Sie diesen Code oben in der Funktion „collectRates“ hinzu
$s_price = $request->getPackageValueWithDiscount();
$request->setPackageValue($s_Preis);
Ändern Sie dann den gesamten „getPackageValue“-Code in „getPackageValueWithDiscount“.
Vielen Dank für diesen Thread.
-J
vielen Dank, damit ist dieses verwirrende Problem behoben!
Funktioniert perfekt in Magento 1.9.3.8
Vielen Dank!!
Gibt es eine Lösung für Magento 2?