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