Preis im Warenkorb manipulieren

Sehr geehrte Community, ich habe einen beliebigen Artikel mit einem Brutto-Preis von 100,00€ angelegt. Nun möchte ich (abhängig von shopwareunabhängigen Kriterien) diesen Preis beim Legen in den Warenkorb manipulieren (beispielsweise 20,00€ addieren). Um mich dem Problem zu nähern, habe ich manuell versucht, nachdem Legen des Artikel in den Warenkorb, die Datenbank an den relevanten Stellen unter - s_core_sessions > data - s_order_basket > price / netprice zu verändern. Bei jedem Reload des Warenkorbs werden die geänderten Werte jedoch zurückgesetzt. Gibt es eine Lösung für mein Problem oder ist das nahezu aussichtslos, weil Shopware nur Preise zulässt, für die es existierende Varianten gibt? Vielen Dank für Eure Antwort.

Das könntest du direkt über das Checkpout Template machen. Praktisch hier x Euro der Preis Variabel hinzufügen. Die Frage ist nur warum ?:slight_smile:

1 Like

Hallo kayyy, ich Danke Dir für Deine Antwort. > Das könntest du direkt über das Checkpout Template machen. > Praktisch hier x Euro der Preis Variabel hinzufügen. Dann ist doch der Preis nur pseudomäßig erhöht - spätestens wenn ich mit PayPal bezahlen will, holt er sich doch wieder die Originalpreise, oder liege ich falsch? > Die Frage ist nur warum ?:slight_smile: Nehmen wir an, ich habe 1000 Artikel im Shop. Und jeden dieser 1000 Artikel gibt es in einer speziellen Variante mit einem Aufpreis von 20,00€. Ich will nun nicht zusätzlich 1000 Varianten erstellen, sondern dies wie oben beschrieben lösen. Wenn ich nämlich global den Aufpreis von 20,00€ ändern will, habe ich sonst ein großes Problem.

Die Methode sbasket()::sgetbasket() (oder so ähnlich) liefert immer den Warenkorb zurück - zb auch bei der Übergabe an Paypal. Häng dich da einfach an das passende Event Gesendet von meinem iPhone mit Tapatalk

[quote=“Aquatuning GmbH”]Die Methode sbasket()::sgetbasket() (oder so ähnlich) liefert immer den Warenkorb zurück - zb auch bei der Übergabe an Paypal. Häng dich da einfach an das passende Event Gesendet von meinem iPhone mit Tapatalk[/quote] Damit klappt es: sBasket::sUpdateArticle::after Gruß

1 Like

Hallo Aquatuning! Heißt das aber, dass im Backend unter Bestellungen / Rechnungen usw. immer der falsche Preis steht? Ich will schon erreichen, dass wirklich überall der Aufpreis angezeigt wird. Beste Grüße

Danke für die Tipps. Ich habe es nun mit public function registerEvents() { $event = $this-\>createHook('sBasket', 'sUpdateArticle', 'onBasket\_UpdateArticle\_After', Enlight\_Hook\_HookHandler::TypeAfter, 0 ); $this-\>subscribeHook($event); } static function onBasket\_UpdateArticle\_After(Enlight\_Hook\_HookArgs $args) { $session = Shopware()-\>SessionID(); $id = $args-\>getId(); $price = 200; $netprice = $price; $sql = "UPDATE s\_order\_basket SET price=?, netprice=? WHERE id=? AND sessionID=?"; Shopware()-\>Db()-\>query($sql,array($price,$netprice,$id,$session)); } hinbekommen. Vielen Dank.

[quote=“RainerF”]Hallo Aquatuning! Heißt das aber, dass im Backend unter Bestellungen / Rechnungen usw. immer der falsche Preis steht? Ich will schon erreichen, dass wirklich überall der Aufpreis angezeigt wird. Beste Grüße[/quote] Der Preis wird im kompletten Checkout und dann auch im Backend dargestellt wenn Du den Event verwendest.