Exporter les commandes Prestashop en CSV sans module

Posté par Prest Anto

Ce passionné est entré dans le web en 1996 et n’en ai jamais ressorti.  Il réalise des veilles dans différents domaines comme la création de site web, le référencement, le webmarketing en général et la webmastering. Sa devise : Vous donner envies d’aller plus loin dans votre projet en vous donnant un très grand nombre d’idées.
"

LIRE LA SUITE

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).

 

Retrouvez d’autres astuces toutes les semaines sur notre site..

 

 

2 Commentaires

  1. peek

    Thank you for the great post, i am a big fan already, thank you and please keep writing.

    Réponse

Soumettre un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

screen tagSupport
error: Contenu protégé !!