silencespr Posted January 19, 2011 Share Posted January 19, 2011 Hey guys i am loosing a lot of money in shipping on heavy items, is there a way or a module where i can set which product requires higher shipping cost? Lets say i have Free Shipping set to $200 thats fine if my items add up to lets say 20lbs and it cost me 15 bucks but some items that fall in to the 200 min order are 60lbs and i have to pay 60 bucks for shipping thats where i lose lots of money. Thank you. Link to comment Share on other sites More sharing options...
shokinro Posted January 19, 2011 Share Posted January 19, 2011 Maybe you already know. Just in case.you can charge shipping by product weight. You can set this at you back office Shipping tab.In this case, you need to set detailed weight range - charge list for each carrier. Also you need to input correct wight information at your product catalog. Link to comment Share on other sites More sharing options...
silencespr Posted January 20, 2011 Author Share Posted January 20, 2011 I already did that but if it states free shipping starts @ $200 then it ignores the extra heavy weight price..... i need to have it ignore the free shipping over $200 if one of the items is extra heavy. Link to comment Share on other sites More sharing options...
shokinro Posted January 20, 2011 Share Posted January 20, 2011 In this case, you will need some coding to make this happen.If someone is very familiar with the shipping calculation logic, then it might be not a difficult change.otherwise, it may tale a little time to figure out on how to make this changes.maybe I can take a look for you when I have time(maybe this weekend). Link to comment Share on other sites More sharing options...
shokinro Posted January 21, 2011 Share Posted January 21, 2011 I did some investigation, identified the location on how change the logic, but didn't test it. You can have it a try.Please try to replace following two lines in /classes/cart.php (line# 868/869 in PrestaShop 1.3.2.3) if ($orderTotalwithDiscounts >= floatval($free_fees_price) AND floatval($free_fees_price) > 0) return $shipping_cost; with following lines $hasOverWeightProduct = false; foreach ($products as $product)if($product['weight'] > 9999999) $hasOverWeightProduct = true; if ($orderTotalwithDiscounts >= floatval($free_fees_price) AND floatval($free_fees_price) > 0 AND !$hasOverWeightProduct) return $shipping_cost; Please note: You need to replace 9999999 to the real weight you want remove free shipping. Hope this works for you. Link to comment Share on other sites More sharing options...
Recommended Posts