Outlet-Modul für Magento 2 - Automatisierung von Abverkäufen
Kowal Outlet Products ist ein Magento-2-Modul, das die Verwaltung von Outlet-Produkten, Sale-Artikeln und Restposten automatisiert. Die Lösung hilft dabei, Ordnung im Katalog zu halten, Produkte der Kategorie OUTLET zuzuweisen, sie mit einem dedizierten Attribut zu kennzeichnen und sie aus dem Outlet zu entfernen, wenn sie nicht mehr als Abverkaufsangebot sichtbar sein sollten.
Das Modul wurde für Shops entwickelt, in denen sich Outlet-Produkte dynamisch ändern: Ein Teil sind einzelne einfache Produkte, ein Teil sind Varianten konfigurierbarer Produkte, und ein Teil erfordert die Unterstützung mehrerer Shops, mehrerer Websites und unterschiedlicher Preiskonfigurationen.
Zentraler geschäftlicher Nutzen
In Magento erfordert die Verwaltung eines Outlets standardmäßig häufig die manuelle Kontrolle mehrerer Elemente gleichzeitig: Kategorien, Produktstatus, Sonderpreis, Lagerbestände, konfigurierbare Varianten und Cache. Bei einem größeren Katalog kann es leicht passieren, dass ein Produkt trotz Ausverkauf weiterhin im OUTLET erscheint, das Parent-Produkt eines konfigurierbaren Produkts ohne aktive Varianten in der Kategorie verbleibt oder ein Sonderpreis entgegen der Shop-Konfiguration wiederhergestellt wird.
Kowal Outlet Products strukturiert diesen Prozess. Der Administrator kann eine SKU-Liste zum Outlet hinzufügen, und das Modul kümmert sich um die Zuweisung zu den richtigen Kategorien, das Setzen des OUTLET-Attributs, die Verarbeitung von Configurable-Parents sowie das spätere automatische Entfernen der Produkte nach Abschluss des Verkaufs.
Wichtigste Funktionen
- Massenimport von Produkten in OUTLET anhand einer SKU-Liste,
- Zuweisung von Produkten zu einer oder mehreren Outlet-Kategorien,
- Unterstützung einfacher Produkte und Varianten konfigurierbarer Produkte,
- automatische Kennzeichnung von Produkten mit dem Attribut
sale, - Zuweisung von Configurable-Parents zu OUTLET, wenn deren Varianten Outlet-Produkte sind,
- automatisches Entfernen von Produkten aus der Kategorie OUTLET nach dem Ausverkauf oder nach Deaktivierung des Outlet-Status,
- Entfernen des Configurable-Parents, wenn keine Variante mehr ein OUTLET-Produkt ist,
- zyklische Produktprüfung per Cron,
- manuelle Ausführung der Neuberechnung über die Magento-Konsole,
- Aktualisierung von Indizes sowie Produkt- und Kategorie-Cache,
- Unterstützung von Lagerbestand und Backorders nach Abschluss des Abverkaufs,
- Backup und Wiederherstellung von Sonderpreisen,
- Unterstützung von Multistore-Konfigurationen und Website-Scope für Preise,
- OUTLET-Kennzeichnungen bei Varianten-Swatches auf der Produktseite.
So funktioniert der OUTLET-Prozess
Der Administrator wählt die Outlet-Kategorien in der Modulkonfiguration aus. Anschließend kann er im Adminbereich eine SKU-Liste einfügen und Produkte zum Abverkauf hinzufügen. Das Modul weist die Produkte der Kategorie OUTLET zu und setzt das Attribut sale.
Bei konfigurierbaren Produkten arbeitet das Modul auf zwei Ebenen. Ist eine Variante ein Outlet-Produkt, kann auch der Configurable-Parent der Kategorie OUTLET hinzugefügt werden, damit der Kunde das Produkt im Listing sieht. Wenn die Variante ausverkauft ist oder den OUTLET-Status verliert, prüft das Modul, ob der Parent weiterhin aktive Outlet-Varianten besitzt. Falls nicht, wird der Parent aus OUTLET entfernt.
Der Modul-Cron prüft regelmäßig den Produktstatus. Wenn ein Produkt nicht mehr verkäuflich ist, entfernt das Modul es aus den Outlet-Kategorien, ändert den Outlet-Status und aktualisiert die Daten in den Indizes sowie im Cache. Dadurch bleibt das Listing der Kategorie OUTLET ohne manuelle Arbeit des Administrators aktuell.
Verwaltung von Sonderpreisen
Das Modul kann Sonderpreise während des OUTLET-Zyklus vor Verlust schützen. Beim Hinzufügen eines Produkts zum Outlet wird der aktuelle Sonderpreis in technische Attribute kopiert. Nach Abschluss des Outlets kann der Preis je nach Konfiguration wiederhergestellt oder gelöscht werden.
Das Backup umfasst:
special_price,special_from_date,special_to_date.
Das Modul berücksichtigt den Preis-Scope von Magento. Sind die Preise global, arbeitet es auf globaler Ebene. Sind die Preise pro Website festgelegt, speichert und stellt das Modul die Werte gemäß den Standard-Store-Views der Websites wieder her. Es führt keine Währungsumrechnungen durch, da Magento Preise als Basiswerte für den jeweiligen Scope speichert und Shop-Währungen durch Magento-Mechanismen umgerechnet werden.
Multistore und Mehrwährungsfähigkeit
Kowal Outlet Products kann in Magento-Installationen mit mehreren Store Views und Websites eingesetzt werden. Beim Import kann der Administrator die Websites angeben, denen das Produkt zugewiesen werden soll. Die Modulkonfiguration ist auf Default-, Website- und Store-Ebene verfügbar, sodass das Verhalten an die Shop-Struktur angepasst werden kann.
Im Bereich der Sonderpreise multipliziert oder konvertiert das Modul keine Werte zwischen Währungen. Es behält die in Magento für den richtigen Preis-Scope gespeicherten Beträge bei. Dadurch lassen sich Fehler durch manuelle Wechselkursumrechnungen vermeiden, und die Verantwortung für die Währungsdarstellung bleibt den Standardmechanismen von Magento überlassen.
Anwendungsbeispiel
Ein Shop verkauft Kleidung und hat eine Kategorie OUTLET, in der die letzten Stücke von Produkten aus früheren Kollektionen angezeigt werden. Der Administrator erhält eine SKU-Liste der Varianten, die in den Abverkauf aufgenommen werden sollen, zum Beispiel:
TSHIRT-BLACK-MTSHIRT-BLACK-LJACKET-NAVY-XLSHOES-WHITE-42Nach dem Einfügen der Liste in das Import-Panel führt das Modul Folgendes aus:
- setzt die Produkte als OUTLET,
- weist sie der Kategorie
OUTLETzu, - weist die Parent-Produkte konfigurierbarer Produkte zu, sofern deren Varianten Outlet-Produkte sind,
- speichert eine Kopie der aktuellen Sonderpreise,
- aktualisiert optional die Lagerbestandseinstellungen,
- aktualisiert Indizes und Cache.
Der Kunde sieht die Produkte in der Kategorie OUTLET sowie Kennzeichnungen bei den Varianten. Wenn das letzte Stück einer Variante verkauft wird, erkennt der Modul-Cron, dass das Produkt nicht mehr salable ist, entfernt es aus OUTLET und aktualisiert das Listing. War dies die letzte Outlet-Variante des jeweiligen konfigurierbaren Produkts, wird auch der Parent aus der Kategorie OUTLET entfernt.
Für wen ist dieses Modul geeignet
Das Modul richtet sich an Magento-2-Shops, die:
- eine feste OUTLET- oder SALE-Sektion betreiben,
- häufig mit Restposten arbeiten,
- konfigurierbare Produkte mit Varianten unterschiedlicher Abverkaufsstatus haben,
- manuelle Arbeit bei der Aktualisierung von Kategorien reduzieren möchten,
- Kontrolle über Sonderpreise in einer Multistore-Umgebung benötigen,
- veraltete Produkte in Kategorie-Listings vermeiden möchten.
Technische Elemente
- Composer-Paketname:
kowal/module-outletproducts - Magento-Modulname:
Kowal_OutletProducts - CLI-Befehl:
bin/magento kowal_outletproducts:generate - Konfigurationspanel:
Stores > Configuration > kowal > OUTLET Products - Import-Panel:
kowal > Upload Outlet Products - Wichtigste Produktattribute:
sale,special_price_copy,special_from_date_copy,special_to_date_copy,special_price_copy_active
Ergebnis der Implementierung
Nach der Implementierung des Moduls erhält der Shop einen konsistenten Prozess zur Verwaltung des Outlets: Produkte gelangen in die richtigen Kategorien, Varianten und Parents werden logisch verwaltet, Sonderpreise werden geschützt und Katalogdaten nach Änderungen aktualisiert. Dadurch können sich Administratoren auf die Auswahl der Produkte für den Abverkauf konzentrieren, statt Kategorien und Cache manuell aufzuräumen.
Installation und Konfiguration des Moduls Kowal Outlet Products
Grundlegende Informationen
- Composer-Paket:
kowal/module-outletproducts - Magento-Modul:
Kowal_OutletProducts - Erforderlicher Anwendungstyp: Magento 2
- Paketabhängigkeit:
kowal/base - CLI-Befehl des Moduls:
bin/magento kowal_outletproducts:generate
Installation über Composer
Fügen Sie das Modul-Repository hinzu:
composer config repositories.module.outlet.products vcs https://github.com/kowalco/magento-2-outlet-productsWenn das Repository privat ist, konfigurieren Sie das Zugriffstoken:
composer config --auth github-oauth.github.com Installieren Sie das Modul:
composer require kowal/module-outletproductsAktivieren Sie das Modul:
php bin/magento module:enable Kowal_OutletProductsFühren Sie die Datenbankaktualisierung aus:
php bin/magento setup:upgradeFühren Sie in der Produktionsumgebung die DI-Kompilierung und das Deployment statischer Ressourcen gemäß dem Deployment-Prozess des Shops aus:
php bin/magento setup:di:compilephp bin/magento setup:static-content:deployLeeren Sie den Cache:
php bin/magento cache:flushAktualisierung einer bestehenden Installation
Führen Sie nach der Aktualisierung des Moduls Folgendes aus:
composer update kowal/module-outletproductsphp bin/magento setup:upgradephp bin/magento cache:flushWenn der Shop im production mode läuft, führen Sie außerdem die standardmäßigen Deployment-Schritte aus:
php bin/magento setup:di:compilephp bin/magento setup:static-content:deploysetup:upgrade ist erforderlich, da das Modul Produktattribute hinzufügt und aktualisiert, die für die Verwaltung von OUTLET sowie für Kopien von Sonderpreisen verwendet werden.
Produktattribute
Das Modul fügt die folgenden Attribute hinzu oder verwendet sie:
| Attribut | Bedeutung |
|---|---|
sale | Kennzeichnet das Produkt als OUTLET. |
special_price_copy | Kopie des Werts special_price vor Aufnahme des Produkts in OUTLET. |
special_from_date_copy | Kopie des Datums special_from_date. |
special_to_date_copy | Kopie des Datums special_to_date. |
special_price_copy_active | Marker, der angibt, dass die Kopie des Sonderpreises erstellt wurde. |
Konfiguration im Adminbereich
Gehen Sie zu:
Stores > Configuration > kowal > OUTLET ProductsVerfügbare Optionen:
| Option | Beschreibung |
|---|---|
Włącz moduł Outlet | Aktiviert oder deaktiviert die Funktion des Moduls. |
Usuń ceny specjalne dla produktów po wyprzedaży | Legt fest, ob der Sonderpreis nach Abschluss von OUTLET gelöscht werden soll. Wenn die Option deaktiviert ist, stellt das Modul den Preis aus der Kopie wieder her. |
Kategorie outletowe | Liste der Kategorien, denen OUTLET-Produkte zugewiesen und aus denen sie später automatisch entfernt werden. |
Wyłącz zarządzanie stanem magazynowym po wyprzedaży | Ermöglicht das Deaktivieren von manage_stock nach Abschluss des Abverkaufs. |
Włącz backorder po zakończeniu wyprzedaży outletowej | Ermöglicht das Aktivieren von Backorder und das Kennzeichnen des Produkts als verfügbar nach Abschluss des Outlet-Verkaufs. |
Die Konfiguration ist auf Default-, Website- und Store-Ebene verfügbar. Die von Cron verwendeten OUTLET-Kategorien werden aus der Standardkonfiguration geladen.
Konfiguration der OUTLET-Kategorie
- Erstellen Sie in Magento eine oder mehrere Kategorien für das Outlet.
- Stellen Sie sicher, dass die Kategorien aktiv und im Menü oder Listing sichtbar sind, wenn sie für Kunden zugänglich sein sollen.
- Wählen Sie in der Modulkonfiguration alle Outlet-Kategorien im Feld
Kategorie outletoweaus. - Speichern Sie die Konfiguration.
- Leeren Sie den Magento-Cache.
php bin/magento cache:flushImport von Produkten in OUTLET
Gehen Sie zum Panel:
kowal > Upload Outlet ProductsIm Formular:
- Fügen Sie die SKU-Liste ein, eine SKU pro Zeile.
- Wählen Sie die OUTLET-Kategorien aus.
- Wählen Sie optional die Websites aus, denen das Produkt zugewiesen werden soll.
- Wählen Sie aus, ob das Modul die Lagerbestandsverwaltung für die importierten Produkte aktivieren soll.
- Klicken Sie auf
Importuj.
Beispielhafte SKU-Liste:
TSHIRT-BLACK-MTSHIRT-BLACK-LJACKET-NAVY-XLSHOES-WHITE-42Während des Imports führt das Modul Folgendes aus:
- weist Produkte den OUTLET-Kategorien zu,
- setzt das Attribut
sale, - aktualisiert Configurable-Parents,
- erstellt eine Kopie des Sonderpreises und der Aktionsdaten,
- aktualisiert den Lagerbestand gemäß der ausgewählten Option,
- aktualisiert Indizes sowie Produkt- und Kategorie-Cache.
Unterstützung konfigurierbarer Produkte
Wenn das importierte Produkt eine Variante eines konfigurierbaren Produkts ist, sucht das Modul den Parent und weist ihn der Kategorie OUTLET zu. Dadurch erscheint das konfigurierbare Produkt im Kategorie-Listing, und der Kunde kann die Outlet-Variante auswählen.
Während der zyklischen Neuberechnung prüft das Modul, ob der Parent weiterhin aktive OUTLET-Varianten besitzt. Falls nicht, wird der Parent von der Kategorie OUTLET getrennt.
Verwaltung von Sonderpreisen
Beim Import in OUTLET speichert das Modul eine Kopie von:
special_price,special_from_date,special_to_date.
Die Kopie wird gemäß dem Scope des Sonderpreis-Attributs in Magento gespeichert:
- für globale Preise: auf globaler Ebene,
- für Preise pro Website: auf Ebene des Standard-Store-Views jeder Website,
- für Preise pro Store: auf Store-View-Ebene.
Das Modul rechnet keine Währungen um. Magento speichert Preise als Basiswerte für den jeweiligen Scope, und die Währungsdarstellung im Frontend bleibt den Standardmechanismen von Magento überlassen.
Das Verhalten nach Abschluss von OUTLET hängt von der Option Usuń ceny specjalne dla produktów po wyprzedaży ab:
Tak: Das Modul löscht den Sonderpreis und entfernt die technische Kopie,Nie: Das Modul stellt den Sonderpreis und die Daten aus der Kopie wieder her und entfernt anschließend die technische Kopie.
Cron
Das Modul verfügt über einen Cron-Job:
kowal_outletproducts_outletDer Job startet den OUTLET-Helper und prüft zyklisch die Outlet-Produkte. Cron entfernt Produkte aus der Kategorie OUTLET, wenn sie dort nicht mehr sichtbar sein sollten, und aktualisiert Indizes sowie Cache.
Stellen Sie nach der Installation sicher, dass Magento-Cron korrekt funktioniert:
php bin/magento cron:runIn der Produktionsumgebung sollte Cron über den systemweiten Crontab des Magento-Anwendungsbenutzers ausgeführt werden.
Manuelle Ausführung der Neuberechnung
Die Neuberechnung kann manuell über CLI gestartet werden:
php bin/magento kowal_outletproducts:generateDer Befehl führt denselben Prozess aus, der durch Cron gestartet wird.
Indizes und Cache
Nach Änderungen aktualisiert das Modul die wichtigsten Produkt- und Katalogindizes:
catalog_product_price,catalog_product_category,catalogsearch_fulltext,inventory,cataloginventory_stock.
Das Modul leert außerdem den Cache der Tags von Produkten und OUTLET-Kategorien, sodass sich das Kategorie-Listing nach einer Statusänderung oder dem Entfernen eines Produkts aktualisieren sollte.
Bei Bedarf kann eine vollständige Neuindizierung erzwungen werden:
php bin/magento indexer:reindexphp bin/magento cache:flushTest nach der Implementierung
Empfohlener Funktionstest:
- Wählen Sie ein einfaches Produkt mit Lagerbestand aus.
- Legen Sie einen Sonderpreis und Aktionsdaten fest.
- Fügen Sie das Produkt über das Import-Panel zu OUTLET hinzu.
- Prüfen Sie, ob das Produkt in der Kategorie OUTLET erscheint.
- Prüfen Sie, ob das Attribut
saleden WertTakhat. - Prüfen Sie bei einem konfigurierbaren Produkt, ob der Parent in OUTLET erscheint.
- Ändern Sie den Produktbestand so, dass das Produkt nicht mehr salable ist.
- Starten Sie Cron oder den CLI-Befehl.
- Prüfen Sie, ob das Produkt aus der Kategorie OUTLET entfernt wurde.
- Prüfen Sie, ob der Sonderpreis gemäß der Konfiguration wiederhergestellt oder entfernt wurde.
Häufigste Probleme
Das Produkt ist weiterhin in OUTLET sichtbar
Prüfen Sie:
- ob Magento-Cron läuft,
- ob das Produkt weiterhin
sale = 1hat, - ob das Produkt einer der als OUTLET konfigurierten Kategorien zugewiesen ist,
- ob Indizes und Cache aktualisiert wurden.
Hilfsbefehle:
php bin/magento cron:runphp bin/magento indexer:reindexphp bin/magento cache:flushConfigurable-Parent ist weiterhin in OUTLET
Prüfen Sie, ob irgendeine Produktvariante weiterhin sale = 1 hat. Der Parent bleibt in OUTLET, solange er eine aktive Outlet-Variante besitzt.
Der Sonderpreis wurde nicht wiederhergestellt
Prüfen Sie:
- ob das Produkt zuvor nach der Installation der Kopie-Attribute zu OUTLET hinzugefügt wurde,
- ob das Attribut
special_price_copy_activegesetzt war, - ob die Konfiguration
Usuń ceny specjalne dla produktów po wyprzedażyaufNiegesetzt ist, - welcher Preis-Scope in Magento eingestellt ist.
Preise unterscheiden sich zwischen Store Views
Prüfen Sie die Konfiguration des Preis-Scopes in Magento. Das Modul rechnet keine Währungen um und synchronisiert keine Preise zwischen Store Views. Es stellt Werte wieder her, die für den jeweiligen Preis-Scope gespeichert sind.
Deinstallation
Wenn das Modul deaktiviert werden soll:
php bin/magento module:disable Kowal_OutletProductsphp bin/magento setup:upgradephp bin/magento cache:flushEntfernen des Composer-Pakets:
composer remove kowal/module-outletproductsphp bin/magento setup:upgradephp bin/magento cache:flushVor dem Entfernen des Moduls wird empfohlen zu prüfen, ob Produkte eine manuelle Bereinigung des Attributs sale oder ein Entfernen aus der Kategorie OUTLET erfordern.



















