Définition du bug PrestaShop

Un bug est un problème dans l’outil, n’affichant pas la bonne information, ou un message d’erreur ou une page blanche…

Ici, je vais vous présenter ma solution pour un bug connu sur les versions 1.6 et 1.7 de PrestaShop, qui n’avait de solution que sur la version 1.6 (à chercher sur Google en tout cas). Ce bug affiche en doublon les lignes des tableaux du Back Office des données suivantes : Produits, Commandes et Clients. Les données étant identiques, jusqu’à l’ID de la ligne qui est le même, il n’existe en vrai pas de doublon en base de donnée. C’est un problème dans une jointure qui duplique les lignes sur ces requêtes. Même quand le multi boutique n’est pas activé, ça arrive.

Voici la solution :

Correctifs au bug

Prestashop 1.6

Concernant la page produit, un correctif était connu pour la version 1.6 de PrestaShop, à savoir remplacer un morceau de code dans le fichier AdminProductsController.php trouvable dans le dossier /controllers/admin :

$this->_use_found_rows = false;
$this->_group = ''; 

par

$this->_use_found_rows = true; 
$this->_group = 'GROUP BY '.$alias.'.id_product'; 

Prestashop 1.7

En version 1.7, le fichier en question n’a pas les informations de requête que l’on cherche à modifier pour ajouter un GROUP BY. Il faut donc aller chercher un autre fichier, à savoir AdminProductDataProvider.php dans le dossier /src/Adapter/Product. Dans ce fichier, il faut aller dans la méthode getCatalogProductList() et modifier le code suivant :

$sqlGroupBy = array();

par

$sqlGroupBy = array('id_product');

Bonus

Concernant les commandes et les clients, il suffit d’ajouter dans les fichiers AdminOrdersController.php et AdminCustomersController.php du dossier /controllers/admin le morceau de code suivant, juste après la déclaration de « $this->_select » :

// Fichier commandes
$this->_use_found_rows = true; $this->_group = 'GROUP BY a.id_order';
// Fichier client
$this->_use_found_rows = true; $this->_group = 'GROUP BY a.id_customer';