Jump to content

[RESOLU] GROS problème avec les frais de transport et les tranches de poids :(


37°2

Recommended Posts

Bonsoir à tous et à toutes,

Je m'arrache les cheveux depuis deux jours à essayer de régler les frais de port :cheese:
Tous mes articles "test" de la boutique ont un poids de 250 Gr

J'ai donc créé, une tranche de poids, une tranche de prix, un transporteur (voir screenshots)
Quand je commande un article le port est de 5.30 EUR, jusque là pas de problème, dès le deuxième article commandé les problèmes commences car le port passe à 6.50 EUR hors qu'il devrait être encore de 5.30 EUR car la tranche des 500Gr n'a pas été dépassée.

Le troisième article mis dans le panier conserve un transport de 6.50 EUR, ce qui est normal, mais dès qu'un quatrième article est ajouté, le port dégringole sur la 1ère tranche de transport, c'est à dire, à 5.30 EUR. Tous les articles supplémentaires ajoutés dans le panier n'auront aucun effet sur le transport qui restera calé sur 5.30 EUR de frais de port depuis le quatrième article.

Vous l'aurez compris, je suis dans la panade et ai donc besoin d'un coup de main, une idée, une solution ;-)

Merci par avance de votre aide.

Cordialement

5152_RfiJkQPkyba9GekvKNGi_t

5153_qJ4awsz9ZPEcXVeNjfNt_t

5154_NdAEX08L6IJhVghhz3UT_t

5155_QPH1XNnSGtt6jzSoWZSg_t

Link to comment
Share on other sites

c'est vrai que ce n'est pas évident au premier abord... (il te reste des cheveux ?)

sinon, je vais essayer de t'aider : il y a plusieurs questions dans ton post

1.
250 + 250 = 500 : si tu passes dans la tranche supérieure, c'est peut-être parce qu'une déclinaison "rajoute" du poids, non ? tu as vérifié ?

2.
qu'as-tu mis dans "comportement des tranches" dans transporteurs ?
ceci peut expliquer le passage à la tranche inférieur lorsque le poids est dépassé.

3.
plus globalement, reprend bien tous les paramètres (es-tu certain d'avoir choisi le bon pays ?) par exemple, en ce qui me concerne, j'ai France FRANCE france etc... si chacun des "pays" France n'est pas paramétrés comme il se doit, tu risque de passer pour un étranger, et donc un autre transport. si le transporteur n'a pas été désactivé (comportement des tranches) le phénomène du retour au prix de la première tranche peut se produire. il y a plusieurs explications possibles. toutes ont trait à un mauvais paramétrage. et comme il y en a plusieurs, à différents endroits, l'erreur est vite là.

4.
rassures-toi : le module fonctionne bien. il est nénamoins assez difficile à maîtriser/paramétrer au début.

Link to comment
Share on other sites

vi. comme tu as pu le constater, ma réponse est un peu... complexe. (normal vu l'heure du post)

sinon, pour résume : comme ce traitement fait appel à plusieurs variables, et comme il suffit que l'une d'elle soit erronée pour fausser le résultat (ce qui t'arrive en fait), il faut être très méthodique. Mais comme dit plus haut, il y a de fortes chances pour que ce soit tes paramètres qui soient en cause. et pas le programme... ça rassure non ? a+
;-)

Link to comment
Share on other sites

Hello,

Alors j'ai tout refait, prix transport, articles test et aussi remis le poids en KILO !

Ca à l'air de bien fonctionner mise à part quand même le passage à la tranche de prix supérieur si les articles dans le panier sont égale au poids maximum d'une tranche.

De coup j'ai légèrement baisser le poids des articles, et ça passe correctement.

A++

Link to comment
Share on other sites

  • 1 month later...

oui, et moi, je suis bien dans la tranche inférieure, mais le prix calculé part de la tranche sup. pas normal ça.
ex :
tranches : 0-10 kg -- 10.01 - 20kg
produit : 10kg : la tranche 10.01-20 kg est prise en compte. c'est bien un bug.
si quelqu'un sait comment faire pour corriger cela... suis preneur.
tks.

Link to comment
Share on other sites

Bonjour,
Comme il s'agit de variables float, je me suis dit que c'est de ce côté là qu'il fallait chercher.
Il est simples de comparer des entiers, mais dans le cas de nombres flottants, lorsqu'ils sont le résultats de calculs c'est un peu plus compliqué.
10 en flottant, peut être égal à 9.999999 ou 10.000001, etc...les tests de comparaison peuvent donner n'importe quoi.

une solution :

comparer la différence des deux valeurs par rapport à une valeur très petite, 0.01 pour les prix, 0.001 pour les poids.

ou passer par des entiers en multipliant les nombres par 100 pour les prix, 1000 pour les poids, et en comparant les parties entières.

fichier concerné : prestashop\classes\Carrier.php
function getDeliveryPriceByWeight

checkDeliveryPriceByWeight

Je vais modifier le code et poster le résultat.

Link to comment
Share on other sites

Dans le code,
le prix (ou le poids du panier) doit être strictement inférieur à la valeur haute de la tranche, donc en cas d'égalité on passe à la tarification de la tranche supérieure.
Tout dépend du fonctionnement que l'on souhaite!

Pour les poids, modifier les lignes 117, 132, 171 et 186 du fichier classes\Carrier.php
changer les 2 lignes :

        AND '.floatval($totalWeight).' < w.`delimiter2`


par

        AND '.floatval($totalWeight).' <= w.`delimiter2`


changer les 2 lignes :

        AND '.floatval($orderTotal).' < r.`delimiter2`


par

        AND '.floatval($orderTotal).' <= r.`delimiter2`



La solution la plus simple pour ne pas avoir à modifier le code, est de choisir une valeur légèrement supérieure pour limite haute de la tranche.
Si la valeur limite supérieure de 10kg soit inclue dans la tranche de tarification, on met comme limite supérieure 10.001kg

Link to comment
Share on other sites

  • 2 years 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...