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)
Dit heeft inderdaad het probleem in Magento 1.7 opgelost
Bedankt, hiermee is ons probleem met het berekenen van verzendkosten bij het gebruik van kortingsbonnen in Magento 1.6.1 opgelost.
Bedankt hiervoor. Werkt in 1.8.1.0
Ik was verbaasd dat dit soort dingen echt een 'hack' nodig hadden! 🙂
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?
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.
Fantastisch, bedankt voor de hulp. Dit kleine fragment over het inschakelen van tafeltarieven heeft mijn problemen opgelost.
Werkt perfect.
Hartelijk dank, vriend.
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());
}
Ik….ik hou van je. Vele uren besteed aan het vechten hiermee, bedankt!
Jij bent The Dude!!! Bedankt maat 🙂
Het werkt prima.
Bedankt.
Heb je dit in versie 1.9 werkend gekregen?
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
vervang getPackageValue met getPackageValueWithDiscount in alle bestanden. Getest op 1.9 en werkt
Ik kan bevestigen dat deze oplossing ook op versie 1.9.2 werkt.
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.
Ik heb deze thread aangemaakt. Dit is precies wat je nodig hebt.
Ik heb het gebruikt voor Magento 1.9.2
https://community.magento.com/t5/Admin-Configuration-Questions/How-to-setup-Free-Shipping-with-minimum-amount-for-selected/td-p/17674
Terugkoppeling: Magento, Versand per Tabel-Tarieven & Rabattgutschein - alexander-steireif.com
Geweldig, het werkt zelfs in 1.5.1 🙂
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.
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.
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());
}
}
}
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
Hartelijk dank, dit heeft dit verwarrende probleem opgelost!
Werkt perfect in Magento 1.9.3.8
Ontzettend bedankt!!
Is er een oplossing voor Magento 2?