Mass Stock Update vous permet de mettre à jour massivement les stocks dans Magento en temps record grâce à des fichiers CSV ou XML disponibles sur votre serveur, sur un serveur distant via FTP ou sur un serveur distant via HTTP.
Comment utiliser Mass Stock Update
Pour pouvoir utiliser Mass Stock Update, vous devez dans un premier temps aller dans :
SystemConfigurationWyomindMass Stock Update
Configurer Mass Stock Update de manière générale
Email reporting
Mass Stock Update inclut un outil de reporting des tâches cron qui vous permettra d’être averti chaque fois qu’un profil aura été exécuté et le cas échéant si une erreur s’est produite.
Pour plus d’informations sur les taches cron, reportez vous à la section suivante :
Configurez les taches cron dans un profil
Enable reporting
Send the reports to
Pour indiquer plusieurs adresses emails, utilisez la virgule comme séparateur.
Report title
List ignored products in the report
Settings
Mass Stock Update comprend un fichier log que vous pouvez activer.
Enable log file
Le fichier est nommé Wyomind_MassStockUpdate.log.
System Configuration Advanced Developer Logs settings
Créer un profil de mise à jour dans Mass Stock Update
Pour pouvoir mettre à jour les stock dans Magento, il vous faut dans un premier temps éditer ou créer un profil en cliquant sur Create a new profile depuis :
SystemImport/ExportMass Stock Update
Black box
L'outil de la boîte noire est très utile pour vous aider à configurer votre profil facilement. La black box est composée de 3 options principales.
Input Data Preview
Afin d'avoir un aperçu de vos données d'entrée, cliquez sur Input data.
Output Data Preview
Le bouton Output data vous donnera un aperçu des données telles qu'elles seront mises à jour.
Library
La librairie vous permet de vérifier quelles valeurs vous pouvez utiliser pour chaque attribut.
Settings
Dans cette section, vous pouvez définir la source des données.
Profile settings
- Profile name
Nom que vous souhaitez donner au profil.
Seuls les caractères alphanumérique, les tirets et les underscores sont acceptés.
Le nom du profil doit être unique. - SQL mode
Notez que lorsque le mode SQL est activé, les données ne sont pas mises à jour et un fichier SQL est généré.
Si vous activez le mode SQL, vous devrez remplir des champs supplémentaires :
- SQL file path:
Il s'agit de l'endroit où le fichier SQL sera généré (par rapport au dossier racine de Magento). - SQL file name:
Il s'agit du nom du fichier SQL à générer.
File Location
Vous permet de définir où est stocké le fichier à utiliser pour le profil.
- Magento File System
Le fichier est stocké à la racine de l’instance Magento ou dans un sous/répertoire de l’instance Magento. - FTP server
Le fichier est stocké sur un serveur distant accessible via FTP - URL
Url du fichier disponible via une URL utilisant HTTP ou HTTPS.
Si l’url est protégée par http authentication, vous pouvez ajouter votre login et password. - Dropbox
Le fichier est disponible via une dropbox. Vous pouvez générer vos codes depuis votre compte Dropbox :
https://www.dropbox.com/developers/apps - Webservice
Le fichier peut être disponible via n'importe quel service web.
File Type
- File type
Vous permet de préciser le type de fichier utilisé pour la mise à jour.
XML ou CSV.
Pour les fichiers CSV :
- Field separator
Définissez le séparateur de champs. - Field enclosure
Sélectionnez le délimiteur de champ.
Pour les fichiers XML :
- Xpath to products
Dans le d’une mise à jour par le biais d'un fichier XML, vous devez préciser le XPath correspondant aux produits dans le fichier XML.
Attention le Xpath est sensible à la casse.
Exemple de fichier
<Import> <PRODUCTS> <product> <name>Product A</name> <sku>001A</sku> <qty>864</qty> </product> <product> <name>Product B</name> <sku>002B</sku> <qty>594</qty> </product> </PRODUCTS> </Import>
Le Xpath pour accéder aux product dans ce fichier est /Import/PRODUCTS/product
- XML structure
Vous avez deux options; la détection Automatique ou la structure prédéfinie. La détection automatique convient aux fichiers simples avec seulement un niveau d'imbrication comme dans le fichier d'exemple ci-dessus. - Predefined structure
Si vous avez sélectionné la structure prédéfinie, vous avez la possibilité de définir votre propre structure. Lorsque la structure de votre fichier est assez complexe, l'information peut être dispatchée dans des nœuds profonds et quelques fois dans des attributs tag, comme url="something".
Ci-dessous, un exemple de fichier complexe où vous avez besoin d'une structure prédéfinie :
Le XPath qui cible les produits dans le fichier ci-dessous est /products/item<products> <item> <sku><![CDATA[XYZ]]></sku> <qty value="150"/> <options> <option name="backorders">2</option> <option name="minimal_in_cart">10</option> </options> </item> </products>
La syntaxe JSON que vous devez utiliser est :{ "sku":"sku", "qty":"qty/@value", "backorders":"option[@name='backorders']", "minimal_qty":"option[@name='minimal_in_cart']" }
RÈGLES D'UTILISATION POUR LA STRUCTURE PRÉDÉFINIE XML
- Utilisez une chaîne de caractères Json valide composée d'une liste de clés/valeurs qui définit les noms des colonnes ainsi que les Xpath associés aux colonnes.
- Utilisez @ afin d'accéder aux valeurs d'attribut.
@price - Utilisez [@attribute=value] pour accéder à un nœud depuis lequel l'attribut est une valeur.
[@name='ean'] - Utilisez [number] pour accéder à un autre nœud qui à le même nom.
category - Utilisez les Xpath axis pour représenter une relation avec le nœud actuel, et identifier des nœuds.
child::item
Post Process Action
Vous avez la possibilité de définir une action après que le fichier soit exécuté, entre :
- Ne rien faire
- Supprimer le fichier d'import
- Changer le fichier d'import de place
Vous devez définir le chemin du fichier où vous souhaitez changer le fichier d'import de place, par rapport au dossier racine Magento.
Advanced Settings
System Settings
- The first line is a header
Pour les fichiers CSV, vous devez spécifier lorsque la première ligne est l'entête. - Filter lines
Laissez vide pour importer toutes les lignes.
Entrez le nombre des lignes que vous souhaitez importer, en prenant soin de séparer chaque ligne ou série avec une virgule (,). Par exemple, pour importer les lignes 2,4,6,8,10 :
2,4,6,8,10
Utilisez un tiret (-) pour indiquer une série de lignes. Par exemple, pour importer les lignes 8 à 10 :
8-10
Utilisez un plus (+) pour tout importer à partir d'une ligne. Par exemple, pour tout importer à partir de la ligne 4 :4+
Stock Settings
Automatic stock status update
Vous pouvez choisir de mettre à jour automatiquement le statut du stock (en stock / en rupture de stock).
Mapping & Rules
Dans cette section, vous pouvez mapper chaque colonne de votre fichier avec les attributs de stock.
Column Mapping
- Target Attribute
Sélectionnez l'attribut cible depuis les attributs disponibles dans votre système (sur la première ligne, définissez l'identifiant de vos produits). Vous pouvez trouver tous les attributs regroupés par type dans notre documentation. - Data source
Dans la colonne Data source, vous pouvez définir l'attribut source qui correspond à l'attribut cible depuis votre fichier source. - Custom value
Parfois, des colonnes peuvent manquer. Par exemple, lors de la mise à jour des stocks, le fichier n'inclut pas forcément tous les attributs de stock (backorders, quantité minimum dans le panier...). Dans ce cas, vous pouvez choisir custom value dans Data source et appliquer une valeur par défaut.
- Ajoutez autant de colonnes que vous souhaitez en cliquant sur +. Dans de nombreux cas, le fichier de mise à jour peut contenir plus de colonnes que nécessaire. Vous n'êtes pas obligé de les ajouter et de les mapper.
- Supprimez une ligne facilement.
- Changez l'ordre de chaque ligne en les faisant glisser.
- Désactivez une ligne en conservant les paramètres en cliquant sur le symbole liEN.
- Ajoutez vos propres scripts </>. Vous pouvez également visualiser ces scripts. Comment utiliser l'API.
Notez que lorsqu'un script est ajouté, alors </> est souligné. - Appliquez la couleur de votre choix à chaque ligne.
- Appliquez le titre de votre choix à chaque ligne.
- Prévisualisez votre fichier en cliquant sur INPut Data.
- Retrouvez tous les attributs regroupés par type dans la Library.
- Vérifiez les données telles qu'elles seront mises à jour en cliquant sur Output Data.
Scheduled tasks
Vous pouvez planifier l'exécution d’un profil selon le jour et l’heure avec un interval de 30 minutes par défaut entre chaque tâche planifiée.
Vous pouvez changer cet interval dans :
SystemConfigurationWyomindMass Stock UpdateSettings
Exécuter un profil Mass Stock Update
Depuis la grille des profils
Pour exécuter le profil depuis la grille, il vous suffit de cliquer sur RUN NOW dans le dropdown associé au profil. Une barre de progression affichera la progression de la tache.
Depuis la page du profil
Ouvrez le profil en cliquant sur l’option edit du dropdown associé au profil dans la grille et cliquez sur le bouton RUN Profile
Grâce au tâches cron
Lorsque vous avez configuré la tache cron d’un profil, celui sera exécuté automatiquement au jour et à l’heure sélectionnée.
Pour que les taches cron de Mass Stock Update fonctionnent, la tache cron Magento doit être configurée correctement.
Pour plus d’information sur les taches cron Magento, référez vous au guide officiel Magento:
http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-cron.html
Vous recevrez une notification par mail lorsque la tâche cron est exécutée, si vous avez configuré l’option dans :
system configurationMass Stock Update
En ligne de commande
Mass Stock Update inclut des lignes de commande accessible depuis n’importe quel terminal shell.
php -f shell/wyomind_massstockupdate.php -- [options]
Les paramètres suivant peuvent être utilisés:
- -h
Pour l'aide - --run id1,id2,...,
idN
Génère le profil à partir de la liste - --sql id1,id2,...,idN
Exécute le fichier sql généré par le profil à partir de la liste - --list
Liste tous les profils
Utilisation de l'option SQL
Mettre à jour des stocks massivement peut garder votre serveur occupé un certain temps, surtout lorsque la mise à jour concerne de nombreux stocks.
Mass Stock Update découpe donc le processus en 2 étapes distinctes:
- L’analyse du fichier source, la collecte des données et la construction du fichier SQL de mise à jour ou de mise à jour des produits
- L’exécution du fichier SQL de mise à jour ou de mise à jour des produits qui peut être exécuté de manière asynchrone.
Génerer le fichier SQL
Si vous souhaitez générer un fichier SQL de mise à jour ou de mise à jour sans l'exécuter, vous devez activer l’option dans :
System configuration Mass Stock Update settings.
Puis, lancez l’exécution du profil en cliquant sur RUN PROFILE NOW.
Exécuter le fichier SQL
Une fois le fichier généré dans le répertoire de travail, il vous suffit de mettre à jour la base donnée avec ce fichier via les lignes de commande.
mysql -h host -p DbPassword -u DbLogin DatabaseName < path/to/mysql/file.sql
Vous pouvez aussi utiliser la ligne de commande :
php -f shell/wyomind_massstockupdate.php --sql id1
Utilisation avancée
L’événement "mass_update_success" est récupéré lorsque le profil est généré et que les données ont été mises à jour ou importées avec succès.
L’événement est dispatché lorsque le profil est généré avec succès et peut être utilisé dans vos propres observers. Le paramètre donné dans l'observer est le profil en cours d"execution.
Dispatch de l’événement :
Mage::dispatchEvent("mass_update_success", array("profile" => $this));
Exemple d'utilisation dans un observer :
class Editor_Module_Model_Observer
{
/**
* @param $observer
*/
public function execute($observer)
{
return var_dump($observer->getProfile()->getData());
}
}
Attribute specifications
Stock attributes
Tous les attributs relatifs à la gestion des stocks sont disponibles dans cette section.
L'ensemble des ces attributs doivent être mise à jour par des valeurs booléennes ou numériques.
- Multi-stock enabled (Advanced Inventory only, boolean):
- Qty (float or integer)
- Min Qty (float or integer)
- Use Config Min Qty (boolean)
- Is Qty Decimal (boolean)
- Backorders (integer)
- Use Config Backorders (boolean)
- Min Sale Qty (float or integer)
- Use Config Min Sale Qty (boolean)
- Max Sale Qty (float or integer)
- Use Config Max Sale Qty (boolean)
- Is In Stock (boolean)
- Notify Stock Qty (boolean)
- Use Config Notify Stock Qty (boolean)
- Manage Stock (boolean)
- Use Config Manage Stock (boolean)
- Stock Status Changed Automatically (boolean)
- Use Config Qty Increments (boolean)
- Qty Increments (float or integer)
- Use Config Enable Qty Increments (boolean)
- Enable Qty Increments (boolean)
- Is Divided into Multiple Boxes for Shipping (boolean)
Valeurs booléennes
- yes / no
- true / false
- enable / disable
- enabled / disabled
- 1 / 0
- in stock / out of stock
Valeur numérique
- Integer number sans espace
- Float number avec un point comme séparateur
Advanced Inventory attributes
Tous les attributs relatifs à la gestion des stocks dans Advanced Inventory sont disponibles dans cette section.
L'ensemble des ces attributs doivent être mis à jour par des valeurs booléennes ou numériques.
- Warehouse - Qty (float or integer)
- Warehouse - Manage stock (boolean)
- Warehouse - Backorders allowed (integer)
- Warehouse - Use config settings for backorders (boolean)
Valeurs booléennes
- yes / no
- true / false
- enable / disable
- enabled / disabled
- 1 / 0
- in stock / out of stock
Valeur numérique
- Integer number sans espace
- Float number avec un point comme séparateur
API PHP pour Mass Stock Update
Mass Stock Update vous permet de complètement personnaliser et contrôler vos données en utilisant des scripts PHP.
Standards de code API
Pour chaque ligne dans l'onglet Mapping & Rules de votre profil, vous pouvez ajouter votre propre script basé sur une syntaxe PHP.
Pour ajouter votre script, cliquez sur </> à la fin de la ligne que vous souhaitez éditer. Vous pouvez alors mettre à jour la valeur de chaque colonne.
Notez que le bouton </> peut être caché par la blackbox.
Balises ouvrantes et fermantes
<?php
/* Your custom script */
return $self;
Sortir une valeur
return
N'importe quelle valeur que vous souhaitez utiliser dans votre profil, doit être retournée avec l'instruction return.
Objet $this
$this->skip() ou return false (boolean false)
Pour ignorer la ligne en cours (toutes les colonnes de la ligne).
$this->skipRow() ou $this->skip() ou return false;
Pour ignorer la cellule en cours ainsi que les cellules suivantes.
$this->skipCell() ou return true;
Pour ignorer la cellule en cours.
Variable $cell
Vous pouvez appeler n'importe quelle colonne du fichier source en utilisant $cell. Il indexe chaque colonne numériquement (1,2,3,...) et avec une clé correspondant au nom de l'entête de la colonne ("nom","description","prix"...).
$cell["name of the column"] ou $cell[INDEX]
Par exemple :
return $cell["description"]. " ".$cell["name"]
Variable $self
$self
Pour récupérer la valeur en cours de la colonne et gérer les données :
<?php return $self;
Par exemple :
<?php return strtolower($self);
Exemples d'utilisation
Ci-dessous, quelques exemples d'utilisation avec l'API PHP.
Changer le séparateur
Transformez un nombre à virgule séparé par un point à la place.
Par exemple :
<?php return number_format(str_replace(",",".",$self),2,".",""); ?>
Changer un texte en lettres majuscules
Changez un texte en lettres minuscules et ajoutez une lettre majuscule à la première lettre de chaque mot.
Par exemple :
<?php return ucwords(strtolower($self)); ?>
Récupérer des images
Récupérez seulement une image depuis une liste.
Par exemple :
<?php return array_pop(explode(",",$self)); ?>
Regrouper plusieurs colonnes
Rassemblez plusieurs colonnes afin de créer une description.
Par exemple :
<?php return $self." ".$cell["product_name"].", starting at $".$cell["price"]; ?>
Définir la visibilité d'un produit
Définissez la visibilité d'un produit selon le type de colonne.
Par exemple :
<?php
switch($self){
case "parent":
return "Catalog, Search";
break;
default:
return "Not visible individually";
}
?>
Mapper des valeurs
Mappez des valeurs.
Par exemple :
<?php
if($self=="something"){
return "something else";
}
else if($self=="foo"){
return "bar";
}
else{
return "default value";
}
?>