Jump to content

Frais de port gratuit


Recommended Posts

Bonjour,

 

Voila j'ai une boutique Prestashop 1.4.4.1 et j'ai un soucis avec les frais de port.

Dans ma boutique si vous achetez pour 60€ les frais de port deviennent gratuit. Cependant je propose plusieurs style de frais de port : sans suivi, avec suivi et colissimo.

Du coup, lorsqu'un client atteint les 60€ il a les 3 modes de livraison gratuit. Et c'est la que je dois changer les paramètres. Je voudrais que seul le mode sans suivi soit gratuit. Et c'est impossible. Il faut que je rajoute un module.

 

Du coup est ce que quelqu'un connais un module qui permets de faire cela?

 

Je vous remercie par avance.

 

Xavier.

Link to comment
Share on other sites

  • 1 month later...

Bonjour,

 

Voici la solution pour offrir les frais de port à partir d’un certain montant (par exemple 99€) avec un transporteur unique (exemple colissimo) et dans une zone unique (exemple France). Modification valable pour la version 1.4.6.2 et les précédentes.

 

Vous devez d’abord créer vos transporteurs, vérifier les zones, paramétrer le frais de port gratuit à partir de 99€ par exemple, ensuite veuillez repérer l’ID de la zone où vous souhaitez offrir le port, ainsi que l’ID du transporteur qui prendra en charge le transport gratuit.

 

Dans le dossier « classes », ouvrir « Cart.php », voici les lignes qui nous intéressent (à la ligne 1118 environ) :

  // 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)
  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)
  return $shipping_cost;

 

Veuillez modifier par ce qui suit :

  // 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) »

 

Sa aidera pas mal de gens car je vois que personne n’avait vraiment de réponse :)

 

Cordialement

Link to comment
Share on other sites

  • 3 weeks later...

Je tiens à te remercier TRES chaleureusement car tu as sauvé mon pc (je menaçais de le passer par la fenêtre! :lol:)

 

Travaillant avec plusieurs pays, je souhaitais proposer un franco de port à plusieurs destinations et non à une seule.

 

J'ai donc apporté une variante à ton bout de code en ajoutant :

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

(remplacer YYY et XXX par les zones et transporteurs du second pays)

 

Après test, cela a l'air de fonctionner :)

Link to comment
Share on other sites

  • 1 month later...

Version Prestashop 1.4.6.2

Whaouu franchement un grand merci à MasterS ca ssure trop ton bout de code B)

Je tiens à dire que j'aime la qualité du post clair et précis et que ca marche nickel ...

 

Ca fait plaisir merci beaucoup ...

 

Et pour ta solution ml7500 j'ai pas encore testé mais je vais mettre plusieurs proposition de transporteurs pour l'Europe et donc je pense m'en servir aussi si ça marche ... Je tiendrais au courant B)

 

Merci à tous les deux

Link to comment
Share on other sites

  • 4 weeks later...

Bonjour,

 

Depuis ma MAJ en 1.4.7 le bout de code donné plus haut n'a plus l'air de fonctionner. :wacko:

Si je met pas votre bout de code dès 60€ d'achat tous mes transporteurs deviennent gratuit.

Et lorsque je met le bout de code dans Cart.php en prenant soin de bien paramétrer zone et carrier je n'ai plus les frais de port offert à partir de 60€ ....

Résultat l'un comme l'autre je suis coincé ... :unsure:

 

Si vous aviez une solution je suis preneur

 

Merci d'avance

 

Petite correction j'ai changé ma BDD et ce n'est apparemment pas la version 1.4.7 qui pose problème mais le module Chronopost qui fout la merde...

Donc je confirme que le bout de code marche aussi sur la 1.4.7 de Prestashop

Link to comment
Share on other sites

Je tiens à te remercier TRES chaleureusement car tu as sauvé mon pc (je menaçais de le passer par la fenêtre! :lol:)

 

Travaillant avec plusieurs pays, je souhaitais proposer un franco de port à plusieurs destinations et non à une seule.

 

J'ai donc apporté une variante à ton bout de code en ajoutant :

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

(remplacer YYY et XXX par les zones et transporteurs du second pays)

 

Après test, cela a l'air de fonctionner :)

 

Bonjour ml7500

 

Je voulais savoir si tu peux me dire ou faut t'il ajouter ton bout de code.

Ca ne marche pas comme avec pour la zone France avec 1 transporteur choisi

J'ai pas d'erreur de syntaxe mais ca fonctionne pas

 

Je voudrais faire pareil mais avec la zone hors France métropolitaine "Europe" et le service Colissimo International offert dès 60€ d'achat...

J'ai le code comme ci dessous si tu y voie une erreur des fois :

 

// 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) == 18)

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) == 18)

return $shipping_cost;

"OR AND intval($id_zone)== 1 AND intval($id_carrier)== 14 ) " ;

 

 

Merci

Link to comment
Share on other sites

  • 2 weeks later...

Bonsoir tout le monde,

 

voilà je me heurte un petit problème avec les frais de port gratuit, je voudrais offrir le transport au client à partir de 150€ donc avec la solution donné ci-dessus pas de soucis concernant le montant a atteindre et la zone ou je veux effectuer cette offre, par contre je vends aussi des articles qui ont un montant supérieur a 150€ sur les quel je marge très peu et qu'il me coute un bras quand j'expédie, et c'est là que le problème intervient puisque même en ajoutant des frais de port supplémentaire sur ces articles encombrants, le transport est toujours gratuit au dessus de 150€.

 

Est ce que vous auriez une solution a mon problème? en vous remerciant.

 

Cordialement Tchupa.

Link to comment
Share on other sites

  • 1 month later...

