Exporter les commandes pour une gestion comptable

Difficulté :++--

Exporter les commandes pour une gestion comptablePar défaut sous Magento il n'est pas possible d'exporter les informations détaillées relatives aux commandes. Ce module va nous permettre d'exporter un maximum de données au format CSV afin de les exploiter pour une gestion comptable.

Les rapports de ventes disponibles sous Magento permettent de récolter un certain nombre d'informations sur une période donnée, par jour, mois ou année. Ils ne fournissent cependant pas de données détaillées sur les commandes passées. Les tableaux générés restent assez synthétiques (Nombre de commandes, total facturé, total réglé...).

L'idée est donc de développer un module (OrdersExport) capable de générer un fichier CSV et de récolter, ligne par ligne, l'ensemble des informations disponibles pour une commande, afin de les exploiter par la suite sur un ERP par exemple.

Le fichier CSV pourra contenir :

  • Numéro de commande
  • Date de commande
  • Numéro de facture
  • Date de facture
  • Numéro de livraison
  • Date de livraison
  • Numéro de remboursement
  • Date de remboursement
  • Numéro du client
  • Nom et prénom du client
  • Nombre de produits commandés
  • Nombre de produits livrés
  • Sous-total de la commande
  • Montant des taxes
  • Montant des frais de port
  • Montant des remises
  • Total de la commande
  • Montant remboursé
  • Méthode de paiement
  • Statut de la commande

Le fichier est généré manuellement depuis la page du listing des commandes. Il est ainsi possible de filtrer les commandes que l'on souhaite récupérer (période, statut, numéros de commande...).

Export CSV des commandes

Le module de base utilisé pour le développement de cette extension est Manual order export disponible sur Magento Connect.

L'extension est compatible avec les versions 1.3.X de Magento.

Export CSV Excel

Architecture du module

  • app/code/local/Magentix/OrdersExport/Block/
  • SalesOrderGrid.php
  • app/code/local/Magentix/OrdersExport/controllers/
  • SalesOrderController.php
  • app/code/local/Magentix/OrdersExport/etc/
  • config.xml
  • app/code/local/Magentix/OrdersExport/Helper/
  • Data.php
  • app/code/local/Magentix/OrdersExport/Model/
  • SalesOrder.php
  • app/locale/fr_FR/
  • Magentix_OrdersExport.csv
  • app/etc/modules/
  • Magentix_OrdersExport.xml

Détails du module

Pour plus de souplesse, la mise en forme du CSV se configure depuis le fichier de configuration config.xml :

app/code/local/Magentix/OrdersExport/etc/config.xml

<!-- ... -->
<default>
    <ordersexport>
        <csv>
            <delimiter>;</delimiter>
            <enclose>"</enclose>
            <mapping>
                <order_increment_id>Order number</order_increment_id>
                <order_created_at>Order created at</order_created_at>
                <invoice_increment_id>Invoice number</invoice_increment_id>
                <invoice_created_at>Invoice created at</invoice_created_at>
                <shipment_increment_id>Shipment number</shipment_increment_id>
                <shipment_created_at>Shipment created at</shipment_created_at>
                <creditmemo_increment_id>Credit memo number</creditmemo_increment_id>
                <creditmemo_created_at>Credit memo created at</creditmemo_created_at>
                <customer_name>Customer name</customer_name>
                <customer_increment_id>Customer number</customer_increment_id>
                <products_ordered>Products ordered</products_ordered>
                <products_delivered>Products delivered</products_delivered>
                <order_subtotal>Subtotal</order_subtotal>
                <order_tax_amount>Tax</order_tax_amount>
                <order_shipping_amount>Shipping</order_shipping_amount>
                <order_discount_amount>Discount</order_discount_amount>
                <order_grand_total>Total</order_grand_total>
                <order_total_refunded>Refunded</order_total_refunded>
                <order_payment_method>Payment method</order_payment_method>
                <order_status>Status</order_status>
            </mapping>
        </csv>
    </ordersexport>
</default>
<!-- ... -->

On définit ici les séparateurs de champs et de texte souhaités, les informations à récupérer et l'ordre des colonnes.

L'intitulé des colonnes peut être modifié depuis le fichier de langue Magentix_OrdersExport.csv :

app/locale/fr_FR/Magentix_OrdersExport.csv

