Jump to content

[RÉSOLU] Erreur de filtrage avec les tarifs sans TVA sur le frontoffice (Prestashop 1.3.1)


Recommended Posts

Bonjour amis développeurs, je viens de découvrir une coquille dans la gestion des produits de Prestashop v1.3.1.

Si l'on enregistre des produits sans TVA, la méthode Category->getProducts() n'arrive pas à calculer le prix utilisé pour le tri. Donc si sur le frontoffice l'internaute choisi de trier par prix, cela ne marche pas !

Pour palier à ce problème je vous propose une rustine, en espérant que les ingénieurs de Prestashop corrigeront ce bug dans les prochaines versions :

Fichier classes/Category.php
Méthode getProducts()
Ligne 396, remplacer la ligne suivante:

(p.`price` * ((100 + (t.`rate`))/100) - IF((DATEDIFF(`reduction_from`, CURDATE()) <= 0 AND DATEDIFF(`reduction_to`, CURDATE()) >=0) OR `reduction_from` = `reduction_to`, IF(`reduction_price` > 0, `reduction_price`, (p.`price` * ((100 + (t.`rate`))/100) * `reduction_percent` / 100)),0)) AS orderprice



par:

(p.`price` * ((100 + IF (t.`rate`, t.`rate`, 0))/100) - IF((DATEDIFF(`reduction_from`, CURDATE()) <= 0 AND DATEDIFF(`reduction_to`, CURDATE()) >=0) OR `reduction_from` = `reduction_to`, IF(`reduction_price` > 0, `reduction_price`, (p.`price` * ((100 + IF (t.`rate`, t.`rate`, 0))/100) * `reduction_percent` / 100)),0)) AS orderprice



Petites explications:
si t.rate n'existe pas (l'utilisateur n'a pas appliqué de TVA au produit), on a:
p.price * (100 + NULL) / 100 = NULL

Après avoir appliqué la correction, le calcul devient:
p.price * (100 + 0) / 100 = p.price

Donc au final notre champ orderprice vaudra p.price et non pas NULL et le ORDER BY pourra effectuer le tri \o/
La preuve sur http://www.laperle-bijoux.com/8-bagues

Link to comment
Share on other sites

  • 4 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...