Prestashop 1.7.1 | Set shipping cost as a percentual of total shopping cart

December 14th, 2017

This time i need to add a feature to prestashop for set shipping cost as a percentual of total shopping cart.

Our customer, wants that , if cart is under 500€ , shipping cost are equal to 10% of shopping cart amount, else shipping is free.

First set free shipping, go on Admin -> Shipping -> Preferences, and set amount on Shipping Options.

Second, we need to override the Cart.php class.

Download and open Cart.php from /classes folder

Immediately after

$shipping_cost = (float)Tools::ps_round((float)$shipping_cost, 2);

comment this line

//Cache::store($cache_id, $shipping_cost);

and add

$shipping_cost = 0; // set shipping cost to 0
$orderTotal = $order_total; // Retrive total order value
$pctShipping = .10; //whatever you want your percentage to be
$shipping_cost = floatval($orderTotal * $pctShipping); // Calculate the shipping cost
Cache::store($cache_id, $shipping_cost); // Set new shipping cost in cache

Save the file and upload with ftp on:

/override/classes

** Important, the file must have name Cart.php
** Important don’t rewrite Cart.php that you find in /classes folder, because if you update something it will be rewrite.

That’s all.