Module Outlet pour Magento 2 - Automatisation des soldes
Kowal Outlet Products est un module pour Magento 2 qui automatise la gestion des produits outlet, des articles en promotion et des fins de série. Cette solution aide à maintenir un catalogue ordonné, à attribuer les produits à la catégorie OUTLET, à les marquer avec un attribut dédié et à les retirer de l’outlet lorsqu’ils ne doivent plus être visibles comme offre de déstockage.
Le module a été conçu pour les boutiques où les produits outlet changent de manière dynamique : certains sont des produits simples isolés, d’autres sont des variantes de produits configurables, et d’autres encore nécessitent la prise en charge de plusieurs boutiques, de plusieurs websites et de différentes configurations de prix.
Principale valeur métier
Dans Magento standard, la gestion d’un outlet nécessite souvent de surveiller manuellement plusieurs éléments à la fois : les catégories, le statut du produit, le prix spécial, les stocks, les variantes configurables et le cache. Avec un catalogue plus important, il est facile de se retrouver dans une situation où un produit reste affiché dans OUTLET alors qu’il est épuisé, où le parent d’un produit configurable reste dans la catégorie sans variantes actives, ou où le prix spécial est restauré d’une manière non conforme à la configuration de la boutique.
Kowal Outlet Products structure ce processus. L’administrateur peut ajouter une liste de SKU à l’outlet, et le module se charge de l’attribution aux catégories appropriées, de la définition de l’attribut OUTLET, de la gestion des parents configurable ainsi que du détachement automatique ultérieur des produits une fois la vente terminée.
Fonctionnalités clés
- import massif de produits dans OUTLET à partir d’une liste de SKU,
- attribution des produits à une ou plusieurs catégories outlet,
- prise en charge des produits simples et des variantes de produits configurables,
- marquage automatique des produits avec l’attribut
sale, - attribution des parents configurable à OUTLET lorsque leurs variantes sont des produits outlet,
- détachement automatique des produits des catégories OUTLET après épuisement du stock ou désactivation du statut outlet,
- détachement du parent configurable lorsqu’aucune variante n’est plus un produit OUTLET,
- contrôle cyclique des produits via cron,
- lancement manuel du recalcul depuis la console Magento,
- actualisation des index et du cache des produits et des catégories,
- gestion du stock et des backorders après la fin des soldes,
- sauvegarde et restauration des prix spéciaux,
- prise en charge de la configuration multistore et du website scope pour les prix,
- marquages OUTLET au niveau des swatches de variantes sur la fiche produit.
Fonctionnement du processus OUTLET
L’administrateur sélectionne les catégories outlet dans la configuration du module. Ensuite, depuis le panneau d’administration, il peut coller une liste de SKU et ajouter les produits aux soldes. Le module attribue les produits aux catégories OUTLET et définit l’attribut sale.
Pour les produits configurables, le module fonctionne sur deux niveaux. Si une variante est en outlet, le parent configurable peut également être ajouté à la catégorie OUTLET afin que le client voie le produit dans le listing. Lorsque la variante est épuisée ou cesse d’avoir le statut OUTLET, le module vérifie si le parent possède encore des variantes outlet actives. Si ce n’est pas le cas, le parent est détaché de OUTLET.
Le cron du module vérifie régulièrement l’état des produits. Lorsqu’un produit ne peut plus être vendu, le module le retire des catégories outlet, modifie son statut outlet et actualise les données dans les index ainsi que dans le cache. Ainsi, le listing de la catégorie OUTLET reste à jour sans intervention manuelle de l’administrateur.
Gestion des prix spéciaux
Le module peut protéger les prix spéciaux contre toute perte pendant le cycle OUTLET. Lors de l’ajout d’un produit à l’outlet, le prix spécial actuel est copié dans des attributs techniques. Une fois l’outlet terminé, le prix peut être restauré ou effacé, selon la configuration.
La sauvegarde comprend :
special_price,special_from_date,special_to_date.
Le module respecte le scope des prix Magento. Si les prix sont globaux, il agit au niveau global. Si les prix sont définis par website, le module enregistre et restaure les valeurs conformément aux store views par défaut des websites. Il n’effectue pas de conversion de devises, car Magento stocke les prix comme valeurs de base pour un scope donné, tandis que les devises des boutiques sont converties par les mécanismes Magento.
Multistore et multidevise
Kowal Outlet Products peut fonctionner dans des installations Magento comprenant plusieurs store views et websites. Lors de l’import, l’administrateur peut indiquer les websites auxquels le produit doit être attribué. La configuration du module est disponible aux niveaux default, website et store, ce qui permet d’adapter son fonctionnement à la structure de la boutique.
Pour les prix spéciaux, le module ne multiplie ni ne convertit les valeurs entre les devises. Il conserve les montants enregistrés dans Magento pour le scope de prix approprié. Cela permet d’éviter les erreurs liées à la conversion manuelle des taux et laisse la présentation des devises aux mécanismes standard de Magento.
Exemple d’utilisation
La boutique vend des vêtements et dispose d’une catégorie OUTLET dans laquelle elle affiche les dernières pièces de produits issus de collections précédentes. L’administrateur reçoit une liste de SKU de variantes qui doivent être ajoutées aux soldes, par exemple :
TSHIRT-BLACK-MTSHIRT-BLACK-LJACKET-NAVY-XLSHOES-WHITE-42Après avoir collé la liste dans le panneau d’import, le module :
- définit les produits comme OUTLET,
- les attribue à la catégorie
OUTLET, - attribue les parents des produits configurables si leurs variantes sont en outlet,
- enregistre une copie des prix spéciaux actuels,
- met éventuellement à jour les paramètres de stock,
- actualise les index et le cache.
Le client voit les produits dans la catégorie OUTLET ainsi que les marquages au niveau des variantes. Lorsque la dernière pièce d’une variante est vendue, le cron du module détecte que le produit n’est plus salable, le retire de OUTLET et actualise le listing. S’il s’agissait de la dernière variante outlet d’un produit configurable donné, le parent est également retiré de la catégorie OUTLET.
À qui s’adresse ce module
Le module est destiné aux boutiques Magento 2 qui :
- gèrent une section OUTLET ou SALE permanente,
- travaillent souvent avec des fins de série,
- proposent des produits configurables avec des variantes ayant différents statuts de déstockage,
- souhaitent réduire le travail manuel lors de la mise à jour des catégories,
- ont besoin de contrôler les prix spéciaux dans un environnement multistore,
- veulent éviter la présence de produits obsolètes dans les listings de catégories.
Éléments techniques
- Nom du package Composer :
kowal/module-outletproducts - Nom du module Magento :
Kowal_OutletProducts - Commande CLI :
bin/magento kowal_outletproducts:generate - Panneau de configuration :
Stores > Configuration > kowal > OUTLET Products - Panneau d’import :
kowal > Upload Outlet Products - Principaux attributs produit :
sale,special_price_copy,special_from_date_copy,special_to_date_copy,special_price_copy_active
Résultat du déploiement
Après le déploiement du module, la boutique bénéficie d’un processus cohérent de gestion de l’outlet : les produits sont placés dans les bonnes catégories, les variantes et les parents sont maintenus de manière logique, les prix spéciaux sont protégés et les données du catalogue sont actualisées après les changements. Les administrateurs peuvent ainsi se concentrer sur le choix des produits à solder, plutôt que sur le nettoyage manuel des catégories et du cache.
Installation et configuration du module Kowal Outlet Products
Informations de base
- Package Composer :
kowal/module-outletproducts - Module Magento :
Kowal_OutletProducts - Type d’application requis : Magento 2
- Dépendance du package :
kowal/base - Commande CLI du module :
bin/magento kowal_outletproducts:generate
Installation via Composer
Ajoutez le dépôt du module :
composer config repositories.module.outlet.products vcs https://github.com/kowalco/magento-2-outlet-productsSi le dépôt est privé, configurez le token d’accès :
composer config --auth github-oauth.github.com Installez le module :
composer require kowal/module-outletproductsActivez le module :
php bin/magento module:enable Kowal_OutletProductsEffectuez la mise à jour de la base de données :
php bin/magento setup:upgradeEn environnement de production, lancez la compilation DI et le déploiement des ressources statiques conformément au processus de déploiement de la boutique :
php bin/magento setup:di:compilephp bin/magento setup:static-content:deployVidez le cache :
php bin/magento cache:flushMise à jour d’une installation existante
Après la mise à jour du module, exécutez :
composer update kowal/module-outletproductsphp bin/magento setup:upgradephp bin/magento cache:flushSi la boutique fonctionne en production mode, effectuez également les étapes de déploiement standard :
php bin/magento setup:di:compilephp bin/magento setup:static-content:deploysetup:upgrade est requis, car le module ajoute et met à jour les attributs produit utilisés pour la gestion de OUTLET et des copies de prix spéciaux.
Attributs produit
Le module ajoute ou utilise les attributs suivants :
| Attribut | Signification |
|---|---|
sale | Marque le produit comme OUTLET. |
special_price_copy | Copie de la valeur special_price avant l’entrée du produit dans OUTLET. |
special_from_date_copy | Copie de la date special_from_date. |
special_to_date_copy | Copie de la date special_to_date. |
special_price_copy_active | Marqueur indiquant que la copie du prix spécial a été effectuée. |
Configuration dans le panneau d’administration
Accédez à :
Stores > Configuration > kowal > OUTLET ProductsOptions disponibles :
| Option | Description |
|---|---|
Włącz moduł Outlet | Active ou désactive le fonctionnement du module. |
Usuń ceny specjalne dla produktów po wyprzedaży | Détermine si le prix spécial doit être effacé après la fin de OUTLET. Si l’option est désactivée, le module restaurera le prix à partir de la copie. |
Kategorie outletowe | Liste des catégories auxquelles les produits OUTLET sont attribués et dont ils sont ensuite automatiquement retirés. |
Wyłącz zarządzanie stanem magazynowym po wyprzedaży | Permet de désactiver manage_stock après la fin des soldes. |
Włącz backorder po zakończeniu wyprzedaży outletowej | Permet d’activer le backorder et de marquer le produit comme disponible après la fin de la vente outlet. |
La configuration est disponible aux niveaux default, website et store. Les catégories OUTLET utilisées par le cron sont récupérées depuis la configuration par défaut.
Configuration des catégories OUTLET
- Créez dans Magento une ou plusieurs catégories destinées à l’outlet.
- Assurez-vous que les catégories sont actives et visibles dans le menu ou le listing si elles doivent être accessibles aux clients.
- Dans la configuration du module, sélectionnez toutes les catégories outlet dans le champ
Kategorie outletowe. - Enregistrez la configuration.
- Videz le cache Magento.
php bin/magento cache:flushImport de produits dans OUTLET
Accédez au panneau :
kowal > Upload Outlet ProductsDans le formulaire :
- Collez la liste des SKU, un SKU par ligne.
- Sélectionnez les catégories OUTLET.
- Sélectionnez éventuellement les websites auxquels le produit doit être attribué.
- Choisissez si le module doit activer la gestion des stocks pour les produits importés.
- Cliquez sur
Importuj.
Exemple de liste de SKU :
TSHIRT-BLACK-MTSHIRT-BLACK-LJACKET-NAVY-XLSHOES-WHITE-42Lors de l’import, le module :
- attribue les produits aux catégories OUTLET,
- définit l’attribut
sale, - met à jour les parents configurable,
- crée une copie du prix spécial et des dates de promotion,
- met à jour le stock selon l’option sélectionnée,
- actualise les index et le cache des produits et des catégories.
Gestion des produits configurables
Si le produit importé est une variante d’un produit configurable, le module recherche le parent et l’attribue à la catégorie OUTLET. Ainsi, le produit configurable apparaît dans le listing de la catégorie, et le client peut sélectionner la variante outlet.
Lors du recalcul cyclique, le module vérifie si le parent possède encore des variantes OUTLET actives. Si ce n’est pas le cas, le parent est détaché de la catégorie OUTLET.
Gestion des prix spéciaux
Lors de l’import dans OUTLET, le module enregistre une copie de :
special_price,special_from_date,special_to_date.
La copie est enregistrée conformément au scope de l’attribut de prix spécial dans Magento :
- pour les prix globaux : au niveau global,
- pour les prix par website : au niveau de la store view par défaut de chaque website,
- pour les prix par store : au niveau de la store view.
Le module ne convertit pas les devises. Magento stocke les prix comme valeurs de base pour le scope approprié, et la présentation des devises sur le frontend reste prise en charge par les mécanismes standard de Magento.
Le comportement après la fin de OUTLET dépend de l’option Usuń ceny specjalne dla produktów po wyprzedaży :
Tak: le module efface le prix spécial et supprime la copie technique,Nie: le module restaure le prix spécial ainsi que les dates à partir de la copie, puis supprime la copie technique.
Cron
Le module dispose d’une tâche cron :
kowal_outletproducts_outletLa tâche lance le helper OUTLET et vérifie cycliquement les produits outlet. Le cron retire les produits des catégories OUTLET lorsqu’ils ne doivent plus y être visibles, et actualise les index ainsi que le cache.
Après l’installation, assurez-vous que le cron Magento fonctionne correctement :
php bin/magento cron:runEn environnement de production, le cron doit être lancé depuis le crontab système de l’utilisateur de l’application Magento.
Lancement manuel du recalcul
Le recalcul peut être lancé manuellement depuis la CLI :
php bin/magento kowal_outletproducts:generateLa commande exécute le même processus que celui lancé par le cron.
Index et cache
Après les modifications, le module actualise les principaux index produit et catalogue :
catalog_product_price,catalog_product_category,catalogsearch_fulltext,inventory,cataloginventory_stock.
Le module vide également le cache des tags des produits et des catégories OUTLET, ce qui permet au listing de catégorie de se mettre à jour après un changement de statut ou le détachement d’un produit.
Si nécessaire, vous pouvez forcer une réindexation complète :
php bin/magento indexer:reindexphp bin/magento cache:flushTest après déploiement
Test fonctionnel recommandé :
- Sélectionnez un produit simple avec du stock.
- Définissez un prix spécial et des dates de promotion.
- Ajoutez le produit à OUTLET via le panneau d’import.
- Vérifiez que le produit est apparu dans la catégorie OUTLET.
- Vérifiez que l’attribut
salea la valeurTak. - Pour un produit configurable, vérifiez que le parent est apparu dans OUTLET.
- Modifiez l’état du produit afin qu’il ne soit plus salable.
- Lancez le cron ou la commande CLI.
- Vérifiez que le produit a été retiré de la catégorie OUTLET.
- Vérifiez que le prix spécial a été restauré ou supprimé conformément à la configuration.
Problèmes fréquents
Le produit est toujours visible dans OUTLET
Vérifiez :
- si le cron Magento fonctionne,
- si le produit n’a pas toujours
sale = 1, - si le produit est attribué à l’une des catégories configurées comme OUTLET,
- si les index et le cache ont été actualisés.
Commandes utiles :
php bin/magento cron:runphp bin/magento indexer:reindexphp bin/magento cache:flushLe parent configurable est toujours dans OUTLET
Vérifiez si une variante du produit possède encore sale = 1. Le parent est maintenu dans OUTLET tant qu’il possède une variante outlet active.
Le prix spécial n’a pas été restauré
Vérifiez :
- si le produit avait été ajouté à OUTLET après l’installation des attributs de copie,
- si l’attribut
special_price_copy_activeétait défini, - si la configuration
Usuń ceny specjalne dla produktów po wyprzedażyest définie surNie, - quel scope de prix est défini dans Magento.
Les prix diffèrent entre les store views
Vérifiez la configuration du scope des prix dans Magento. Le module ne convertit pas les devises et ne synchronise pas les prix entre les store views. Il restaure les valeurs enregistrées pour le scope de prix approprié.
Désinstallation
Si le module doit être désactivé :
php bin/magento module:disable Kowal_OutletProductsphp bin/magento setup:upgradephp bin/magento cache:flushSuppression du package Composer :
composer remove kowal/module-outletproductsphp bin/magento setup:upgradephp bin/magento cache:flushAvant de supprimer le module, il est recommandé de vérifier si les produits ne nécessitent pas un nettoyage manuel de l’attribut sale ou un détachement des catégories OUTLET.


















