Jump to content

Générer commandes mono et multi-produits CSV avec code réduction via requête SQL


Recommended Posts

Bonjour, 

J'ai trouvé ce fil de discussion qui est presque parfait pour moi. Mais il me manque l'export des code de réduction sur les commandes, car j'utilise ces code de réduction pour des partenaires et j'ai besoin de leur faire un retour sur les commandes passées avec. C'est un point primordial. Sauriez vous enrichir la requete SQL avec l'info du code de réduction ?

 Voici la requête qui fonctionne parfaitement sur la dernière version de mon Prestashop la 1.7.6.8 :  

SELECT
   o.date_add,
   d.id_order,
   CONCAT_WS(' ', g.firstname, g.lastname) AS customer,
   os.name AS state,
   d.product_name,
   d.product_ean13,
   d.product_quantity,
   c.name AS carrier_name,
   CONCAT_WS(' ', a.lastname, a.firstname, a.address1, a.address2, a.postcode, a.city) AS address_delivery,
   REPLACE(IFNULL(GROUP_CONCAT(cd.value), ''), '"', '\'') AS customized_data
FROM
   ps_order_detail d 
   LEFT JOIN
      ps_orders o 
      ON (d.id_order = o.id_order) 
   LEFT JOIN
      ps_customer g 
      ON (o.id_customer = g.id_customer) 
   LEFT JOIN
      ps_carrier c 
      ON (o.id_carrier = c.id_carrier) 
   LEFT JOIN
      ps_order_state_lang os 
      ON (o.current_state = os.id_order_state) 
   LEFT JOIN
      ps_address a 
      ON (a.id_address = o.id_address_delivery) 
   LEFT JOIN
      ps_address ab 
      ON (ab.id_address = o.id_address_invoice) 
   LEFT JOIN
      ps_customization cu 
      ON (cu.id_cart = o.id_cart) 
   LEFT JOIN
      ps_customized_data cd 
      ON (cd.id_customization = cu.id_customization) 
GROUP BY
   d.id_order, d.id_order_detail 
ORDER BY
   d.id_order DESC

Merci encore si une bonne âme peut m'aider.

Bonne journée

Laurent

Link to comment
Share on other sites

Merci Eolia

Mais à quel endroit dois je ajouter ps_order_cart_rule ?

je l'ai ajoutée après os.name AS state,

en modifiant la racine de mes tables c'est à dire os.name AS state,
   gc0f_order_cart_rule,

Merci pour votre précision

Laurent

Edited by laurentdevilleplee (see edit history)
Link to comment
Share on other sites

1 minute ago, Mediacom87 said:

Bonjour,

un très bon début pour comprendre ce que l'on fait avec SQL : https://openclassrooms.com/fr/courses/4449026-initiez-vous-a-lalgebre-relationnelle-avec-le-langage-sql

Oui, merci. Cependant, il faudrait que je suive une seconde formation pour m'adapter aux modele de données et au formatage des requetes propre à Prestashop. 

Je n'envisage pas de démarrer tout de suite une formation dans le domaine mais plus tard pourquoi pas.

Link to comment
Share on other sites

il y a 1 minute, laurentdevilleplee a dit :

je suive une seconde formation pour m'adapter aux modele de données et au formatage des requetes propre à Prestashop

PrestaShop respecte le langage SQL propose à MySQL, rien de particulier donc si on connait el SQL on sait faire des requêtes sur PrestaShop.

Link to comment
Share on other sites

Eolia, merci pour votre patience. Voici la requete avec mes modifications et les bonnes racines des tables.

On avance ! J'ai une premiere colonne qui indique frais de port offert... Mais j'aurai souhaité le code promo, car il est spécifique a chaque partenaire. Pour le filtrer ensuite dans mon export...

Je suis embetant !

SELECT
   ocr.name as code,
   o.date_add,
   d.id_order,
   CONCAT_WS(' ', g.firstname, g.lastname) AS customer,
   os.name AS state,
   d.product_name,
   d.product_ean13,
   d.product_quantity,
   c.name AS carrier_name,
   CONCAT_WS(' ', a.lastname, a.firstname, a.address1, a.address2, a.postcode, a.city) AS address_delivery,
   REPLACE(IFNULL(GROUP_CONCAT(cd.value), ''), '"', '\'') AS customized_data
FROM
   gc0f_order_detail d 
   LEFT JOIN
      gc0f_orders o 
      ON (d.id_order = o.id_order) 
    LEFT JOIN
      gc0f_order_cart_rule ocr 
      ON (ocr.id_order = o.id_order) 
   LEFT JOIN
      gc0f_customer g 
      ON (o.id_customer = g.id_customer) 
   LEFT JOIN
      gc0f_carrier c 
      ON (o.id_carrier = c.id_carrier) 
   LEFT JOIN
      gc0f_order_state_lang os 
      ON (o.current_state = os.id_order_state) 
   LEFT JOIN
      gc0f_address a 
      ON (a.id_address = o.id_address_delivery) 
   LEFT JOIN
      gc0f_address ab 
      ON (ab.id_address = o.id_address_invoice) 
   LEFT JOIN
      gc0f_customization cu 
      ON (cu.id_cart = o.id_cart) 
   LEFT JOIN
      gc0f_customized_data cd 
      ON (cd.id_customization = cu.id_customization) 
GROUP BY
   d.id_order, d.id_order_detail
ORDER BY
   d.id_order DESC

Link to comment
Share on other sites

Merci Eolia

Mais avec ce changement, le fichier généré est vide. Plus aucune donnée.

J'ai essayé avec ocr.code as code,

Mais rien non plus. Je suis navré. Je ne pige vraiment pas grand chose a la structure de cette requête.

Ce que je comprend, c'est que dans la table order_cart_rule, image jointe, j'ai dans la colonne "name" le nom du bon de reduction". Mais dans la colonne id_cart_rule, valeur "2" j'ai l'id qui fait le lien avec la table cart_rule qui elle, contient le code promo dans la colonne "code". Cf les deux captures d'écran.

Comment modifier la requete ?

Laurent

Capture d’écran 2020-11-12 à 12.24.23.png

Capture d’écran 2020-11-12 à 12.26.33.png

Edited by laurentdevilleplee (see edit history)
Link to comment
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
×
×
  • Create New...