ich .möchte ein Plugin zur Anpassung der Bruttopreise in der Datenbank entwickeln.
Szenario: Es existieren zwei Sprachshops mit getrennten Kundengruppen. Diese Shops sollen aber auf dieselben Produktkategorien zugreifen. Sofern nur bei einem Shop der Preis eingetragen wird, stimmt der eingegebene Preis mit dem auf der Storefront überein. Allerdings muss durch die Umformung des Preises in der Form Preis*/ eingetragen werden, damit der richtige Preis angezeigt wird. Damit diese Notwndigkeit nicht mehr besteht, soll das zu entwickelnde Plugin nach dem Update des Preises den Preis des anderen Shops in die obige Form bringen.
Der bisherige Stand: Mit ‚Shopware\Models\Article\Article::postUpdate‘ => ‚adjustTaxes‘ in der getSubscribedEvents function kann nach updaten eines Produkts die Funktion adjustTaxes aufgerufen werden. Dies funktioniert auch schon.
Die Frage: Wie ist es mit möglich, auf die Artikeldetails innerhalb des Funktionskontextes zuzugreifen und wie können die Preise für die Kundengruppen entsprechend der Steuern für diese in der Datenbank angepasst werden.
Ich freue mich auf eine Antwort eurerseits und eine erfolgreiche Weiterentwicklung.
Die Frage: Wie ist es mit möglich, auf die Artikeldetails innerhalb des Funktionskontextes zuzugreifen und wie können die Preise für die Kundengruppen entsprechend der Steuern für diese in der Datenbank angepasst werden.
Wie meinst du das mit den Zugriff auf die Artikeldetails? Mein du das Detail Model? Du bekommst ja mit $entityManager = $args->getObjectManager() den Model Manager. Da könntest du andere Enities aus anderen Models laden. Das würde ich dir aber nicht empfehlen, das die Modelle damit stark Abhängig voneinander werden. Eigtl müsstest du ja auch das Price Model Hooken und nicht das Article Model?!?
Alternativ würde ich vielleicht lieber die die saveArticle Action im Backend und in der API hooken und da deine Anpassungen druchführen.
Dein Einwand hat bei mir tatsächlich schon zu Problemen geführt. Kann ich einfach die Änderung des Preises über das Price Modell hooken und bekomme dann auch die passende CustomerGroup? Wenn ich die saveArticle Action hooke, dann kovergiert der eingegebene Preis gegen null, wenn der Preis nicht immer neu eingetragen wird. Dies liegt daran, dass der Preis direkt in der Datenbank verändert werden soll. Bei der direkten Veränderung ist beim nächsten Mal speichern aber der veränderte Wert drin, der wieder verändert wird. Ist das Event ::PostUpdate auch ein wirkliches Update oder wird das auch getriggert, wenn sich keine Änderung ergibt. (Also wenn in diesem Fall der eingegebene Preis gleich dem der Datenbank ist?