L E O Posted July 22, 2015 Share Posted July 22, 2015 Bonjour, j'ai réalisé une requête SQL pour calculer la quantité de chaque produits vendue par date (sans période précise). Voici le code de la requête : SELECT DATE_FORMAT(o.date_add, '%Y-%m-%d') date_cmde, od.product_id id_prod, od.product_reference Ref, (SUM(od.product_quantity) - SUM(od.product_quantity_return)) Qte_vendue FROM bcc_orders o, bcc_order_detail odWHERE o.current_state IN (2, 3, 4, 5, 12, 13, 14, 22) AND o.id_order = od.id_order GROUP BY date_cmde, od.product_idORDER BY date_cmde DESC Le résultat me semble correct mais pour certains produits il est différent du résultat fourni par Prestashop dans Stats > Détail produit > Sélection d'un produit pour voir ses ventes (également sans période précise). Les statuts de commandes correspondent aux étatts suivants : 2 : Paiement accepté 3 : Préparation en cours 4 : En cours de livraison 5 : Livrée 12 : Paiement à distance accepté 13 : Autorisation acceptée par PayPal 14 : Commande complète 22 : Préparation en cours avec attente de pièces Pouvez-vous m'indiquer si ma requête est correcte ? Quelle est celle utilisée par Prestashop pour ce même calcul ? Il y a certainement une différence dans le calcul mais je ne saisi pas où. Merci. Link to comment Share on other sites More sharing options...
J. Danse Posted July 22, 2015 Share Posted July 22, 2015 Bonjour, Je dirais que la requête effectuée est celle-ci: $sql = 'SELECT SUM(od.`product_quantity`) AS total FROM `bcc_order_detail` od LEFT JOIN `bcc_orders` o ON o.`id_order` = od.`id_order` WHERE od.`product_id` = '.(int)$id_product.' AND o.valid = 1; J'ai retiré la partie gérant la période de date. Link to comment Share on other sites More sharing options...
L E O Posted July 22, 2015 Author Share Posted July 22, 2015 Merci pour cette info, j'ai effectivement trouvé où se situe cette requête. J'ai maintenant 2 questions que me viennent à l'esprit : 1 - Est-ce que cette requête tient compte des retours de produits ? 2 - Est-ce que o.valid regroupe tous les états de commande que j'ai mentionné ? Merci pour vos réponses. Link to comment Share on other sites More sharing options...
J. Danse Posted July 22, 2015 Share Posted July 22, 2015 A première vue, non, pour les retours produits. Puisque comme on peut le voir via votre requête, le nombre se situe dans une autre colonne et celle-ci n'est pas déduite de la principale. Pour le o.valid, j'ai envie de dire que oui et en même temps de le nuancer. C'est surtout que la commande est dites "valide", car payée. [et statut qui suivent, si marqué comme payé dans leur configuration]. J'irais plus vite sur une jointure des états de commandes en sélectionnant ceux à "paid" = 1 , personnellement. Link to comment Share on other sites More sharing options...
L E O Posted July 23, 2015 Author Share Posted July 23, 2015 Pour ceux qui seraient intéressés voici ma requête modifiée. Elle est plus précise que celle de Prestashop (1.6.0.9) car elle tient compte des retours de marchandise et des statuts de commandes spécifiques (devis: statut 15 par exemple) qui n'influent pas sur le stock. SELECT DATE_FORMAT(o.date_add, '%Y-%m-%d') date_cmde, od.product_id id_prod, od.product_reference Ref, (SUM(od.product_quantity) - SUM(od.product_quantity_return)) Qte_vendue FROM ps_order_detail od LEFT JOIN ps_orders o ON o.id_order = od.id_order AND o.current_state IN (2, 3, 4, 5, 12, 13, 14, 22) GROUP BY date_cmde, od.product_id ORDER BY date_cmde DESC A valider par la team PS si possible. Merci Link to comment Share on other sites More sharing options...
L E O Posted July 29, 2015 Author Share Posted July 29, 2015 Petite correction avec WHERE plutot que AND : SELECT DATE_FORMAT(o.date_add, '%Y-%m-%d') date_cmde, od.product_id id_prod, od.product_reference Ref, (SUM(od.product_quantity) - SUM(od.product_quantity_return)) Qte_vendue FROM bcc_order_detail od LEFT JOIN bcc_orders o ON o.id_order = od.id_order WHERE o.current_state IN (2, 3, 4, 5, 12, 13, 14, 22) GROUP BY date_cmde, od.product_id ORDER BY date_cmde DESC Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now