Jump to content

[Solved] Free Shipping Problem


Recommended Posts

I have a free shipping problem I hope someone has an easy fix for..

 

I have 2 shippers, standard and express. I set up free shipping at $50 and I only want standard to be free and to leave express as an option to select and pay extra for.

 

Right now when someone hits $50 it allows them to select either for free, which kicks my profit margin in the nads when they select express (which is like 2-day) instead of standard (which is like 5-7)

 

So.. if someone adds $50 to their cart, how do I give them free standard and let them select express for additional charge?

 

Thanks,

SC

Edited by SuperCharlie (see edit history)
  • Like 1
Link to comment
Share on other sites

it seems a small bone, but sometime it is not easy. <_<

 

Please try following

1. Remove free shipping from store level (Shipping tab) by setting it to 0

2. Use price range to set 0 for order more than $50 at your standard carrier

3. Use price range to set different shipping price for different order amount range

 

hope this helps :)

  • Like 1
Link to comment
Share on other sites

Thank you both Shokinro and Razaro. I will try the shipper config first from Shokinro as I like to try and keep the base unmodded if at all possible but if that wont do I think the bones you through out Razaro will do the trick if I nee to get dirty in the code. Either way, I will post up here as to what I ended up doing and my particulars in hopes it will help someone else down the road.

 

Again.. thanks!

SC

Link to comment
Share on other sites

Ok.. since I have a very weird shipping scheme (its very convoluted with weights and prices and other weirdness) I tried many flavors of making the inherent thing work but ended up using the code hack from Razaro. If I had a more straight forward shipping scheme I think I could have made a new "free" carrier work, but since I add a per-product amount it ended up either being always available and allowing free or adding my per-item fee and having an order with like 3 items and $1.50 for shipping.

 

Here is the code from the links that I used..

Worked for 1.4.8.2

 

classes/Cart.php

replace A-ID with carrier ID, multiples with a comma between them.. eg:

$disable_freeshipping = array(27)

$disable_freeshipping = array(27,39,44)

You can find your carrier ID by hovering over the delete button for that carrier and looking at the url or clicking edit and looking at the url.

 

$disable_freeshipping = array(A-ID);

$free_fees_price = 0;
 if (isset($configuration['PS_SHIPPING_FREE_PRICE']))
  $free_fees_price = Tools::convertPrice((float)($configuration['PS_SHIPPING_FREE_PRICE']), Currency::getCurrencyInstance((int)($this->id_currency)));
 $orderTotalwithDiscounts = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING);
 if ($orderTotalwithDiscounts >= (float)($free_fees_price) AND (float)($free_fees_price) > 0 AND !in_array($id_carrier, $disable_freeshipping))
  return $shipping_cost;
 if (isset($configuration['PS_SHIPPING_FREE_WEIGHT']) AND !in_array($id_carrier, $disable_freeshipping) AND $this->getTotalWeight() >= (float)($configuration['PS_SHIPPING_FREE_WEIGHT']) AND (float)($configuration['PS_SHIPPING_FREE_WEIGHT']) > 0)
  return $shipping_cost;

 

 

In any case.. I thank you both for your input.

SC

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Hello

I am new to PS and just try in my test site about 2 weeks ago.

 

i am using 1.5.1.0 and I have trouble with Shoppping cart summary.

 

My Cart Rule is to give free shipping for purchase above RM150. Purchase below that will have shipping cost. But when I try with test product, the Free Shipping is appear but in the same time, it calculate the shipping cost.

 

Where should i fix to stop calcutate shpping cost for purchase above RM150?

 

Thanks

 

error+shipping.jpg

Link to comment
Share on other sites

  • 2 months later...

Hi! I'm running prestashop 1.5.2 and I had this same problem. I finally figured it out thanks to everyones help.

 

Note: My shop has free shipping at $75 not $50. The 1st picture is when the cart has less than $75 and the last picture is when the cart totals over $75

 

 

Step 1: Set all handling and shipping to 0

 

Step 2 : Set up price ranges for each carrier 0 to $49.99 and 50.00 to 1000000000+

 

Step 3: Go to each zone and define a shipping rate based on each price range $0-49.00= $5.95 and $50-100000000+ = $0.00

 

Step 4: For express mail (3-day shipping) set your range to 0-1000000000+ and just set the shipping to your specific price $24.95

 

Done!

 

post-383927-0-85129700-1357106661_thumb.png

 

post-383927-0-23429200-1357107047_thumb.png

 

post-383927-0-70794100-1357106738_thumb.png

 

post-383927-0-94355700-1357107411_thumb.png

 

post-383927-0-16063700-1357108212_thumb.png

 

post-383927-0-69267100-1357108212_thumb.png

 

post-383927-0-05272800-1357107124_thumb.png

  • Like 1
Link to comment
Share on other sites

I didn't set any cart rules. Just price ranges. If people pay up to $74.99 their shipping is $5.95. If they pay $75 or more their shipping range switches to $0.00 (Free). That is just for US ground shipping (carrier). I set the 3-day shipping (carrier) to only be allowed for North America (done in zones) and then set the price range for that to cover all price ranges $0.00 to 10e+14 (the highest number prestashop will allow). So now only people purchasing in North America will be offered 3-day shipping and no matter what their cart totals, they will always have to pay $24.95 if they select 3-day shipping. (which is really 1-2 day shipping so it's guaranteed to be there on time.) The tutorial is a step by step guide of everything I did.

  • Like 1
Link to comment
Share on other sites

I don't want any free shipping, period. How do I get the cart to not display "Free shipping!" when a user is just shopping? I am only using UPS as a carrier and I have the options in the back office off like they say to:

 

