Artikelpreis basierend auf Artikelbeschaffenheit beim "in den Warenkorb legen" teurer/günstiger machen

Ich stehe mal wieder vor einem Problem.
Mein Ziel ist es, wenn der Kunde einen Artikel (dieser wird vom Kunden angepasst, verändert, mit zusätzlichen Optionen ausgestattet, etc.) in den Warenkorb legt, dass der Preis des Artikels, basierend auf dem, was der Kunde dem Artikel hinzugefügt hat, teurer wird.

Das Problem ist, ich erkenne erst manuell (programmatisch) was der Kunde mit dem Artikel gemacht hat, wenn er diesen in den Warenkorb legt. Dabei wird von mir die “In den Warenkorb” Funktion ausgeführt. Es geschieht also nicht über den Standardprozess, der beim Aufrufen eines Artikels durchgeführt wird, wenn man den “in den Warenkorb” Button drückt.

Die Erkennung, was alles mit dem Artikel geschehen ist, funktioniert tadellos. Auch in den Warenkorb legen (inklusive nachträglicher Bearbeitung und anschließender Aktualisierung des bereits im Warenkorb befindlichen Artikels) klappt wunderbar.

Was nicht funktioniert, ist das anpassen des Preises. Da der Artikel im Warenkorb selber (in der oxuserbasketitems Tabelle) keinen Preis hat, kann ich hier nicht einfach hergehen und den Preis darin erhöhen oder reduzieren. Wie aber kann ich jetzt den Preis, basierend auf den Eigenschaften, die im Produkt vorhanden sind, für den Schritt “in den Warenkorb” anpassen?

Hallo Alex,

leider kann ich hier nicht auf konkrete Erfahrungen zurück greifen, aber, ich würde das ganze so angehen:
Ein neues Modul anlegen, welches oxBasketItem erweitert.
In dem neuen Modul die Funktion getPrice() überschreiben. So dass sie deinen berechneten Preis zurück gibt.
Hierbei solltest du aber unbedingt darauf achten, dass bei allen Artikeln die nicht verändert werden sollen parent:getPrice() aufgerufen wird.

Ich hoffe das hilft dir weiter.

Gruß

Julian

Danke für Deine Rückmeldung, Julian!
Ich habe es inzwischen anders gelöst. Ein eigenständiger Produkttyp der automatisch dem Warenkorb hinzugefügt wird, damit eine saubere Preisanzeige bietet, eine Stückzahl hat (die nicht veränderbar ist) und nach schreiben einer eigenen Methode, beim Löschen des zugehörigen Produktes automatisch mit gelöscht wird.
Funktioniert sauber, sieht gut aus (mit entsprechenden Anpassungen im Template) und erfüllt bestens meine Anforderungen.

Dennoch vielen Dank für Deinen Lösungsansatz!