Tarieven voor verzending gebaseerd op prijs NA KORTING – Magento

Magento heeft een behoorlijke bug waardoor de verzendmodule verzendkosten berekent zonder korting of verzendregels (als die zijn toegepast).

Het heeft mij uren gekost om een oplossing te vinden. Als u deze oplossing gebruikt, zou ik het erg op prijs stellen als u naar deze blog verwijst.

Hoe ik het heb opgelost

Ga naar:

/app/code/local/Mage/Shipping/Model/Carrier/Tablerate.php

Voeg de volgende code toe op regel 77 (in de functie collectRates):

$s_price = $request->getPackageValueWithDiscount();
$request->setPackageValue($s_price);

Nu worden de verzendkosten berekend op het subtotaal minus de korting. Ik hoop dat dit het probleem oplost (dat doet het in 1.7)

26 gedachten over “Table rates shipping based on price AFTER DISCOUNT – Magento”

  1. Bedankt, hiermee is ons probleem met het berekenen van verzendkosten bij het gebruik van kortingsbonnen in Magento 1.6.1 opgelost.

  2. Hallo, sorry, ik heb wat problemen met het toepassen van die regels. Ik gebruik een gratis extensie voor verzendtarieven "MATRIXRATE". Kan het anders zijn vanwege deze extensie?

  3. Hallo,

    Uiteindelijk werkte het voor mij door een matrixverzendtarieven te gebruiken bij het wijzigen van de "PackageValue" voor "PackageValueWithDiscount" en wanneer ik zie dat je de verzendmethode \'tablerates\' actief moet hebben (in systeem - verzendmethoden), zelfs als de spreadsheet leeg is, dan krijgt de \'matrixrates\'-plugin ook het juiste subtotaal.

    bedankt, met vriendelijke groet.

  4. Waar kan ik ?????/ toevoegen?
    openbare functie collectRates(Mage_Shipping_Model_Rate_Request $request)
    {
    als (!$this->getConfigFlag('actief')) {
    retourneer false;
    }

    // sluit de prijs van virtuele producten uit van de pakketwaarde als deze vooraf is geconfigureerd
    als (!$this->getConfigFlag('include_virtual_price') && $request->getAllItems()) {
    foreach ($request->getAllItems() als $item) {
    als ($item->getParentItem()) {
    doorgaan;
    }
    als ($item->getHasChildren() && $item->isShipSeparately()) {
    foreach ($item->getChildren() als $child) {
    als ($child->getProduct()->isVirtual()) {
    $request->setPackageValue($request->getPackageValue() – $child->getBaseRowTotal());
    }
    }
    } anders ($item->getProduct()->isVirtual()) {
    $request->setPackageValue($request->getPackageValue() – $item->getBaseRowTotal());
    }

  5. Werkte niet voor mij in 1.9. Misschien mis ik iets? Als iemand het werkend heeft in 1.9, kun je dan een bestand en code posten? Dank

  6. Hoi.
    Ik gebruik een promotiewagenregel:
    – Gratis verzending wanneer het land Spanje is
    – Subtotaal is gelijk aan of groter dan 49,59 euro.

    Als mensen 49,59 euro in hun winkelwagentje hebben, werkt dit prima.

    Ik heb een promotiewagenregel:
    – Kortingscode 10%

    Maar wanneer er een kortingsbon van 10% wordt toegepast, dan is de verzending nog steeds gratis en is het subtotaal -49,59 met de toegepaste coupon.

    Hoe kan ik dit oplossen?
    Hartelijk dank.

    PD: Ik gebruik 2 modules met tablerates.csv geconfigureerd.

  7. Terugkoppeling: Magento, Versand per Tabel-Tarieven & Rabattgutschein - alexander-steireif.com

  8. Hoi ,

    Geweldig Bedankt, het heeft me veel tijd bespaard. Het werkte voor mij in Magento 1.9.0.1. Bedankt maat.

    Ik heb getPackageValue vervangen door getPackageValueWithDiscount in het bestand Tablerate.php.

    1. Hoi,

      Wanneer ik de bestelling verstuur krijg ik een foutmelding nadat ik de code heb gewijzigd: "Er is een fout opgetreden bij het verwerken van uw bestelling... geef de verzendmethode op in Magento met de tabelprijs". Help mij dit op te lossen.

  9. Wordt gek, doe precies hetzelfde als hierboven, maar het zal niet werken in 1.9.2.4

    openbare functie collectRates(Mage_Shipping_Model_Rate_Request $request->getPackageValueWithDiscount())
    {
    als (!$this->getConfigFlag('actief')) {
    retourneer false;
    }

    // sluit de prijs van virtuele producten uit van de pakketwaarde als deze vooraf is geconfigureerd
    als (!$this->getConfigFlag('include_virtual_price') && $request->getAllItems()) {
    foreach ($request->getAllItems() als $item) {
    als ($item->getParentItem()) {
    doorgaan;
    }
    als ($item->getHasChildren() && $item->isShipSeparately()) {
    foreach ($item->getChildren() als $child) {
    als ($child->getProduct()->isVirtual()) {
    $request->setPackageValue($request->getPackageValueWithDiscount() – $child->getBaseRowTotal());
    }
    }
    } anders ($item->getProduct()->isVirtual()) {
    $request->setPackageValue($request->getPackageValueWithDiscount() – $item->getBaseRowTotal());
    }
    }
    }

  10. Om te verduidelijken wat Raul zei voor Matrixrate.php, dit is een webshopapps plugin. Deze hack werkt perfect op Magento 1.9.2.4

    Voeg deze code toe bovenaan de collectRates-functie

    $s_price = $request->getPackageValueWithDiscount();
    $request->setPackageValue($s_price);

    Verander vervolgens alle "getPackageValue"-code naar "getPackageValueWithDiscount"

    Bedankt voor deze thread.
    -J

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

nl_NLNederlands
Scroll naar boven