Concernant la configuration du franco de port, nous avons développé un petit module qui utilise dans les grandes lignes le même principe que le code donné par masterS mais permet de gérer également les groupes clients et le multi règles.

 

par exemple :

je veux un franco de port à 150€ pour la france, chronopost et mes clients "Professionnels"

ou

je veux un franco de port à 90€ pour la france, colissimo et mes clients "Default"

 

on peut ainsi cumuler plusieurs règles de franco différentes en fonction de la zone, du transporteur ou du groupe client.

Link to comment
Share on other sites

  • 4 months later...

Bonjour,

 

je n'ai toujours pas trouvé de solution a mon problème ci - dessus concernant les articles encombrants....

 

Posté 17 avril 2012 - 04:58

Bonsoir tout le monde,

 

voilà je me heurte un petit problème avec les frais de port gratuit, je voudrais offrir le transport au client à partir de 150€ donc avec la solution donné ci-dessus pas de soucis concernant le montant a atteindre et la zone ou je veux effectuer cette offre, par contre je vends aussi des articles qui ont un montant supérieur a 150€ sur les quel je marge très peu et qu'il me coute un bras quand j'expédie, et c'est là que le problème intervient puisque même en ajoutant des frais de port supplémentaire sur ces articles encombrants, le transport est toujours gratuit au dessus de 150€.

 

Est ce que vous auriez une solution a mon problème? en vous remerciant.

 

Cordialement Tchupa.

 

 

Quelqu'un pourrait me venir en aide?

 

Merci.

 

Cordialement.

Link to comment
Share on other sites

Bonsoir tous le monde,

je créer une boutique PS en local, je souhaite comme beaucoup restreindre la gratuité des frais de port à la France

j'ai modifié mon fichier "cart" comme l'a clairement expliqué MasterS un peut plus haut

mais lorsque je rafraichis ma page pour voir si la modif a bien fonctionné ... je me retrouve avec une page blanche !

 

je suis sur PS 1.4.9

 

Merci d'avance

Link to comment
Share on other sites

Bonjour Vincent,

cela vient surement d'une erreur de syntaxe.

Le code a peut être été légèrement modifier entre les version 1.4.5 et 1.4.9.

 

Tu peux copier ce code est le remplacer dans ton fichier cart.php (que tu trouveras dans le dossier classes).

 

Pense à bien remplacer l'id de la zone et du carrier (pour moi c'est 6 et 21).

 

// 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) == 6 AND intval($id_carrier) == 21)
  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) == 6 AND intval($id_carrier) == 21)
  return $shipping_cost;

 

De mon côté (en 1.4.9) ça fonctionne.

Link to comment
Share on other sites

  • 4 weeks later...

Bonsoir tout le monde,

 

voilà je me heurte un petit problème avec les frais de port gratuit, je voudrais offrir le transport au client à partir de 150€ donc avec la solution donné ci-dessus pas de soucis concernant le montant a atteindre et la zone ou je veux effectuer cette offre, par contre je vends aussi des articles qui ont un montant supérieur a 150€ sur les quel je marge très peu et qu'il me coute un bras quand j'expédie, et c'est là que le problème intervient puisque même en ajoutant des frais de port supplémentaire sur ces articles encombrants, le transport est toujours gratuit au dessus de 150€.

 

Est ce que vous auriez une solution a mon problème? en vous remerciant.

 

Cordialement Tchupa.

 

Quelqu'un aurait une idée? ou un module a me proposer ?

 

En vous remerciant.

 

Cordialement.

Edited by Tchupa (see edit history)
Link to comment
Share on other sites

  • 1 month later...

Petite interrogation = petit post

 

Sauriez vous comment faire pour choisir un montant différent ....

Exemple : Pour la France je fais la gratuité des frais de port dès 75€ d'achat ceux ci est paramétrable dans Presta pas de soucis

Avec le bout de code du début je peux même définir le Transporteur et la Zone des les 75€

 

Quelqu'un aurait un bout de code supplémentaire à ajouter pour que par exemple

 

L'italie Zone1 -->(Europe) je pourrais choisir la gratuité dès 100€ d'achat

Pour le Canada Zone3--> je pourrais choisir la gratuité dès 175€ d'achat

 

Les prix colissimo devenant plus chère à l'étranger, la gratuité c'est bien mais faut aussi l'adapter ... B)

 

Si vous avez une réponse je suis preneur

Merci de votre soutien !!

Link to comment
Share on other sites

  • 3 weeks later...
  • 2 months later...

Petite interrogation = petit post

 

Sauriez vous comment faire pour choisir un montant différent ....

Exemple : Pour la France je fais la gratuité des frais de port dès 75€ d'achat ceux ci est paramétrable dans Presta pas de soucis

Avec le bout de code du début je peux même définir le Transporteur et la Zone des les 75€

 

Quelqu'un aurait un bout de code supplémentaire à ajouter pour que par exemple

 

L'italie Zone1 -->(Europe) je pourrais choisir la gratuité dès 100€ d'achat

Pour le Canada Zone3--> je pourrais choisir la gratuité dès 175€ d'achat

 

Les prix colissimo devenant plus chère à l'étranger, la gratuité c'est bien mais faut aussi l'adapter ... B)

 

Si vous avez une réponse je suis preneur

Merci de votre soutien !!

 

 

Toujours personne pour un ptit coup de code ??

Je ne voie pas comment faire pour définir ca en PHP :wacko:

Link to comment
Share on other sites

  • 1 year later...

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 !! 

Et je pense surtout à toi MasterS car tu avais déjà donné la solution.... 

Un Come Back de toi serais super !!!!

 

Sa aidera pas mal de gens car je vois que personne n’avait vraiment de réponse :)

Link to comment
Share on other sites

  • 5 months later...

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
×
×
  • Create New...