Jump to content

Les transporteurs et frais de port gratuit


Recommended Posts

Lorsqu'on met les frais de livraisons gratuit 
Dans mon cas à partir de 75€ 
 
Il est bien de pouvoir présélectionner le transporteur qui sera gratuit afin de ne pas proposer tous les autres gratuitement
 
Si mon mon client fait un achat de 100€ ; donc livraison gratuite 
 
Je veux lui proposer uniquement le service Colissimo Classique et non Chronopost ou TNT ou autres transporteurs qui sont proposés et surtout pas au même tarif
 
Donc afin de pouvoir le faire :
Dans classe --> fichier cart.php --> ligne 2702
 
A la place de : 
// Free fees
$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)
{
Cache::store($cache_id, $shipping_cost);
return $shipping_cost;
}


if (isset($configuration['PS_SHIPPING_FREE_WEIGHT'])
&& $this->getTotalWeight() >= (float)$configuration['PS_SHIPPING_FREE_WEIGHT']
&& (float)$configuration['PS_SHIPPING_FREE_WEIGHT'] > 0)
{
Cache::store($cache_id, $shipping_cost);
return $shipping_cost;
}
Mettre ce code : 
 // Free fees


  $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 intval($id_zone) == 9 AND intval($id_carrier) == 3)


   return $shipping_cost;


  if (isset($configuration['PS_SHIPPING_FREE_WEIGHT']) AND $this->getTotalWeight() >= (float)($configuration['PS_SHIPPING_FREE_WEIGHT']) AND (float)($configuration['PS_SHIPPING_FREE_WEIGHT']) > 0 AND intval($id_zone) == 9 AND intval($id_carrier) == 3)


   return $shipping_cost;
Ne pas oublier de changer « ($id_zone) == 9 » par votre N° ID de zone
Ainsi que le N° ID du transporteur pour le frais de port gratuit « ($id_carrier) == 3) »
 
 
J'ai essayé sur une version migré de la 1.4.11 vers la 1.6.0.5 et cela fonctionne impeccable 
 
Le post existait déjà à l'époque : il est ici 
 
 
Malgré que le code ci-dessus fonctionne j'arrive pas à faire fonctionner la variante suivante en l'ajoutant à la suite du code ci-dessus: 
"OR AND intval($id_zone)==YYY AND intval($id_carrier)== XXX ) " 

Afin qu'on puisse aussi choisir différent pays ... Car dans l'exemple pour moi la zone 9 correspond à France Metropolitaine .... Une zone que j'ai crée uniquement pour la France ( Il serait bien d'avoir différents pays)... 

 

Car les frais de livraison Colissimo international et Colissimo France ne sont pas les même

 
 
 
 
 
 
 

Share this post


Link to post
Share on other sites

  • 2 weeks later...

Bonjour,

 

Voilà le code que j'ai modifié (en fait le même que la version 1.5) et ca marche chez moi en 1.6.

 

// Free fees
$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  AND intval($id_carrier) == 62  AND intval($id_zone) == 6)
{
Cache::store($cache_id, $shipping_cost);
return $shipping_cost;
}
 
if (isset($configuration['PS_SHIPPING_FREE_WEIGHT'])
&& $this->getTotalWeight() >= (float)$configuration['PS_SHIPPING_FREE_WEIGHT']
&& (float)$configuration['PS_SHIPPING_FREE_WEIGHT'] > 0  AND intval($id_carrier) == 62  AND intval($id_zone) == 6)
{
Cache::store($cache_id, $shipping_cost);
return $shipping_cost;
}
 
 
Qui a l'air identique au tien.
Est ce les bons ID?

Share this post


Link to post
Share on other sites

Les ID chez moi sont ok ...

 

Le seul problème que j'ai c'était pour la variante 

"OR AND intval($id_zone)==YYY AND intval($id_carrier)== XXX ) " 

Quand je l'ajoute à la suite du code elle fonctionne apparemment pas !! 

Je voudrais juste savoir ou l'ajouter correctement 

Share this post


Link to post
Share on other sites

  • 2 months later...

 

Voilà le code que j'ai modifié (en fait le même que la version 1.5) et ca marche chez moi en 1.6.

 

 

Bonjour 

 

Il semblerait que depuis la version 1.6.0.8 le bout de code plus haut ne fonctionne plus .....

 

J'ai remis le fichier d'origine de la 1.6.0.8 pour voir si tout de même les frais gratuits annoncés à partir de XXXXX étaient pris en compte..... Et ça remarche bien sauf que bien évidemment sans le bout de code il est embêtant de voir tous les transporteurs gratuits 

 

 

Rencontrez vous le même soucis que moi ????

 

Et si quelqu'un pouvez nous trouver la modification de code à ajouter ça serait vraiment super car pour moi cette option est carrément vital ... 

 

 

Merci de votre soutien !! 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More