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

