Tabelle Preise Versand basierend auf Preis NACH RABATT – Magento

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).

26-Gedanken zu „Table rates shipping based on price AFTER DISCOUNT – Magento“

  1. Vielen Dank, dadurch wurde unser Problem mit der Berechnung der Versandkosten bei Verwendung von Rabattcoupons in Magento 1.6.1 gelöst.

  2. 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?

  3. 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.

  4. 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());
    }

  5. 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

  6. 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.

  7. Pingback: Magento, Tischversand-Preise & Rabattgutschein - alexander-steireif.com

  8. 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.

    1. 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.

  9. 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());
    }
    }
    }

  10. 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

Einen Kommentar hinterlassen

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

de_DEDeutsch
Nach oben blättern