"Order number","Commande"
"Order created at","Date commande"
"Invoice number","Facture"
"Invoice created at","Date facture"
"Shipment number","Expedition"
"Shipment created at","Date expedition"
"Credit memo number","Remboursement"
"Credit memo created at","Date remboursement"
"Customer name","Client"
"Customer number","Numero client"
"Products ordered","Produits commandes"
"Products delivered","Produits livres"
"Subtotal","Sous total HT"
"Tax","Taxe"
"Shipping","Frais de port"
"Discount","Remise"
"Refunded","Rembourse"
"Total","Total TTC"
"Payment method","Reglement"
"Status","Statut"

Le module surcharge le bloc Mage_Adminhtml_Block_Sales_Order_Grid. Il peut donc entraîner un conflit avec un autre module installé (ex : Fia-Net).

Les fichiers CSV générés sont stockés dans le dossier /var/export. Un lien de téléchargement est affiché suite à l'export :

Export CSV fichier

Commentez cet article Exporter les commandes pour une gestion comptable

maher le 20/06/2010 à 23:48:57
Excellent module !!
Est ce qu'on peut exporter les commandes sous forme de page "html" dont on aura tous les informations et un bouton "imprimer"?
Magentix le 20/06/2010 à 23:49:22
Cela ne pose pas de problème... Il suffit de modifier quelques fonctions de l'extension :

Fichier local/Magentix/OrdersExport/Model/SalesOrder.php, modifier la méthode exportOrders() de cette façon :

public function exportOrders($orders,$content='') {
$delimiter = Mage::getStoreConfig('ordersexport/csv/delimiter');
$enclose = Mage::getStoreConfig('ordersexport/csv/enclose');
$mapping = Mage::getStoreConfig('ordersexport/csv/mapping');
$content .= '<table border="1"><tr>';

foreach($mapping as $k => $v) $content .= '<td>'.Mage::helper('ordersexport')->__($v).'</td>';
$content .= "</tr>";
foreach ($orders as $o) {
$data = $this->getInfos(Mage::getModel("sales/order")->load($o));
$content .= "<tr>";
foreach($mapping as $k => $v) $content .= '<td>'.$data[$k].'</td>';
$content .= "</tr>";
}
$content .= "</table>";
return $content;
}



Puis la méthode ordersExportAction() du fichier local/Magentix/OrdersExport/controllers/SalesOrderController.php :

public function ordersExportAction() {
$orderIds = $this->getRequest()->getPost('order_ids',array());
echo Mage::getModel('sales/order')->exportOrders($orderIds);
}



Il ne reste plus qu'à styler ce tableau comme tu le souhaites, ajouter le bouton "imprimer"...
Cédric le 20/06/2010 à 23:49:44
Bonjour,
Si j'obtiens un conflit avec un autre module (je n'utilise pas FIA-NET mais d'autres modules), la désinstallation du module est simple à effectuer ?
D'avance merci pour votre aide
Magentix le 20/06/2010 à 23:50:05
La désinstallation ne posera aucun problème, il suffira d'indiquer "false" dans le fichier "Magentix_OrdersExport.xml" ou de supprimer l'ensemble des fichiers puis de rafraîchir le cache.
William le 20/06/2010 à 23:50:25
Bravo !!
Excellent module, indispensable !
Keaz le 20/06/2010 à 23:50:41
Bonjour,
Y a-t'il possibilité d'étendre le module afin d'avoir le détail de chaque commande?
Si oui par ou commencer merci.
Magentix le 20/06/2010 à 23:51:06
De quels détails supplémentaires avez-vous besoin ?
Tout se passe dans le fichier "SalesOrder.php" (model). On y récupère l'ensemble des informations d'une commande : paiement, facturation, livraison, remboursement, produits... Sur ces objets on récupère ce qui nous intéresse (j'utilise principalement des getData).
Julien le 20/06/2010 à 23:51:29
Bien pratique, mais le problème reste pour un marchand utilisant plusieurs taux de TVA, par exemple à 5,5% et à 19,6%. Comptablement, on a besoin de la base HT pour chacun des taux...
Legen le 20/06/2010 à 23:51:47
Bravo et Merci !
Tuto tout simplement brillant !
Juste une question, je voudrais faire en sorte que l'export se fasse automatiquement grâce a une tâche Cron.
Dois-je modifier le module ou pas du tout?
Une idée de comment je pourrais m'y prendre?
Merci beaucoup par avance!
Magentix le 20/06/2010 à 23:52:11
Pour la configuration d'une tâche Cron tu peux suivre ce petit tutoriel ;) : http://www.magentix.fr/modules-magento/taches-cron-magento-module-anniversaire-clients.html
Geeko le 20/06/2010 à 23:52:39
Enorme !!!!
Merci !

Ajouter un commentaire

Cliquez pour générer un nouveau code

* champs obligatoires