Abverkauf für alle Artikeln erzwingen.

Hallo Zussammen,

ich möchte für alle Artikeln in meinem Shop das Verkaufen für die Waren, die auf dem Lager gerade fehlen, verbieten. Per Artikel gibt es die Einstellung „Abverkauf“ die ich auch per SQL Anfrage für alle Artikeln auf True setzten könnte. Ich würde aber lieber das per Shopware-Configuration tun. Ist das möglich? Wie?

 

Danke!

Roman

Mach doch eine Mehrfachänderung über das Backend mit Article.Laststock = true

2 „Gefällt mir“

Irgendwie sind die Artikeln trotz Article.Laststock = true bei Mengen <= 0 verkaufbar. Die Unterschiede, die ich merke:

  • Im Warenkorb Slide-Out steht jetzt eine Info, dass die Ware in unausreichenden Menge vorhanden ist

  • In Artikel-Detail sowie auf der Checkout/Confirm Seite steht ein vermerk “Lieferzeit ca. 5 Tage”

Das bestellen funktioniert aber trotzdem. Was ich möchte ist, dass Waren, die Warenkörbe, die Waren enthalten, die nicht auf Lager sind, nicht bestellbar sind. Auch schön wäre die Möglichkeit zu entziehen, unverfügbare Waren in Warenkorb reinzuschmeißen.

Wie könnte ich das erledigen?

versuchs mal in der DB: (Sicherung zuvor machen!)
update s_articles set laststock = replace(laststock,‚0‘,‚1‘);

was tut das? Wenn das einfach laststock auf 1 setzt, dann glaube ich habe ich das schon getan mittel „Mehrfachänderung“.

OK, das ist jetzt merkwurdig. Ich habe in Einstellungen > Grundeinstellungen > Warenkorb/Artikeldetails diefolgenden Änderungen eingetragen:

  • Abverkaufsartikel ohne Lagerbestand ausblenden: JA
  • Lagerbestands-Unterschreitung im Warenkorb anzeigen: JA
  • Text für nicht verfügbare Artikel: Artikel gerade nicht verfügbar (früher war hier „Lieferzeit ca. 5 Tage“).

Ich habe das gespreichert und ALLE caches per Backend geleert und noch ein mal im Console durch „php bin/console sw:cache:clear“. Trotzdem sehe ich alles wie früher: der AbverkaufsArtikel mit Bestand < 0 wird angezeigt und kann zum Warenkorb hinzugefügr werden. Shopware lässt auch diesen Warenkorb bestellen zu. Außerdem sehe ich „Lieferzeit ca. 5 Tage“ dort, wo das zum „Artikel gerade nicht verfügbar“ (soweit ich verstehe) stehen sollte. Es gibt auch keinen Vermerk im Warenkorb, dass der Artikel Lagerbestands-Unterschreitung hat. 

D.h. alle 3 Einstellungen haben in meinem Fall anscheinend KEINEN Effekt. Das wundert mich sehr. Könnte jemand das etwas aufklären bitte?

Der Haken bei “Abverkauf” führt soweit ich weiss nur dazu, dass beim Verkauf des letzten Artikels, dieser auf inaktiv gesetzt wird.

Standen deine Artikel schon auf Lagerbestand=0, so hat ein nachträgliches Setzen des Hakens keine Auswirkung und du müsstest da noch einmal nacharbeiten.

 

Bezüglich der scheinbar nicht funktionierenden Einstellungen kann ich dir leider nicht helfen, aber sobald deine bereits auf 0 stehenden Artikel deaktiviert sind sollte der Abverkauf ordnungsgemäß funktionieren.

1 „Gefällt mir“

Vllt. Mitarbeiter von Shopware könnten hier das problem mit nicht-funktionierenden Grundeinstellungen erklären? Könnte jemand die zuständige Personen hier einladen?

(ich verwende dabei die letzte Version von Software)

Setzt du eine 5.4 ein?
Ab 5.4 hat sich das Handling ja grundlegend geändert, da wird Abverkauf pro Variante eingestellt. Entsprechend muss man bei der Mehrfachänderung und auch der Datenbank die Spalte in der s_article_details setzen.

Generell werden die Produkte ausgeblendet, die einen Bestand <= 0 haben, wenn die Option in den Grundeinstellungen aktiviert ist. Voraussetzung ist natürlich, dass dies für alle Varianten gilt. Der Hinweis im Warenkorb hat nichts mit Abverkauf zu tun - bei Abverkauf kann der Artikel ja garnicht mehr als Bestand in den Warenkorb gelegt werden. Die Option bringt also nur was, wenn du Abverkauf bei dem Artikel nicht nutzt, ann wird dort angezeigt “5 von 6 Lieferbar” - der Kunde kann aber weiterhin die 6 kaufen.

Hab also drei Szenarien einmal getestet:

  • Abverkaufsartikel + Option zum ausblenden inaktiv
    -> Produkt aufrufbar, aber kein “In den Warenkorb” - Lieferzeit ca. 5 Tage wird angezeigt

  • Abverkaufsartikel + Option zum ausblenden aktiv
    -> Produkt nicht aufrufbar - kann somit auch nicht in den Warenkorb gelegt werden

  • Normales Produkt mit Bestand 5 + Option Lagerbestandsunterschreitung anzeigen
    -> Produkt 6x kaufbar, Hinweis wird angezeigt, dass nur 5 lieferbar sind

Das funktioniert also erstmal wie gewünscht.
Eine 5.4 hab ich gerade nicht zur Hand. Die tests waren jetzt in einer 5.3.7.

1 „Gefällt mir“

Ja, es sieht so aus, dass es eine Krankheit von 5.4 ist. Ich habe 5.3.7 installiert und die Einstellungen funktionieren hier wie intuitiv verstänbar – ich kann keine minus-Mengen von Abverkaufartikeln haben, weil ich nicht mehr Artikeleinheiten in den Warenkorb reinschmeißen kann, als ich im Bestand habe und wenn ich 0 im Bestand habe gibt es keine Taste “In den Warenkorb” mehr. In 5.4 kann ich soviel Atrikel in Wareinkorb hinzufügen, wie ich möchte sowie sie auch kaufen. Und das bei gleichen Einstellungen. Vllt. ist das so von Entwicklern gemeint, aber meiner Meinung nach ist es so ganz unintuitiv, verwirrend und soll anders gemacht werden.

Ich erstelle jetzt ein Ticket.

Hi,

ich habe das gerade in 5.4 getestet und da läuft Abverkauf auch bei mir wie gewünscht.

Ist eine Variante als Abverkauf markiert, dann kann ich nur so viel kaufen und in den Warenkorb legen, wie tatsächlich auf Lager sind.

So kann ich da erstmal kein Problem feststellen. Ggf. tritt das Problem bei dir in Kombination mit nem Plugin auf? Ist tatsächlich Abverkauf auch bei der einzelnen Variation gesetzt?

Sebastian

1 „Gefällt mir“

Ich habe vor einem Moment noch ein mal 5.4 reinstalliert und jetzt funktioniert das Ding richtig.

Aber ja, das könnte an meinem Plugin liegen. 

Ja, das hat bestimmt etwas mit meinem Plugin zu tun, wobei das in 5.3.7 nicht vorkommt.

Wieso kann es so sein? Mein Plugin importiert Waren aus einer Preisliste, wobei ich Importdaten so konfiguriere:

$articleData = array(
                    'name' => $line[$columnIndexes['Description']],
                    'tax' => array(
                        'name' => 'MwSt',
                        'tax' => 19
                    ),
                    'active' => true,
                    'description' => $line[$columnIndexes['Description 2']]
                        . " " . $line[$columnIndexes['Description 3']],
                    'categories' => array(
                        array('path' => RreimcheImportEET::provideCategory($line[$columnIndexes['Item Group Web Tree']]))
                    ),
                    'supplier' => $line[$columnIndexes['Brand Name']],
                    'mainDetail' => array(
                        'number' => RreimcheImportEET::importArticleNumber($line[$columnIndexes['Item No.']]),
                        'active' => true,
                        'inStock' => $line[$columnIndexes['Home stock']],
                        'prices' => array(
                            array(
                                'customerGroupKey' => 'EK',
                                'from' => 1,
                                'to' => '',
                                'price' => RreimcheImportEET::providePrice($line[$columnIndexes['Customers Price']])
                            )
                        ),
                        'attribute' => array(
                            'attr1' => $line[$columnIndexes['Item No.']],
                            'attr2' => $line[$columnIndexes['Customers Price']] 
                        ),
                    ),
                    'laststock' => 1
                );

if ($line[$columnIndexes['Item Picture Link (Web)']] != "") {
                    $articleData['images'] = array(
                        array('link' => RreimcheImportEET::provideImageURL($line[$columnIndexes['Item Picture Link (Web)']]))
                    );
                }

Und speichere ich die Artikeln so:

// entweder so

$articleResource->create($articleData);

// oder so

$article = $articleResource->getOneByNumber($articleData['mainDetail']['number']);
$articleResource->update($article['id'], $articleData);

 

Naja ab 5.4 ist instock ja Teil der mainDetails - wahrscheinlich wird der bei dir garnicht mehr richtig bei einem Import gesetzt.

@Moritz Naczenski schrieb:

Naja ab 5.4 ist instock ja Teil der mainDetails - wahrscheinlich wird der bei dir garnicht mehr richtig bei einem Import gesetzt.

Doch, ich wette inStock für mainDetails, wie man im Code sieht.

Hi @rreimche‍!

Kannst Du vielleicht mal testweise ein JSON für die Erzeugung eines Artikels (per PN oder so) schicken? Dann schau ich mir das gern mal an.

Allgemein gilt: Seid 5.4 sollte das lastStock-Flag für alle Varianten gesetzt werden. Wir emulieren zwar das alte Verhalten (sprich: Wird das Flag nur an der Hauptvariante gesetzt, dann übernehmen wir das für alle anderen Varianten), aber das wird in Zukunft irgendwann wieder ausgebaut werden.

mich würde auch interessieren, ob es eine Möglichkeit gibt, die Abverkauf checkbox für die Varianten über das Backend zu setzen.
Bisher habe ich auch die Möglichkeit, das direkt in der Datenbank in s_articles_details zu machen

Hallo, 

ich habe ein ähnliches Problem. Ich möchte bei einer gewissen Anzahl von Artikeln den Hacken bei „Artikel bei Bestand <=0 nicht bestellbar“ löschen. Sprich das diese auch ohne Lagerbestand gekauft werden können. Kann ich dies über die Mehrfachänderung durchführen? 

Und wenn ja wie genau muss ich vorgehen?