Pour une raison que j’ignore, je dois vous avouer ne pas avoir pris le temps de chercher dans le code de Prestashop afin de comprendre le pourquoi du comment, mais il arrive que les produits de votre boutique Prestashop affiche un prix de 0 dans les listings… alors que la fiche du produit en elle-même ne présent pas ce problème.

En fait j’ai menti :X, je sais pourquoi ces produits sont à 0 dans les listings et comment cela arrive. La raison que j’ignore c’est quel parti du cœur de Prestashop laisse cette mal-fonction se produire. Un jour prochain où je n’aurais rien à faire et ce n’est pas près d’arriver, je chercherai :) (si vous, qui lisez cet article connaissez la réponse à cette question, sentez-vous obligés de la partager SVP ;))

Si vous avez eu des produits avec des déclinaisons, que vous avez finalement remis en produit unique (sans combinaisons). La base de données, au niveau de la table produit, va conserver en cache un id_attribute (champ cache_default_attribute) alors que la déclinaison n’existe plus. La conséquence est la suivante : la fonction de récupération du prix de Prestashop va utiliser cet identifiant d’attribut (déclinaison) et ne trouvant rien retournera un prix à 0€ ($,£ etc…).

Pour gagner un peu de temps, voici les requêtes SQL  que j’ai utilisée :

UPDATE `_DB_PREFIX_product` SET `cache_default_attribute` = 0 WHERE `cache_default_attribute` != 0 AND  `id_product` NOT IN (SELECT `id_product` FROM `_DB_PREFIX_product_attribute`);

UPDATE `_DB_PREFIX_product_shop` SET `cache_default_attribute` = 0 WHERE `cache_default_attribute` != 0 AND  `id_product` NOT IN (SELECT `id_product` FROM `_DB_PREFIX_product_attribute`);

A vous de modifier ce qu’il faut 😉

A bientôt.

David