Wie Bestellmengenauswahl beeinflussen?

Hallo zusammen,

ich weiß nicht, wie ich folgende Aufgabe lösen soll: Ich will im Shop Druckerzeugnisse verkaufen, die aber erst nach Bestellung durch den Kunden quasi On-Demand bei einer Onlinedruckerei geordert werden sollen.

Hierzu ist es notwendig, in der Bestellmengenauswahl (Dropdown-Menü) nur die Mengen anzuzeigen, die von der Onlinedruckerei angeboten werden. Die Druckerei bietet etwa folgende Bestellmengen an: 100, 250, 500, 1000, 2500, 5000, 7500, 10000.

Nur diese Werte sollen im Dropdownmenü auswählbar sein. Mit den Standardfunktionalitäten wird man sich das wohl nicht zusammenklicken können aber hat jemand eine Idee, wie man das Mengen-Dropdown sonstwie mit einfachen Mitteln beeinflussen könnte? Gut wäre es, wenn man die Bestellmengen in einem Freitextfeld beim Artikel hinterlegen könnte und das würde dann zum Bau des Dropdown-Menüs genommen, dann würde evtl. eine einfache Anpassung des Themes ausreichen. Oder kennt jemand ein Plugin dafür oder hat eine andere Idee?

Danke und Grüße
Pierre

Eine Möglichkeit die mir so spontan einfällt wäre ein zusätzliches Freitextfeld anzulegen mit Checkbox. Diese Checkbox mit Label “Druckerei” oder so ähnlich. Bei “0” ist es ein ganz normaler Artikel und bei “1” ein Artikel für die Druckerei.

Anschließend den Block “frontend_detail_buy_quantity_select” im Template \themes\Frontend\xxx\frontend\detail\buy.tpl (eigenen Theme) etwas umstellen. Quasi hier abfragen, ob das Freitextfeld “Druckerei” gesetzt ist. Wenn ja, dann hier bei Option die Mengen 100, 250, 500, 1000, 2500, 5000, 7500, 10000 eintragen. Falls “Druckerei” nicht gesetzt, dann ganz normal ausgeben lassen.

Nur so eine Idee falls die Mengen überall gleich sein sollte - ganz ohne Plugin.

Vielen Dank für die Anregung! Ich habe es jetzt so gemacht, dass man ein Freitextfeld beim Artikel kommagetrennt mit den Werten befüllt und im Frontend nehme ich mit Smarty den String auseinander (explode funktioniert auch mit Smarty), und das Array durchlaufe ich mit einer Foreach-Schleife, um die Option-Tags zu erzeugen. Ich konnte es so dazwischenfummeln, dass die Standardfunktionalität nicht verloren geht.

Nur: Im Warenkorb gibt’s ja nochmal das gleiche Problem und da wird es haarig. Ich hab ja eine Höchstbestellmenge von 10.000 und die Standardfunktionalität baut ja dann ein Dropdown-Menü mit 10.000 Einträgen, was das ganze Frontend abstürzen lässt. Mein schönes Freitextfeld (attr7), mit dem ich vielleicht im Warenkorb auch das Menü anpassen könnte, wird aber nicht an den Warenkorb weitergegeben, es ist im Template nicht ansprechbar.

Hat jemand eine Idee, wie ich das Freitextfeld im Warenkob-Template benutzbar machen könnte oder gibt es einen anderen Ansatz?

Ansonsten ein ganz anderer Ansatz das Ganze vlt. über die Varianten Lösen? DIN A1 Flyer bekommt die Variante 100Stk / 200Stk. / 500Stk.

So, ich hab es jetzt selbst gelöst. Im  Warenkorb konnte man das Attributfeld doch abfragen. Ich hatte anfänglich das sArticle Array benutzt, das geht im Warenkorb natürlich nicht, da können ja mehrere Artikel drin liegen.

Das Attribut 7 liegt hier in $sBasketItem.additional_details.attr7 (die anderen fest vorgegebenen Attributfelder entsprechend auch). Damit ging es dann.

Wenn man sich nicht sicher ist, was es alles gibt, kann man zum Testen auch das komplette Array ausgeben. Einfach mit

{$sBasketItem|print_r}

 

Und nun müsstest Du Dich auch noch in einen Event in sBasket einklinken, damit der Artikel auch als neuer Artikel in den Warenkorb gelegt wird und nicht die Stückzahl einfach erhöht wird. Denn sonst könnte der Kunde ja so wieder auf Stückzahlen kommen, die es ja eigentlich nicht geben sollte  Wink

Müsste “Shopware_Modules_Basket_AddArticle_CheckBasketForArticle” sein.

(Trick: Wenn das Freitext Zahlen hat, dem Builder zusätzlich sowas wie “where 1!=1” einimpfen.

 

Danke, dass du auf dieses Problem hingewiesen hast, das habe ich nicht beachtet! Wie man sich in ein Event einklinkt, das weiß ich allerdings nicht…

Der Fehler ist aber nicht ganz so schlimm wie gedacht, es ist nur alles etwas verwirrend. Man kann keine falschen Mengen endgültig bestellen, weil es ja im regulären Warenkorb auch nur das Dropdownmenü mit den korrekten Mengen gibt. Allerdings zählen alle JavaScript-Warenkörbe hoch, also der Mini-Warenkorb oben rechts und auch das Overlay, was kommt, wenn man den Offcanvas-Warenkorb abgeschaltet hat. Der OC-Warenorb selbst wahrscheinlich auch, das habe ich nicht ausprobiert.

Als Beispiel ist es jetzt so, wenn man zuerst 100 und danach direkt nochmal 250 in den Warenkorb legt, dann zählen die Javascript-Dinger bis 350 hoch und wenn man dann auf die richtige Warenkorbseite geht, stehen nur 100 drin und im Checkout bleibt es dann auch dabei, sofern man keine andere Menge auswählt.

Ich weiß nicht, ob die beste Lösung ist, eine zweite Position im Warenkorb anzulegen, am liebsten wäre es mir, wenn statt dem JS-Overlay, mit der Bestätigung, was man gerade in den Warenkorb legt, eine Fehlermeldung kommt nach dem Motto „das haben Sie schon in den Warenkorb gelegt, bitte korrigieren Sie die Bestellmenge im Warenkorb“ oder so ähnlich.

Das sollte doch recht einfach machbar sein, oder? Insgesamt gesehen ist die Idee, das nur über das Frontend zu regeln, nicht wirklich sicher. Man kann ja durch Manipulation der Formularwerte eine beliebige Zahl ins POST reinschmuggeln, es muss dem System eigentlich vorher bekannt sein, welche Mengen es geben darf.

Warum nicht ganz einfach die Mengen als Varianten anlegen?

Bei Bestellmengenauswahl muss dann ganz deutlich werden, dass man meistens dann nur 1 wählen sollte: 1x100, 1x250, 1x500 usw.

Oder legst 8 Einzelartikel an, wo der Artikelname hier schon die Anzahl beinhaltet.