Jump to content

Comment limiter "Frais de port offert à partir de"


Recommended Posts

Bonjour,

J'ai 3 offres de transports : LettreMax, Colissimo et Chronopost.

Je viens de m'apercevoir que "Frais de port offert à partir de" s'applique sur tous les transporteurs, y compris Chronopost ! :-S

Comment faire pour que l'offre de gratuité ne s'applique pas sur les Chronopost ?

Merci !

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour,

moyennant un peu d'édition de la classe Cart.php on y arrive.

Dans mon cas, je veux limiter le frais offerts pour la France (id_zone = 6 chez moi) et Colissimo (id_carrier = 10) dans classes/Cart.php j'ai modifié les lignes 684 et 686 comme suit :

 if (isset($configuration['PS_SHIPPING_FREE_PRICE']) AND $orderTotal >= floatval($configuration['PS_SHIPPING_FREE_PRICE']) AND floatval($configuration['PS_SHIPPING_FREE_PRICE']) > 0 AND intval($id_zone) == 6 AND intval($id_carrier) == 10)
                       return $shipping_cost;
               if (isset($configuration['PS_SHIPPING_FREE_WEIGHT']) AND $this->getTotalWeight() >= floatval($configuration['PS_SHIPPING_FREE_WEIGHT']) AND floatval($configuration['PS_SHIPPING_FREE_WEIGHT']) > 0 AND intval($id_zone) == 6 AND intval($id_carrier) == 10)



Et j'ai bien un Chronopost payant et un Colissimo à 0€ si je fais un test ! (Dans ma config c'est offert au dessus d'un certain montant de commande)

Link to comment
Share on other sites

Sinon pour offrir les frais de transport que sur Chronopost tu peux faire:
transport
tranche de prix
nouveau
tu sélectionnes ton transporteur donc Chronopost
tu met la tranche que tu veux, ex 150€ à 10000€
enregistrer
tu va dans transport, tu sélectionnes ton transporteur en bas, genre Chronopost et la tu met les frais de ports, 0€ si tu veux les faire gratuit selon la tranche que tu auras définis.
et tu supprimes les frais de port offert.

Link to comment
Share on other sites

Le gros problème des tranches sur PS1.1 c'est que si tu travailles au poids (parce que c'est comme ça que tu es facturé par la poste & co), tu ne peux pas jouer avec les tranches de prix en même temps.

J'avais essayé de faire ça et le prix n'est pas pris en compte si tu coches 'Facturation : en fonction du poids global'.

Je voulais créer 3 transporteurs :
Gratuit : sur la france / et sur la tranche 70-10000€
Colissimo : france / tranche 0-70 mais facturé en fonction du poids
Chrono : france en fonction du poids

Impossible avec PS1.1

Link to comment
Share on other sites

  • 3 weeks later...

The new user group feature in 1.2.0.1
I have 2 groups:
Default without no discount and wholesale with 35% discount.

I also have free shipping by price (if they buy for £200 or more, shipping will be free)
What i dont want, is that i dont want the user logged in from the wholesale group to get free shipping on top of the 35% discount that he got) , so in another words trying to restrict the shipping to the default group only;

I was trying to play around the /classes/cart.php but no success, dont know what to add to the conditions:

if (isset($configuration['PS_SHIPPING_FREE_PRICE']) AND $orderTotal >= floatval($configuration['PS_SHIPPING_FREE_PRICE']) AND floatval($configuration['PS_SHIPPING_FREE_PRICE']) > 0)
return $shipping_cost;
if (isset($configuration['PS_SHIPPING_FREE_WEIGHT']) AND $this->getTotalWeight() >= floatval($configuration['PS_SHIPPING_FREE_WEIGHT']) AND floatval($configuration['PS_SHIPPING_FREE_WEIGHT']) > 0)
return $shipping_cost;

Link to comment
Share on other sites

  • 3 months later...
Bonjour,

moyennant un peu d'édition de la classe Cart.php on y arrive.

Dans mon cas, je veux limiter le frais offerts pour la France (id_zone = 6 chez moi) et Colissimo (id_carrier = 10) dans classes/Cart.php j'ai modifié les lignes 684 et 686 comme suit :

 if (isset($configuration['PS_SHIPPING_FREE_PRICE']) AND $orderTotal >= floatval($configuration['PS_SHIPPING_FREE_PRICE']) AND floatval($configuration['PS_SHIPPING_FREE_PRICE']) > 0 AND intval($id_zone) == 6 AND intval($id_carrier) == 10)
                       return $shipping_cost;
               if (isset($configuration['PS_SHIPPING_FREE_WEIGHT']) AND $this->getTotalWeight() >= floatval($configuration['PS_SHIPPING_FREE_WEIGHT']) AND floatval($configuration['PS_SHIPPING_FREE_WEIGHT']) > 0 AND intval($id_zone) == 6 AND intval($id_carrier) == 10)



Tres bonne idée et cela fonctionne bien. Est-ce possible d'ajouter plusieurs zones et transporteurs? J'ai essayé en ajoutant des virgules entre chaque zone/transporteur mais sans succes. Merci!

Link to comment
Share on other sites


Tres bonne idée et cela fonctionne bien. Est-ce possible d'ajouter plusieurs zones et transporteurs? J'ai essayé en ajoutant des virgules entre chaque zone/transporteur mais sans succes. Merci!


Oui c'est possible, il suffit de remplacer
AND intval($id_zone) == 6



par:

AND ((intval($id_zone) == 6) OR (intval($id_zone) == 7) OR (intval($id_zone) == 8))



Ce qui donne en français: "ET si (6 ou 7 ou 8)"

Pareil pour la zone, mais s'il y a un cumul important il vaut mieux décomposer/imbriquer les IF

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