Exporter les commandes Prestashop en CSV sans module

Vous connaissez tous la fonctionnalité d’export des commandes qui est présent de base sur à-peu-près toutes les versions de Prestashop :

Seulement, elle a ses limites. Elle ne permet d’exporter que certaines données qui sont bien insuffisantes lorsque l’on souhaite faire un suivi précis des commandes. Les données remontées de base dans le fichiers CSV sont :

  • ID de la commande
  • Référence
  • Si c’est un nouveau client
  • Pays de livraison
  • Nom et prénom du client
  • Total de la commande
  • Moyen de paiement
  • État de la commande
  • Date de la commande

Les éléments dont j’ai besoin en plus sont :

  • Les produits commandés
  • L’adresse de livraison
  • L’adresse de facturation
  • L’e-mail du client
  • Les données de personnalisation des produits

Je souhaite le faire sans module. Dans les Paramètres avancés > Base de données (PS 1.7) ou > Gestionnaire SQL (PS 1.6), vous pouvez définir et enregistrer des requêtes SQL. Dans mon cas de figure, le préfixe de mes tables SQL est « mabi_« . Il faudra le changer dans l’adapter à votre boutique. En haut à droite, cliquez sur « Ajouter une requête SQL ». Nommez-la « Export commandes global » puis collez :

SELECT
   d.id_order,
   o.date_add,
   CONCAT_WS(' ', g.firstname, g.lastname) AS customer,
   g.email,
   os.name AS state,
   d.product_name,
   d.product_reference,
   d.product_quantity,
   d.product_price,
   o.payment,
   c.name AS carrier_name,
   CONCAT_WS(' ', a.lastname, a.firstname, a.address1, a.address2, a.postcode, a.city) AS address_delivery,
   CONCAT_WS(' ', a.lastname, a.firstname, a.address1, a.address2, a.postcode, a.city) AS address_invoice,
   REPLACE(IFNULL(GROUP_CONCAT(cd.value), ''), '"', '\'') AS customized_data 
FROM
   mabi_order_detail d 
   LEFT JOIN
      mabi_orders o 
      ON (d.id_order = o.id_order) 
   LEFT JOIN
      mabi_customer g 
      ON (o.id_customer = g.id_customer) 
   LEFT JOIN
      mabi_carrier c 
      ON (o.id_carrier = c.id_carrier) 
   LEFT JOIN
      mabi_order_state_lang os 
      ON (o.current_state = os.id_order_state) 
   LEFT JOIN
      mabi_address a 
      ON (a.id_address = o.id_address_delivery) 
   LEFT JOIN
      mabi_address ab 
      ON (ab.id_address = o.id_address_invoice) 
   LEFT JOIN
      mabi_customization cu 
      ON (cu.id_cart = o.id_cart) 
   LEFT JOIN
      mabi_customized_data cd 
      ON (cd.id_customization = cu.id_customization) 
GROUP BY
   d.id_order 
ORDER BY
   d.id_order DESC

Si vous souhaitez par ailleurs n’exporter que les commandes de l’année courante, utilisez plutôt la requête suivante :

SELECT
   d.id_order,
   o.date_add,
   CONCAT_WS(' ', g.firstname, g.lastname) AS customer,
   g.email,
   os.name AS state,
   d.product_name,
   d.product_reference,
   d.product_quantity,
   d.product_price,
   o.payment,
   c.name AS carrier_name,
   CONCAT_WS(' ', a.lastname, a.firstname, a.address1, a.address2, a.postcode, a.city) AS address_delivery,
   CONCAT_WS(' ', a.lastname, a.firstname, a.address1, a.address2, a.postcode, a.city) AS address_invoice,
   REPLACE(IFNULL(GROUP_CONCAT(cd.value), ''), '"', '\'') AS customized_data 
FROM
   mabi_order_detail d 
   LEFT JOIN
      mabi_orders o 
      ON (d.id_order = o.id_order) 
   LEFT JOIN
      mabi_customer g 
      ON (o.id_customer = g.id_customer) 
   LEFT JOIN
      mabi_carrier c 
      ON (o.id_carrier = c.id_carrier) 
   LEFT JOIN
      mabi_order_state_lang os 
      ON (o.current_state = os.id_order_state) 
   LEFT JOIN
      mabi_address a 
      ON (a.id_address = o.id_address_delivery) 
   LEFT JOIN
      mabi_address ab 
      ON (ab.id_address = o.id_address_invoice) 
   LEFT JOIN
      mabi_customization cu 
      ON (cu.id_cart = o.id_cart) 
   LEFT JOIN
      mabi_customized_data cd 
      ON (cd.id_customization = cu.id_customization) 
WHERE
   os.id_lang = 1 
   AND YEAR(o.date_add) = YEAR(NOW()) 
GROUP BY
   d.id_order 
ORDER BY
   d.id_order DESC

Vous pouvez par après soit lister le résultat de la requête, soit le télécharger en CSV (via l’icône en forme de nuage).

Prestashop : créer un produit en PHP

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *