



Par 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 :
|
|
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...).
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.
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 :
Commentez cet article Exporter les commandes pour une gestion comptable
Est ce qu'on peut exporter les commandes sous forme de page "html" dont on aura tous les informations et un bouton "imprimer"?
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"...
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
Excellent module, indispensable !
Y a-t'il possibilité d'étendre le module afin d'avoir le détail de chaque commande?
Si oui par ou commencer merci.
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).
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!
Merci !