Hallo zusammen,
ich habe eine Frage zum Bestands- und Warenkorbverhalten in Shopware 6 in Kombination mit einem externen ERP (Xentral) und hoffe auf Erfahrungswerte oder eine native Lösung.
Setup / Kontext:
Aktuelles Verhalten:
-
Auf der Produktdetailseite (PDP) ist die auswählbare Menge korrekt auf den verfügbaren Bestand begrenzt.
-
Im Warenkorb bzw. Checkout kann die Menge jedoch über den verfügbaren Bestand hinaus erhöht werden.
-
Dadurch sind theoretisch Überverkäufe möglich.
Warum „Abverkauf / Closeout“ für uns keine Lösung ist:
-
In Shopware würde Abverkauf das Mengenproblem grundsätzlich lösen.
-
In unserem ERP hat das Abverkauf-/Restmengen-Flag jedoch zusätzliche Bedeutung:
- Sobald ein Artikel mit aktivem Abverkauf auf Bestand 0 fällt, stellt das ERP die automatische Bestandssynchronisation nach Shopware ein, selbst wenn später wieder Ware eingebucht wird.
-
Deshalb können wir dieses Flag weder im ERP noch in Shopware verwenden.
Meine Frage:
Gibt es in Shopware 6 eine native Konfiguration oder einen empfohlenen Workaround, um die Warenkorb-/Checkout-Menge auf den verfügbaren Bestand zu begrenzen, ohne Abverkauf zu nutzen oder Out-of-Stock-Produkte auszublenden?
Oder ist in einem solchen ERP-getriebenen Setup eine Custom-Validierung im Warenkorb/Checkout der einzig saubere Weg?
Vielen Dank für jeden Hinweis oder Erfahrungsbericht.
Einfach das Template überschreiben. Bei der if-Abfrage die Prüfung auf isCloseout entfernen.
Das ist zwar nicht 100% sichere Lösung, da über den Warenkorb und Produkt hinzufügen das umgangen werden kann, aber auch das kann man theoretisch entfernen.
Alternativ den AddProductController (oder wie er auch immer heißt) umschreiben.
Moin @parsolu,
wäre es nicht am einfachsten den Abverkauf in Shopware setzen zu lassen, auch wenn er nicht in Xentral gesetzt wurde? Dies ist soweit ich weiß sogar der Default, wenn man den Wert einfach gar nicht überträgt. Damit sollten sich die Probleme doch auch lösen?
Grüße
Matthias
Danke euch! Nach unseren Tests können wir Closeout weder in Xentral noch in Shopware nutzen, da bei Bestand = 0 die Kaufbarkeit gesperrt wird und unser RFQ/„On Request“-Flow dadurch nicht sauber funktioniert.
Damit bleibt aus meiner Sicht nur eine serverseitige Lösung: Cart-/Checkout-Validierung, die Mengen > verfügbarer Bestand verhindert und Race Conditions abfängt, ohne Produkte bei Stock=0 zu verstecken oder zu deaktivieren.
– oder gibt es doch noch einen Shopware-Mechanismus, den man ohne Custom Plugin nutzen kann?
Habt ihr noch eine Idee?
Moin @parsolu,
in Shopware wollt ihr doch keine Überverkäufe generieren, wenn ich das richtig verstehe? Dann ist hier doch die Lösung des Abverkaufshaken.
Was genau macht denn euer nachgelagerter Flow an der Stelle?
Ansonsten eventuell nochmal schauen, ob man die product.calculatedMaxPurchase im Theme manipuliert (Beispiel für die PDP). Ist auch nicht zu 100% sicher, da man dann vermutlich mehrfach etwas in den Warenkorb legen kann und es immer nur bei der Auswahl eine Begrenzung gibt, nicht aber bei der gesamten Warenkorbsmenge. Da müsste man dann vermutlich noch den CartProcessor oder ähnliches bearbeiten. 
Grüße
Matthias
Moin Matthias,
ja, korrekt – Überverkäufe wollen wir natürlich verhindern.
Der Knackpunkt ist bei uns aber weniger der Stock selbst, sondern die Auswirkung von Closeout auf die Interaktion im Frontend.
Wir haben Artikel mit mehreren Varianten (z. B. Farbe).
Ein Teil der Varianten ist lagernd, andere nicht.
Wenn wir Abverkauf (Closeout) aktivieren, passiert Folgendes (korrektes Standardverhalten von Shopware):
-
Varianten mit Bestand = 0 werden im Frontend gesperrt / ausgegraut
-
sie sind nicht mehr interaktiv (durchgestrichen, nicht auswählbar)
Technisch ist das korrekt – fachlich ist es für unseren Use-Case aber ein Problem,
weil wir für jede Variante (auch bei Bestand = 0) weiterhin eine Interaktion ermöglichen müssen (z. B. Anfrage / „On Request“).
product.calculatedMaxPurchase im Theme zu manipulieren haben wir auch betrachtet,
das löst aber nur die UI-Seite und nicht die Gesamtmenge im Warenkorb bzw. parallele Käufe.
Damit landet man zwangsläufig bei einer Cart-/Checkout-Validierung (CartProcessor / Validator).
Falls es dafür einen nativen Shopware-Mechanismus ohne Custom-Code gibt, wäre das natürlich spannend – aktuell sieht es aber nach einer gezielten Custom-Lösung aus.
Danke für deinen Input
Moin @parsolu
soweit verstanden. Wie wollt ihr denn die weitere Interaktion abbilden, oder wie macht ihr es aktuell?
Standartmäßig gibt es da ja in Shopware auch keine Funktion für, um zB eine E-Mail Adresse einzutragen, die dann informiert, wenn wieder Bestand verfügbar ist.
Nach meiner aktuellen Einschätzung wird es vermutlich einfacher sein, mit dem Abverkaufshaken in Shopware zu haben, da ihr dann die „komplexen“ Dinge erledigt habt.
Dann muss sich um die Interaktion Gedanken gemacht werden. Hierbei kann ich das bei euch nicht einschätzen.
Aber im Standart ist es so:
Bestand da → WK Button
Bestand nicht da und Abverkauf aus → WK Button
Bestand nicht da und Abverkauf an → Nicht mehr verfügbar.
Da habt ihr an der Stelle ja auch keine Interaktion im Standard.
Grüße
Matthias
1 „Gefällt mir“
Moin Matthias,
danke dir – das bestätigt im Grunde genau das, was wir auch beobachtet und getestet haben 
Unser Use-Case liegt hier bewusst außerhalb des Shopware-Standards: Wir haben ein stark angepasstes Theme + eigenes Plugin mit RFQ-/„On Request“-Modell, bei dem Varianten auch bei Bestand = 0 weiterhin interaktiv bleiben müssen.
Mir ging es vor allem darum, sicherzugehen, dass es in Shopware selbst keine Out-of-the-box-Lösung für
„nicht kaufbar bei Stock = 0, aber weiterhin interaktiv + sichere Warenkorb-/Checkout-Validierung“ gibt,
bevor wir dafür gezielt Custom-Development anstoßen.
Das scheint hier tatsächlich der Fall zu sein – danke für den Austausch und die Bestätigung.
Grüße
1 „Gefällt mir“