Jump to content

Impact sur le prix unitaire + déclinaison


Go to solution Solved by erouvier29,

Recommended Posts

Bonjour,

 

Version Prestashop : 1.6.1.13

Thème enfant du thème default

 

J'ai un problème sur mes déclinaisons produit, qui est sûrement un bug de presta.

 

J'ai 2 groupes de clients, "clients" et "pros". Les pros ont des avantages personnalisés par produit (prix modifié dans le produit, onglet "prix spécifique") et un affichage HT.

 

Hors les prix spécifiques fonctionnent bien sur un client, c'est à dire j'ai mon prix au litre qui change selon la déclinaison. Mais dès que je passe en pro, le prix de la déclinaison s'aligne sur celui des particulier, ça ne prend pas en compte ma réduction.

 

Exemple de produit : 

Pot de peinture

Prix HT : 42.08€

Prix TTC : 50.50€

Prix unitaire : 8.419999€ /L

 

Déclinaison : 

5L

Impact prix : 0

Impact poids : +5kg

Impact sur le prix unitaire : 0

Pro : -32.04%

15L

Impact prix : +75.67€ HT

Impact poids : +15kg

Impact sur le prix unitaire : -0.57€ /L

Pro : -33.25%

 

Résultat :

post-839847-0-53280700-1503050154_thumb.png

 

Hors je devrais avoir 5.24€ /L.

Le problème se situe sûrement dans le fichier theme/mon_theme/js/product.js vers ligne 780

var unit_impact = +combination.unit_impact;
	if (productUnitPriceRatio > 0 || unit_impact)
	{
		if (unit_impact)
		{
			console.log('unit_impact:'+unit_impact);
			baseUnitPrice = productBasePriceTaxExcl / productUnitPriceRatio;
			console.log('productBasePriceTaxExcl:'+productBasePriceTaxExcl);
			console.log('productUnitPriceRatio:'+productUnitPriceRatio);
			console.log('baseUnitPrice (productBasePriceTaxExcl/productUnitPriceRatio):'+baseUnitPrice);
			unit_price = baseUnitPrice + unit_impact;
			console.log('unit_price(impact):'+unit_price);

			if (!noTaxForThisProduct || !customerGroupWithoutTax){
				unit_price = unit_price * (taxRate/100 + 1);
				console.log('unit_price(impact+tax):'+unit_price);
			}
		}
		else{
			unit_price = priceWithDiscountsDisplay / productUnitPriceRatio;
			console.log('unit_price(no_impact):'+unit_price);
		}
	}

Malgré mes console.log je ne vois vraiment pas. Le soucis vient sûrement du fait que j'utilise les prix particulier, et le prix au L ne change dont pas ? Pourtant le résultat est plutôt incohérent, un prix au L plus élevé mais un prix final plus faible..

 

Merci de votre aide !

 

 

Share this post


Link to post
Share on other sites

Il y a deux erreurs dans product.js du thème par défaut:

Les taxes sont appliquées au prix unitaire même si l'affichage est HT

La réduction éventuelle n'est pas appliquée.

 

Cf. PR https://github.com/PrestaShop/PrestaShop/pull/8262

 

Vous pouvez adapter le product.js de votre thème comme ci-dessus.

 

Merci pour ta réponse et pour ton lien !

 

J'ai appliqué les changements, maintenant au lieu d'avoir 9.42€/L j'ai -253.16€/L sur mon produit 15L (déclinaison qui subit un -0.57€/L)

 

J'ai l'impression que le -0.57 n'est pas calculé, mais qu'il prend une sorte de "différence" entre le prix final et le prix au litre par défaut, la variable productUnitPriceRatio. Du coup ce ratio est toujours à 5 chez moi peut importe le prix final et le prix au litre du produit, cette variable ne change jamais, et donc le résultat final ne change pas.

 

Je pense que c'est cette variable qui est mauvaise, sauf qu'elle n'est pas instanciée dans le JS, elle doit être dans le controlleur.

Share this post


Link to post
Share on other sites

Une URL?

 

J'ai envoyé un MP avec un lien ainsi qu'un identifiant de connexion sur le frontoffice en tant que client "Pro" et donc avec les réductions.

Merci pour ton aide !

Share this post


Link to post
Share on other sites

 

Oops, c'est de ma faute!

il manquait un /100:

unit_price = unit_price*(1 - discountPercentage/100);

 

Fantastique !

 

Merci encore, je suis toujours surpris par le niveau des dév Presta, j'aurais pu y passer des semaines.

Je marque en résolu, merci beaucoup.

  • Like 1

Share this post


Link to post
Share on other sites
  • 1 month 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...

Important Information

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