2013-01-03_2317.png

 

 

Thank you in advance!

 

Hi! Yes you just set free shipping to 0. But you still need to set up your price ranges for each carrier seperately. Or you can just set "handling charges" to whatever shipping price you would like, which will apply to every carrier.

Link to comment
Share on other sites

thanks for the quick reply ...

 

But these settings did not take away "Free Shipping!" from displaying in the cart when a visitor, who is not logged in, adds an item to the cart.

 

I just simply want $0.00 to display until a user has chosen a shipping method. I made UPS Ground the default carrier but that doesnt seem to do anything either. :/

 

Thanks!

Link to comment
Share on other sites

thanks for the quick reply ...

 

But these settings did not take away "Free Shipping!" from displaying in the cart when a visitor, who is not logged in, adds an item to the cart.

 

I just simply want $0.00 to display until a user has chosen a shipping method. I made UPS Ground the default carrier but that doesnt seem to do anything either. :/

 

Thanks!

 

 

For now, I've removed the "Free shipping!" words from 2 templates and simply forced it to be 0.00

 

Not ideal, but it'll do in a pinch as this site needs to go live tomorrow.

Link to comment
Share on other sites

thanks for the quick reply ...

 

But these settings did not take away "Free Shipping!" from displaying in the cart when a visitor, who is not logged in, adds an item to the cart.

 

I just simply want $0.00 to display until a user has chosen a shipping method. I made UPS Ground the default carrier but that doesnt seem to do anything either. :/

 

Thanks!

 

Hi. I'm sorry, I didn't understand your dilemma. I think Prestashop sets it to "free" because it's usually more practical for customers to see free instead of $0.00. However I understand now what you are trying to do. You can try setting a base price so that instead of seeing free, they see something like $5.95 for all shipping carriers. Even if your shipping is based on weight, your customers will be able to know how much the lowest possible shipping will cost.

Link to comment
Share on other sites

  • 3 months later...

Hi! I'm running prestashop 1.5.2 and I had this same problem. I finally figured it out thanks to everyones help.

 

Note: My shop has free shipping at $75 not $50. The 1st picture is when the cart has less than $75 and the last picture is when the cart totals over $75

 

 

Step 1: Set all handling and shipping to 0

 

Step 2 : Set up price ranges for each carrier 0 to $49.99 and 50.00 to 1000000000+

 

Step 3: Go to each zone and define a shipping rate based on each price range $0-49.00= $5.95 and $50-100000000+ = $0.00

 

Step 4: For express mail (3-day shipping) set your range to 0-1000000000+ and just set the shipping to your specific price $24.95

 

Done!

 

post-383927-0-85129700-1357106661_thumb.png

 

post-383927-0-23429200-1357107047_thumb.png

 

post-383927-0-70794100-1357106738_thumb.png

 

post-383927-0-94355700-1357107411_thumb.png

 

post-383927-0-16063700-1357108212_thumb.png

 

post-383927-0-69267100-1357108212_thumb.png

 

post-383927-0-05272800-1357107124_thumb.png

Thanks you.

Its solve my problem.

Link to comment
Share on other sites

  • 5 months later...
  • 1 month later...
  • 5 months later...
  • 3 months later...

Hi there...

 

i'm using prestashop 1.4.6.2.  and i know i should upgrade soon.

 

but before i do that.

 

i have a question

 

is there a way when i sell a specific product likes  a t-shirt for example.

 

1. when the customer puts in the cart 3 t-shirt... and only these 3 t-shirt in the cart.  then he gets free shipping
 

2. i want to limit the free shipping up to 2 KG and then it's not free any more. it becomes express...

 

 

 

is there a way to do it in 1.4.6.2 and in the latest version

 

thanks

 

gidi israeli

 

Link to comment
Share on other sites

  • 1 year later...
  • 5 weeks later...

inspired by @SuperCharlie but for prestashop 1.6.1

$enable_freeshipping = array(8);
$free_fees_price = 0;
if (isset($configuration['PS_SHIPPING_FREE_PRICE'])) {
$free_fees_price = Tools::convertPrice((float)$configuration['PS_SHIPPING_FREE_PRICE'], Currency::getCurrencyInstance((int)$this->id_currency));
}
$orderTotalwithDiscounts = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING, null, null, false);
if ($orderTotalwithDiscounts >= (float)($free_fees_price) && (float)($free_fees_price) > 0 && in_array($id_carrier, $enable_freeshipping)) {
Cache::store($cache_id, $shipping_cost);
return $shipping_cost;
}
if (isset($configuration['PS_SHIPPING_FREE_WEIGHT']) && in_array($id_carrier, $enable_freeshipping)
&& $this->getTotalWeight() >= (float)$configuration['PS_SHIPPING_FREE_WEIGHT']
&& (float)$configuration['PS_SHIPPING_FREE_WEIGHT'] > 0) {
Cache::store($cache_id, $shipping_cost);
return $shipping_cost;
}
Edited by VincentBlouin (see edit history)
Link to comment
Share on other sites

  • 5 weeks later...
  • 10 months later...

Hello.

Im relatively new to Prestashop and am having difficulty setting a specific free shipping at a specific price for a specific carrier.

We use FeEx as our Carrier and having all the different shipping methods for FedEx we want to offer free shipping for FedEx Ground but ONLY if the order is more than 150$. I have tried doing this a thousand ways and either it comes up as free shipping for every type of carrier at 150$ or it doesnt come up at all. I could really use some assistance on this.

Thanks.

  • Like 1
Link to comment
Share on other sites

  • 2 months later...
×
×
  • Create New...