Lors de la maintenance mensuelle de notre client spécialisé dans la vente de filet et toiles d’ombrage, nous avons observé des erreurs dans les fichiers de logs de Pretashop:

SELECT MAX(delivery_time) AS delivery_time FROM  ` ps_totshippingpreview` WHERE id_product IN () LIMIT 1 ;
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘) LIMIT 1’ at line 1 ;

Il s’agit manifestement du module totshippingpreview utilisé dans sa version 2.0.0 sur une version Prestashop 1.7.

En analysant le code,  nous nous sommes aperçus que cela arrive, lorsque nous sommes sur la page du panier et que nous supprimons le dernier produit présent dans le panier. Aucune erreur n’est visible mais ce message est généré dans les fichiers de logs.

Afin d’éviter cette erreur, voici la correction que nous avons partagé avec le développeur du module :

/modules/totshippingpreview/ajax.php l.27

$result = 0;
 if (!empty($id_products)) {
 $sql = 'SELECT MAX(delivery_time) AS delivery_time FROM `'._DB_PREFIX_.'_totshippingpreview` WHERE id_product IN ('.$id_products.')';
 $result = Db::getInstance()->getValue($sql);
 }

Voila des logs plus propres et donc plus utilisables quand nous en avons besoin.

Et puis contribuer à un projet pour le rendre plus sur et améliorer ses fonctionnalités n’est pas la philosophie de l’Open Source si chère à nos yeux.