Preis in Warenkorb überschreiben - Wie?

Hallo,

wir haben besondere Staffelpreise, die sich nicht nach Menge sondern nach gesamter Quadratmeteranzahl aller Artikel richten. Den Berechnungs-Algorithmus dafür gibt es schon.

Es muss nur noch der Preis im Warenkorb überschrieben werden, falls sich durch hinzugefügte Artikel die Staffel ändert.

Ich habe dazu auf das Event 

sBasket::sUpdateArticle::after

reagiert und den Wert in die Datenbank geschrieben. Wenn ich am Ende der Funktion ein die() mache, steht der Wert auch in der DB. Wenn ich ihn weglasse, steht wieder ein anderer Preis drin.

Irgendwas überschreibt also meine geänderten Preise wieder … aber was? Ich glaub, das liegt am Laden/Reload des Warenkorbs. Aber wieso überschreibt der nochmal Werte in der Datenbank bein laden?

Auf das Laden, also sBasket::sGetBasket::before kann ich leider nicht reagiere, da ich mir in meiner Methode den ganzen Warenkorb inkl. aller Artikeldaten laden muss. Mit sGetBasket. Das wäre also eine Endlosschleife…

kann jemand helfen?

Du suchst https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Core/sBasket.php#L2949

Viele Grüße

Hallo @EikeWarneke‍,

leider verursacht auch das eine Endlosschleife, denn ich muss ja 

**Shopware()-\>Modules()-\>Basket()-\>sGetBasket()["content"];**

aufrufen. Ein Lesen direkt aus der Datenbank geht nicht, denn im Basket-Objekt sind temporäre Daten enthalten die ich brauche.