Les fondamentaux de Magento 2 et de la gestion des commandes
Comment les commandes sont gérées dans Magento 2 ?
Depuis Magento 2, les commandes sont gérées comme des groupes de données structurés qui sont partagés entre différentes instances de table dans la base de données.
Il existe plusieurs instances dont la principale est la table Order qui contient le résumé de toutes les commandes passées (date, montant total, taxe, client...).
3 sous-instances concernent les détails de la commande. Ces instances décrivent quels sont les produits commandés et donnent des détails sur les adresses du client :
- Product
- Shipping address
- Billing address
Les 4 sous-instances suivantes aident à stocker les différentes étapes dans le processus de commande :
- Payments
- Invoice
- Shipment
- Credit memo
Mass Order Export vous aidera à extraire beaucoup plus de données depuis votre base de données Magento 2.
Comment l'extension Mass Order Export exporte les données de Magento 2 ?
Mass Order Export vous permet d'exporter les données des commandes depuis votre admin Magento 2 dans des fichiers XML ou TXT/CSV. Ces fichiers peuvent être transférés à vos logiciels CRM/ERP ou peuvent être utiles dans un but de reporting.
La façon dont l'extension Mass Order Export gère les données des commandes est assez simple. En configurant votre profil d'export, vous devez renseigner dans votre modèle des valeurs statiques et dynamiques.
Les valeurs statiques sont des données qui ne changent pas d'une commande à une autre et qui sont ajoutées dans le fichier tels quels alors que les valeurs dynamiques sont des données qui diffèrent selon la commande comme le prix, l'adresse, les produits commandés...
Afin d'ajouter des valeurs dynamiques à votre modèle, vous devez utiliser une syntaxe particulière comme dans l'exemple ci-dessous.
Par exemple, vous souhaitez exporter toutes les commandes effectuées sur votre site Magento 2 et vous souhaitez obtenir un simple fichier TXT comprennant le numéro de commande et le montant total pour chaque commande.
#123456789 150.00 €#234567891 275.00 € #345678912 450.00 €
Dans votre modèle, vous devrez donc copier :
#{{order.increment_id}} {{order.total_paid}} €
# et € sont des valeurs statiques alors que {{order.increment_id}} et {{order.total_paid}} sont des valeurs dynamiques qui changent selon la commande et qui font référence à l'instance Order.
Mass Order Export inclut une librairie complète des données disponibles pour chaque instance : order, products, payment, invoice, shipment, creditmemo...
Comment utiliser Mass Order Export en 4 étapes ?
Mass Order Export est très simple à utiliser. Vous aurez besoin de suivre 4 étapes pour configurer votre extension pour Magento 2. Une fois ces quatre étapes terminées, votre extension sera prête à l'emploi.
ETAPE 1 : Configurez Mass Order Export d'une manière générale
Afin de configurer Mass Order Export pour Magento 2, allez dans :
StoresSettingsConfiguration Wyomind Mass Order Export
Cron job reporting
Vous pouvez également modifier le titre du rapport et décider d'activer ou non le mode de déboggage.
Advanced settings
Dans cet onglet, vous pouvez activer les fichiers log.
Il vous est également possible d'exécuter automatiquement certains profils lorsqu'une commande est passée en indiquant leurs ids que vous trouverez dans :
SalesMass Order ExportExport Profiles
Vous pouvez facilement gérer la réécriture de la grille dans le cas où un module la réécrit déjà.
ETAPE 2 : Configurez vos profils
Durant cette étape seront décrits les différents onglets que l'on peut trouver dans un profil. Pour commencer, la configuration du profil sera présentée puis suivront les différents templates que vous pouvez exporter, les filtres que vous pouvez créer afin d'ajuster votre configuration, les différents moyens de stockage et enfin les tâches planifiées pour la génération du profil.
Vous pouvez créer ou éditer un profil existant depuis :
SaleSMass Order ExportProfiles
La boîte à outils ou Black Box
Mass Order Export comporte un outil qui vous permettra de configurer votre profil comme vous le souhaitez. Lorsque vous éditez un profil, vous trouverez des outils sur la droite de la fenêtre.
En ouvrant cette boîte, vous pouvez voir deux onglets :
Library
Preview
Configuration du profil
Pendant la création ou la modification d'un profil export dans Mass Order Export, vous devez prêter attention à quelques réglages de base.
Configuration
- File name
C'est le nom de base des fichiers exportés (ex : myOrders). Nul besoin d'ajouter une extension de fichier (xml, csv, txt), l'extension le fait automatiquement pour vous. - Encoding type
Choisissez le type d'encodage.
UTF-8 : Il s'agit du format le plus utilisé
UTF-8 without BOM : En savoir plus sur les BOM
ANSI - File type
Il s'agit du réglage principal qui définit si vous souhaitez un fichier de type XML ou de type CSV/TXT. Selon ce réglage, le template sera différent. - File name format
Le nom de votre fichier peut être complété avec la date du jour de l'export. Différents formats sont disponibles. - Create one file for each order
Choisissez d'exporter une commande par fichier ou non. - File name suffix
When choosing to export one order per file, you need to select a file name suffix. - Add a counter as the 1st column
Définissez ou non la première colonne comme un compteur. - Increment column header
Définissez un nom pour la première colonne (compteur).
Products to export
Orders to export
Cette partie vous donne la possibilité de définir quel groupe de commandes doit être exporté.
- Export from Store view
Vous permet de choisir une ou plusieurs vues de magasin depuis votre ou vos magasin(s) en ligne lors du processus d'export. - Start with order #
Vous permet de définir un numéro de commande depuis lequel le processus d'export commencera. - Register the last exported #
Vous permet dans le champ Start with order # d'enregistrer automatiquement la dernière commande exportée. - Mark each exported order
Vous permet de signaler chaque commande exportée comme 'exporté' dans :
SalesOperationsOrders - Export only unmarked orders
Vous permet de définir que seulement les commandes qui n'ont pas encore été signalées doivent être exportées.
- Update the order status
Vous permet de mettre à jour le statut de la commande.
Dans le cas où cette dernière option est définie sur YES, deux nouveaux champs sont ajoutés à la configuration :
- New order status
Vous permet de définir un statut pour la commande. - Message in the order history
Vous pouvez également définir un message dans l'historique de la commande.
Template
Dans cet onglet, vous pourrez configurer le template de votre profil comme vous le souhaitez. Mass Order Export vous permet de créer différents types de fichiers :
- XML
- CSV
- TXT
- TSV
- DIN
Paramètres de fichiers d'export XML
Vous pouvez sélectionner un fichier de type XML.
- File type
XML - Enclose XML tag content inside CDATA
Choisissez d'encadrer le contenu de vos balises XML avec CDATA afin d'éviter les problèmes dus aux caractères spéciaux tels que < (plus petit que), > (plus grand que) ou & (esperluette). Cette option est recommandée.
Template de fichier XML
Un template XML est composé de 3 parties :
- Header
Il comprend le haut du fichier : <orders> - Body
Il est itéré pour chaque commande y compris dans le fichier :
<order> ... </order>
- Footer
Il comprend le bas du fichier :
</orders>
La structure XML permet d'utiliser une syntaxe itérative dans différentes parties du template, comme ci-dessous :
<items>
<?php foreach($products as $product): ?>
<item id={{product.item_id}}>{{product.name}}</item>
<weight>{{product.weight}}</weight>
<?php endforeach; ?>
</items>
Dans la plupart des cas, les commandes contiennent plus d'un produit donc il peut s'avérer être utile de créer une itération qui boucle pour chaque produit commandé. Tout le contenu entre les caractères d'ouverture et de fermeture sera répété pour chaque produit et toutes les valeurs dynamiques seront remplacées :
<?php foreach($products as $product): ?>
...
<?php endforeach; ?>
Ces repères d'iteration peuvent être utilisés pour toutes les instances de commande :
<?php foreach($payments as $payment): ?>
...
<?php endforeach; ?>
<?php foreach($invoices as $invoice): ?>
...
<?php endforeach; ?>
<?php foreach($shipments as $shipment): ?>
...
<?php endforeach; ?>
<?php foreach($creditmemos as $creditmemo): ?>
...
<?php endforeach; ?>
Paramètres de fichiers d'export CSV/TXT/TSV/DIN
Le fichier peut être de type CSV, TXT, TSV ou DIN. Vous avez la possibilité de créer des fichiers simples ou avancés.
- File format: Advanced format
Il se compose d'une structure de fichiers complexe divisée en plusieurs parties.
- File format: Basic format
Il se compose d'un header optionnel ainsi que de plusieurs rangs qui appliqueront le même template. - Include header
Vous permet d'inclure ou non le nom des colonnes dans la première ligne de votre fichier CSV/TXT.
- Delimiter character
Vous laisse choisir quel type de séparateur vous souhaitez utiliser pour délimiter vos champs. - Enclosure character
Vous permet de choisir quel type de caractère d'encadrement vous souhaitez utiliser pour vos données. - Escape character
Vous permet de choisir quel caractère d'échappement vous souhaitez utiliser pour vos données.
Template de fichier CSV/TXT/TSV/DIN
L'onglet template sera mis à jour pour correspondre au type de fichier que vous avez sélectionné.
Basic file format
Le format de fichier basique pour les fichiers de type TXT est composé d'un header optionnel et de plusieurs rangs qui appliquent le même template.
- Extra Header
Il s'agit de rang(s) additionnel(s) qui seront ajoutés au début du fichier. - Header
C'est pour le nom de l'attribut qui peut être affiché au début du fichier. - Field Pattern
Fonctionne de la même manière que les fichiers XML. Vous pouvez ajouter du code PHP si vous souhaitez personnaliser le template. Vous devez simplement écrire votre code PHP sur une ligne. - Insert a new field
Vous pouvez ajouter un champ en utilisant ce bouton. Les champs peuvent être réorganisés facilement en utilisant les flèches. - Extra Footer
Il s'agit de rang(s) additionnel(s) qui seront ajoutés à la fin du fichier.
La principale différence avec le mode XML est que vous ne pouvez utiliser aucunes instructions d'itération. Par contre, Mass Order Export utilise un processus interne d'auto-consolidation à la place. Cela signifie que si vous essayez d'obtenir la valeur d'un attribut d'une instance (un produit par exemple) qui contient plusieurs articles, l'extension va automatiquement dupliquer la ligne TXT/CSV pour chaque article.
Avec la configuration suivante :
Logiquement, le module devrait exporter une ligne pour chaque commande, mais quelques commandes peuvent contenir plusieurs articles de produit. L'extension va créer plusieurs lignes pour la même commande, comme dans l'exemple suivant :
Order# Product Name Product Sku
#10000001 my product A AAA
#10000001 my product B BBB
#10000001 my product C CCC
#10000002 my product D DDD
#10000003 my product B BBB
#10000003 my product E EEE
...
Advanced file format
Le format de fichier avancé pour les fichiers de type TXT est composé d'une structure de fichiers complexes divisés en plusieurs parties.
- Extra Header
Il s'agit de rang(s) supplémentaire(s) du header qui seront ajoutés en début du fichier. - Body
Il est itéré pour chaque commande. - Extra Footer
Il s'agit de rang(s) supplémentaire(s) du footer qui seront ajoutés à la fin du fichier.
Ce format permet d'utiliser une syntaxe itérative dans différentes parties du template comme suit :
<?php foreach($products as $product): ?>
PRODUCT=
{{product.sku}}
{{product.qty_ordered}}
{{product.base_row_total output="number_format($self,2)"}}$
<?php endforeach; ?>
Filters
Dans l'onglet Filters, vous pouvez définir les types de commandes et de clients que vous souhaitez inclure dans votre profil d'export. Vous avez aussi la possibilité de créer des filtres plus avancés afin d'affiner votre configuration.
Order status
Ici, vous pouvez définir le type de commande que vous souhaitez exporter. Vous devez sélectionner au moins un statut.
Customer Group
Dans cet onglet, choisissez les groupes de clients des commandes que vous souhaitez exporter. Au moins un groupe de client doit être sélectionné.
Advanced Filters
Dans cet onglet, vous pouvez configurer des filtres beaucoup plus précis. Par exemple, choisissez d'exporter seulement une commande bien spécifique :
order > increment_id | = | ID de votre commande
Vous pouvez également exporter les commandes effectuées par des clients dont le nom de famille se termine par 'son' :
order > customer_lastname | like | %mind
Vous avez plusieurs options :
- =, >, <...
Egale à, supérieur à, inférieur à, supérieur ou égale à, inférieur ou égale à, différent de. - LIKE / NOT LIKE
like : commence par / se termine par / inclue la chaîne de caractère.
not like : ne commence pas / ne se termine pas / n'inclue pas la chaîne de caractère. - IS NULL / IS NOT NULL
is null : la valeur est nulle.
is not null : la valeur n'est pas nulle. - IN / NOT IN
in : se trouve dans (sélection de plusieurs options).
not in : ne se trouve pas dans (sélection de plusieurs options). - REGULAR EXPRESSION / FIND IN SET
Utilisez les expression régulières pour décrire un ensemble de chaînes de caractères possibles.
Output
Avec Mass Order Export, vous avez plusieurs possibilités pour exporter les profils des commandes.
Storage settings
FTP settings
Vous pouvez également configurer des paramètres FTP pour uploader le profil généré sur un serveur FTP externe... Par exemple :
- Upload by FTP
Sélectionnez Yes si vous souhaitez télécharger votre profil via FTP. - Host
Dans ce champ, indiquez le serveur. Par exemple : wyomind.com. - Login
Il s'agit de votre login pour vous connecter au serveur. - Password
Il s'agit de votre mot de passe pour accéder au serveur. - Destination directory
C'est le chemin depuis le répertoire d'entrée lorsque vous vous connectez au FTP. Par exemple : "/var/export/ftp". - Use SFTP
Sélectionnez Yes si vous utilisez un protocol SFTP. - Use Active mode
Si vous utilisez le protocol SFTP, vous n'avez pas à vous préoccuper du mode actif/passif.
Email settings
Enfin, vous pouvez choisir d'envoyer vos profils par email. N'oubliez pas de séparer les adresses email d'une virgule.
Cron Schedule
ETAPE 3 : Exportez vos commandes
Maintenant que vos profils sont configurés, vous pouvez exporter vos commandes dans ces fichiers.
Depuis le backoffice Magento 2, vous pourrez voir dans quel profil chaque commande a été exportée dans :
SalesOperationsOrders
Pour chaque commande, des messages différents seront affichés dans la colonne Exported to :
- √ default (X)
La commande a été exportée dans le profil default (seulement si l'option Mark each exported order de la configuration du profil est sur YES). - No profile defined
Il n'y a pas de profil défini pour le ou les produits de cette commande. - => default
Le profil défini pour cette commande est default.
Vous pouvez exporter vos commandes dans n'importe quel profil via plusieurs façons.
Générez le profil
A chaque génération du profil, les commandes qui correspondent à la configuration de celui-ci sont automatiquement exportées dans ce fichier. Depuis le back-office Magento 2, choisissez un profil et sélectionnez simplement l'option Generate depuis la colonne Action, dans :
SalesMass Order ExportExport profiles
Un message est affiché et indique le nombre de commandes qui ont été exportées dans le fichier.
Générez le profil via la ligne de commande
Vous pouvez générer le profil en utilisant la ligne de commande suivante :
bin/magento wyomind:ordersexporttool:export [profile_id]
Cela vous permettra d'exécuter un profil en utilisant son ID.
Par exemple :
bin/magento wyomind:ordersexporttool:export 5
Si vous ne connaissez pas l'ID du profil que vous souhaitez générer, vous pouvez exécuter la ligne de commande suivante :
bin/magento wyomind:ordersexporttool:list
Cela va lister tous vos profils d'export ainsi que leurs IDs.
Exportez manuellement les commandes
Vous pouvez configurer vos profils dans :Sales Mass Order ExportProfiles.
Retournez dans :
SalesOperationsOrders
Dans la colonne Exported to, la commande affiche :
→ txt_sample→ xml_sample
Cela signifie que cette commande sera exportée dans ces profils.
Désormais retournez dans la vue de la commande et cliquez surExport.
La commande est alors exportée dans le ou les profils que vous avez tout juste défini seulement si celle-ci correspond à la configuration du profil.
Exportez seulement les commandes non marquées
2 options sont intéressantes dans l'onglet Configuration de votre profil, depuis :
SalesMass Order ExportExport profiles
- Mark each exported order : permet de marquer chaque commande exportée dans :
SalesOperationsOrders - Export only unmarked orders : permet de n'exporter que les commandes non marquées.
Si vous ne souhaitez pas exporter les mêmes commandes plusieurs fois, vous pouvez simplement définir les deux options ci-dessus sur YES. Alors seulement les commandes non marquées seront exportées.
Si à n'importe quel moment vous souhaitez exporter une seconde fois une commande qui a déjà été exportée, vous avez la possibilité de démarquer celle-ci en cliquant sur la croix à côté du nom du profil dans :
SALES OperationsOrders
Dans ce cas, lorsque le profil sera généré, la commande pourra être exportée une nouvelle fois.
ETAPE 4 : Personnalisez vos profils
Avec Mass Order Export, vous pouvez créer vos propres custom variables et custom fonctions. Vous trouverez des exemples dans la documentation suivante qui vous aideront à personnaliser vos profils pour Magento 2.
Créez vos propres variables
Dans certains cas, vous pourriez avoir besoin de récupérer la valeur d'un attribut qui n'est disponible dans aucune des instances par défaut (order, product, address, payment, invoice, shipment ou creditmemo). Vous pourriez également avoir besoin d'utiliser la valeur de votre attribut mais avec une sortie calculée.
Mass Order Export vous permet de créer vos propres variables directement depuis le panneau d'administration Magento 2 en utilisant du code PHP.
Créez une custom variable
Afin de créer une nouvelle variable, cliquez sur Add new dans :
SalesMass Order ExportCustom variables
Voici 2 exemples de variables personnalisées assez courants :
- Obtenez la description du produit de la commande
Scope = ProductName = descriptionComment = Récupère la description de chaque produit. PHP Script =
<?php
$om = \Magento\Framework\App\ObjectManager::getInstance();
$model = $om->get('\Magento\Catalog\Model\Product');
$product = $model->load($item->getProductId());
return $product ->getDescription();
?>
- Obtenez les SKU des produits commandés:
Scope = OrderName = skusComment = Récupère le sku de chaque produit commandé. PHP Script =
<?php
$skus=array();
foreach($order->getItems() as $item){
$skus[]=$item->getSku();
}
return implode(", ",$skus);
?>
Ajoutez vos custom variables à un template
Créez vos propres fonctions
Mass Order Export vous permet aussi de créer vos propres fonctions PHP.
Créez votre custom function
Pour cela, cliquez sur Add new dans :
SalesMass Order ExportCustom functions
Vous devriez pouvoir ajouter votre nouvelle fonction dans le champ PHP script comme ci-dessous :
<?php
if(!function_exists("example")){
function example($self,$argument_1,$argument_2){
... do something with the arguments...
return $something;
}
}
?>
La variable $self représente la valeur de l'attribut appelé lorsque vous utilisez la custom fonction.
Voici un exemple de custom fonction :
<?php
if(!function_exists("parseDate")){
function parseDate($self,$format){
return date($format,strtotime($self));
}
?>
Ajoutez votre custom fonction à un template
Une fois que vous avez créé la fonction, cliquez sur Save, vous pouvez ensuite l'ajouter au template de votre fichier XML ou CSV.
Une custom fonction peut être utilisée dans le template comme ci-dessous :
{{any.variable output="example($self,'value 1','value 2')"}}
Par exemple, pour récupérer la date de création de la commande au bon format, ajoutez au template de votre fichier :
{{order.created_at output="parseDate($self,'m/d/Y')"}}