Jump to content

[Résolu Sans Solution] Chronopost Gratuit Prestasho 1.4.10


Recommended Posts

Bonjour amis prestashopiens :)

 

J'ai un de mes clients qui est encore sous la version 1.4.10 de Prestashop et il aimerais offrir les frais de port à partir de 99€ mais le problème, c'est que lorsque je met les frais de ports Gratuit Chronopost se met également en gratuit. Mais le problème c'est que sur les version 1.5 je sais comment modifier ce problème mais pas avec la 1.4 est ce que quelqu'un aurais une petite idée pour m'aider à ne pas mettre les frais de port gratuit pour chronopost mais pour colissimo oui.

 

Merci à vous et bonne soirée :)

 

Cordialement

Raph

WebAlsaceInfo.fr

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

Dans classes->Cart.php

vers la ligne 1113:

remplacer:

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;

par

if ($orderTotalwithDiscounts >= (float)($free_fees_price) AND (float)($free_fees_price) > 0 AND $id_carrier==2)
			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 $id_carrier==2)
			return $shipping_cost;

en fin de ligne à la place du 2 mettez l'ID du transporteur gratuit à partir de 99€

 

Attention, si vous éditez le transporteur, l'ID change, donc bien penser à faire la modif.

Edited by Bondaty and Co (see edit history)
Link to comment
Share on other sites

Merci pour ta réponse Bondaty,

 

Par contre est ce que c'est bien pour la version de Prestashop 1.4.10 que tu m'as donner la solution ?

Car je ne trouve pas tes lignes dans le Classes/Cart.php

Voici ce que j'ai (fichier joint)

Cette solution, si je ne me trompe pas est totalement fonctionnel avec la version 1.5

Sachant également que mon client à ceci dans ses transporteur :

Les frais de port gratuit à partir de 99€sont pour Colissimo (France) uniquement pas les autres

 	47 	Chronopost - Livraison express à domicile 		Colis livré le lendemain matin avant 13h à votre domicile. La veille de la livraison, vous êtes averti par e-mail et SMS. 	
	48 	Chronopost - Livraison express à domicile 		Colis livré le lendemain matin avant 10h à votre domicile. La veille de la livraison, vous êtes averti par e-mail et SMS. 	
	49 	Chronopost - Livraison express à domicile 		Colis livré le lendemain matin avant 18h à votre domicile. La veille de la livraison, vous êtes averti par e-mail et SMS. 	
	50 	Chrono Express 		Colis livré en 1 à 3 jours vers l'Europe, en 48h vers les DOM et en 2 à 5 jours vers le reste du monde. 	
	51 	Chrono Classic 		Colis livré en 1 à 3 jours vers l'Europe. 
	54 	Chronopost -Livraison en point relais 		Colis livré le lendemain avant 13 h dans le relais Pickup de votre choix. Vous serez averti par e-mail et SMS. 
	56 	Colissimo International 		Livraison sous 10 jours ouvrés
	58 	Colissimo France 		Livraison sous 5 jours ouvrés 
	60 	Mondial Relay 		Livraison sous 5 jours ouvrés

Cart.php

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

Bon j'ai bien fais le changement c'est à dire :

Ligne : 1172 :

Ligne1171 : $free_fees_price = 0;
Ligne1172 :        if ($orderTotalwithDiscounts >= (float)($free_fees_price) AND (float)($free_fees_price) > 0 AND $id_carrier==58)

Et ligne : 1174 :

Ligne1174 : 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 $id_carrier==58)

Le problème, c'est que j'ai toujours tout les transporteurs qui sont gratuit après 99€ voici un screen :

express.png

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

un truc bizare, sur votre fichier, il manque:

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);

sous

$free_fees_price = 0; ligne 1171

Link to comment
Share on other sites

J'ai fait ceci à partir de la ligne 1171 :

$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 $id_carrier==58)
		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 $id_carrier==58)
			return $shipping_cost;

Ligne 1171 jusqu'a la ligne 1178

Mais c'est toujours identique FP gratuit pour tous

Link to comment
Share on other sites

  • 2 weeks later...

Bon après mûres réflexion avec mon client on a décider de désactiver le Transporteur Chronopost et au mois de Juin il va passer sur la 1.5  voir la 1.6. donc problème résolu dommage que nous n'avons pas trouvé de solution pour ce problème ;)

Link to comment
Share on other sites

Bon après mûres réflexion avec mon client on a décider de désactiver le Transporteur Chronopost et au mois de Juin il va passer sur la 1.5  voir la 1.6. donc problème résolu dommage que nous n'avons pas trouvé de solution pour ce problème ;)

 

 

Je découvre ce post sur le tard, mais j'ai pour habitude dans ce genre de situation de proposer au client un transporteur supplémentaire tout simple appelé par exemple "Transport Offert" .

Dans la desc du transporteur on met une petite phrase qui va bien genre Livraison 3 à 5 j en totossimo .... 

Ensuite on met une tranche de prix de 99 à 10000 et on indique pour ce nouveau transporteur que le comportement hors tranche doit désactiver le transporteur.

Le cas échéant on limite le transporteur à la zône concernée etc ... 

Si on veut offrir le transport uniquement en France, il suffit de créer une zône France avec France à l'intérieur .... 

On ajuste le tarif transporteur à 0 sur la tranche 99-10000 comme pour n'importe quel autre .

Au besoin on fixe ce nouveau transporteur comme étant le transporteur par défaut histoire qu'il soit prix en compte dans le bloc panier.

 

Evidemment on enlève toute gratuité dans la configuration des transporteurs en virant le fdp offerts à partir de ... 

 

Au final , dans le cas présent , le client qui commande en france et a pour plus de 99€ dans son panier va se voir proposer un transporteur gratuit.

Les autres transporteurs seront affichés au tarif courant. De cette manière le client conserve le choix de l'express.

S'il peut attendre,  clairement il choisira le transporteur gratuit. Ce n'est que moyennement handicapant de voir au dessus le transporteur utilisé avec un tarif réel. Ce qui intéresse le client c'est le délai et le tarif. Bref une solution sans modif de code qui marche à tous les coups.

 

Dans le cas ou on voudrait vraiment ne pas afficher le transporteur "payant" correspondant au transport offert, il est possible de surcharger ParentOrderController .

  • Like 1
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...