0

Having an issue at the moment with free delivery on my site.

It is set that any order over £70 gets Free UK Delivery.

However at the moment we are running a discount code with another client set up. They get 33% discount. Orders that are originally around £85 are being discounted to £56.95 and they are still allowed free delivery at that price. It seems that free delivery uses the subtotal after discount rather than before. Is there a quick fix for this, as it is happening quite a lot.

Actions and conditions images:

enter image description here

enter image description here

I have even got the free shipping set to no and its still allowing free shipping.

Im on version 1.9.2, also any advise on weather this rule is setup correctly would be appreciated.

Ive checked out https://www.demacmedia.com/magento-commerce/mini-tutorial-how-to-solve-the-free-shipping-minimum-subtotal-with-discount-issue/ but thats for an older version and dont think that applies anymore.

  • Hi, I had a look at the suggested fix. Although the fix is noted for magento 1.7, the code in question as noted by that guide, is still the same. The same fix will apply. I cannot comment on the actual fix, not tried it. no idea if it works. Naturally you don't want to go edit the core files. – ProxiBlue Oct 27 '16 at 15:11
0

yes free shipping model check for the BaseSubtotalInclTax.

File: Mage_Shipping_Model_Carrier_Freeshipping.php

public function collectRates(Mage_Shipping_Model_Rate_Request $request)
    {
        if (!$this->getConfigFlag('active')) {
            return false;
        }

    $result = Mage::getModel('shipping/rate_result');

    $this->_updateFreeMethodQuote($request);

    if (($request->getFreeShipping())
        || ($request->getBaseSubtotalInclTax() >=
            $this->getConfigData('free_shipping_subtotal'))
    )//here they check for the subtotal
    {
        $method = Mage::getModel('shipping/rate_result_method');

        $method->setCarrier('freeshipping');
        $method->setCarrierTitle($this->getConfigData('title'));

        $method->setMethod('freeshipping');
        $method->setMethodTitle($this->getConfigData('name'));

        $method->setPrice('0.00');
        $method->setCost('0.00');

        $result->append($method);
    }

    return $result;
}

You can override this Model and change it to total.

another way :

You can play with salesrule_validator_process event.

  • Cant this be done in the admin panel rather than modifying the code ? – MrJoshFisher Oct 27 '16 at 15:20
  • I dont think from admin panel your query can be achieve. Because you want to apply shipping to total but according to code it applies to subtotal and there is no extra condition for any admin panel action. – Gopal Patel Oct 27 '16 at 21:42
0

You need to modify the collectRates method of freeshipping for this issue.

For this copy Mage_Shipping_Model_Carrier_Freeshipping.php in local folder with same directory combination.

and replace this condition ::

if (($request->getFreeShipping())
    || ($request->getBaseSubtotalInclTax() >=
        $this->getConfigData('free_shipping_subtotal'))
)

With

if (($request->getFreeShipping())
    || ($request->getPackageValueWithDiscount() >=
        $this->getConfigData('free_shipping_subtotal'))
)
0

The cleanest way to do this is extend out Mage_SalesRule_Model_Rule_Condition_Address to add "Subtotal with Discount" as a condition options.

See shopping cart price rule condition based on final price rather than subtotal

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.