Jump to content

Recommended Posts

Posted (edited)

Bonjour,

Tous les comptes clients de ma boutique s'affichent en double (cf. capture). Pourtant ils sont bien uniques en base.

D'ailleurs si je reprends la requête que me donne Prestashop et que j'y ajoute un distinct, le résultat retourné est correct (ce qui n'est pas le cas sans le distinc, donc) :

SELECT a.`id_customer`, `firstname`, `lastname`, `email`, a.`active` AS `active`, a.`id_default_group` AS `default_group_name` , a.date_add, gl.name as title, ( SELECT SUM(total_paid_real / conversion_rate) FROM psml_orders o WHERE o.id_customer = a.id_customer AND o.id_shop IN (1) AND o.valid = 1 ) as total_spent, ( SELECT c.date_add FROM psml_guest g LEFT JOIN psml_connections c ON c.id_guest = g.id_guest WHERE g.id_customer = a.id_customer ORDER BY c.date_add DESC LIMIT 1 ) as connect ,grl.name as default_group_name, shop.name as shop_name FROM `psml_customer` a LEFT JOIN psml_gender_lang gl ON (a.id_gender = gl.id_gender AND gl.id_lang = 1)LEFT JOIN psml_group_lang grl ON (a.id_default_group = grl.id_group ) LEFT JOIN `psml_shop` shop ON a.`id_shop` = shop.`id_shop` WHERE 1 AND a.`deleted` = 0 AND a.id_shop IN (1) ORDER BY date_add DESC LIMIT 0, 50

Au départ, ma boutique était paramétrée avec le mode invité, mais je l'ai désactivé ensuite, donc rien à voir je pense.

A noter que je n'ai ce problème que sur cette vue Clients. Sur les commandes, les produits, tout fonctionne correctement, pas d'affichage double ...

Je n'ai aucun module qui surcharge des classes de l'admin donc ça doit être un problème de configuration, mais je ne vois pas quoi.

Je suis sur Presta 1.7.5.1.

Une idée ?

Merci

Capture d’écran 2019-05-12 à 18.03.57.png

Edited by Jgoss (see edit history)

Share this post


Link to post
Share on other sites

Z'auriez pas joué avec le multi-boutiques desfois ?

Share this post


Link to post
Share on other sites

Vraiment des requêtes SQL pathétiques.

Mettons ça en forme:

SELECT a.`id_customer`, `firstname`, `lastname`, `email`, a.`active` AS `active`, a.`id_default_group` AS `default_group_name`,
       a.date_add, gl.name as title,
       ( SELECT SUM(total_paid_real / conversion_rate)
         FROM psml_orders o
         WHERE o.id_customer = a.id_customer AND o.id_shop IN (1) AND o.valid = 1
       ) as total_spent,
       ( SELECT c.date_add
         FROM psml_guest g
         LEFT JOIN psml_connections c ON c.id_guest = g.id_guest
         WHERE g.id_customer = a.id_customer ORDER BY c.date_add DESC LIMIT 1
       ) as connect,
       grl.name as default_group_name, shop.name as shop_name
FROM `psml_customer` a
LEFT JOIN psml_gender_lang gl ON (a.id_gender = gl.id_gender AND gl.id_lang = 1)
LEFT JOIN psml_group_lang grl ON (a.id_default_group = grl.id_group )
LEFT JOIN `psml_shop` shop ON a.`id_shop` = shop.`id_shop`
WHERE 1 AND a.`deleted` = 0 AND a.id_shop IN (1)
ORDER BY date_add DESC LIMIT 0, 50

Je confirme pathétique.

Vous avez plusieurs langues et la requêtes va chercher le nom du groupe dans la langue en omettant de préciser la langue

LEFT JOIN psml_group_lang grl ON (a.id_default_group = grl.id_group )

devrait être au moins

LEFT JOIN psml_group_lang grl ON (a.id_default_group = grl.id_group and grl.id_lang = 1)

 

je ne m'attarderais pas sur les performances de cette requête ...

Share this post


Link to post
Share on other sites
Posted (edited)
14 hours ago, Eolia said:

Z'auriez pas joué avec le multi-boutiques desfois ?

Effectivement, je l'avais activé au départ pour essayer certaines fonctionnalités, mais n'en ai finalement pas eu besoin ...

C'est sensé être réversible, mais pas tant que ça si je comprends bien ... Vraiment pas très rassurant, tout ça ...

Un idée de comment corriger ça ? Qqchose à supprimer en base ?

Edited by Jgoss (see edit history)

Share this post


Link to post
Share on other sites

youpi on ne lit pas !

la requête est bancale ... il faut la corriger dans le code !!!!!!!!!!!!

Share this post


Link to post
Share on other sites
Posted (edited)

Ah si j'ai lu, et je vous remercie pour votre analyse, mais c'est pas une des mes requêtes, mais celle de base de la liste des clients de Prestashop !

Je veux bien la corriger mais je vous avouerais que je ne sais pas trop où elle est construite. Ça me dit moyen de modifier le core ou de faire un override pour qqchose qui , j'espère, peut se corriger par de la conf ou une requête en base.

Edited by Jgoss (see edit history)

Share this post


Link to post
Share on other sites

Ben non c'est pas corrigeable par configuration, sauf a supprimer la seconde langue mais comme cette fonction aussi est buggué ça ne solutionnera pas le problème.

Votre seul espoir surfer vers la dernière 1.7 en espérant que cela ait été corrigé

Share this post


Link to post
Share on other sites
Posted (edited)

Hum, alors en fait c'est bien moi qui avais fait une surcharge pour afficher le nom du groupe client dans la liste des clients (m'en rappelais même plus ...) Et c'est bien ma requête qui n'était pas complète.

Toutes mes excuses, je suis un boulet sur ce coup.

Merci pour votre aide précieuse sur ce forum en tout cas ;)

Edited by Jgoss (see edit history)

Share this post


Link to post
Share on other sites

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

×

Important Information

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