Eigene Preisberechnung einziehen

Hallo Zusammen,

Ich evaluiere derzeit Shopware 5 als Lösung für einen Kunden, der von seiner bisherigen Lösung auf eine aktuelle Lösung umsteigen möchte.
Der Kunde nützt eine sehr umfassende Preisberechnung / Rabattierung für seine Produkte basierend auf Kundengruppe, Hersteller, Produkt etc. Diese Berechnung ist in der aktuellen Lösung implementiert und soll nun auch in Shopware umgesetzt werden.

Das bedeutet, dass der Algorithmus der Preisberechnung entsprechend ersetzt werden muss. Meine Frage dazu: Hat jemand einen Ansatz für mich, wie ich ein Plugin das diese Arbeit übernimmt umsetzen kann? Handelt es sich bei der Preisberechnung um einen Service, der überladen werden kann? Oder muss das Ganze über einen „Post-Calculation-Event“ eingefädelt werden, der dann die „normale“ Preisberechnung überschreibt?

Ich bin für jeden Tipp / Link dankbar,
liebe Grüße,
Michael

Du könntest den PreisCalculationService dekorieren und dadurch den Preis anpassen:

1 „Gefällt mir“

Danke für Deine Antwort.

Genau an dieser Ecke arbeite ich gerade… Interessanterweise dürften die Preise aber über verschiedene Wege berechnet werden.
Ich habe testweise direkt im PriceCalculationService in der Methode calculatePrice() den Wert für $price auf 1 gesetzt. Das führt dazu, dass die Preise in den Produktlistings und Produktdetails korrekt mit € 1,00 (+ Tax) gelistet werden. Im Warenkorb und Checkout wird dann jedoch wieder der “alte” Preis berechnet…

Gibt es hier vielleicht einen getrennten Service für die Preisberechnung ab dem Warenkorb?

Ich denke das es dort an dieser Funktion liegt.

1 „Gefällt mir“

Die Lösung über einen Decorator funktioniert wunderbar - danke für die Richtungsvorgabe.
Das die Preise für den Basket hier offenbar getrennt berechnet werden macht die Sache ziemlich unsauber. 

Würdest Du mir zustimmen, dass man diese Berechnung dann über den Event Shopware_Modules_Basket_getPriceForUpdateArticle_FilterPrice umbiegen sollte!?

Hi,

ja, genau das Event ist es - damit habe ich das auch schon gemacht.

In Zukunft wollen wir das weiter vereinheitlichen, momentan funktioniert der WK da noch etwas anders, als die Listings.

Daniel

1 „Gefällt mir“

Guten Morgen zusammen,

Vielen Dank für Eure Antworten. Das stimmt mich ja sehr zuversichtlich :slight_smile:

Noch eine andere Frage wo Ihr vielleicht eine Idee habt:
Ein System des Kunden ist ein " Closed-Shop". D.h. es ist nötig am System authentifziert (eingeloggt) zu sein um auf den Shop (auch Produktdaten) zuzugreifen.

Kennt Ihr zu diesem Thema (bzw. in diese Richtung) vielleicht auch ein Tutorial? Mein Ansatz wäre hier ein Plugin bei einem PreProcess Event einzuhängen und den Kunden auf die Login-Seite umzuleiten, sollte er nicht eingeloggt sein.

Vielen Dank & liebe Grüße,
Michael

Ein kurzes Nachhaken bei der Preisberechnung: 

ohne dass ich jetzt irgendetwas herumprobiert habe, aber nur zum Verständnis der Thematik würde ich gerne wissen, wie hier das Zusammenspiel zwischen den im Backend eingegeben Preisen, und den durch die Hooks/Events angepassten Preisen ist ? Aus dem Stehgreif würde ich vermuten, dass der Preis aus dem Backend weiterhin der entsprechenden Preis Tabelle in der Datenbank entspricht und entweder ignoriert oder zur eigenen Berechnung im eigenen Plugin hinzugezogen werden kann ? Und der eigen berechnete Preis lediglich in der Bestellung unterkommt ? 

Gruß Edin

Guten Morgen,

Hier gibt es keinen Zusammenhang mehr. Die Preisberechnung basiert auf einem völlig eigenständigen Modell, unabhängig von den Preisen, die im Backend angegeben werden.

Für die Closed Shop Geschichte kannst du das Business Essentials Modul nehmen, dazu ist es unter anderem da.

Grüße Matthias

 

1 „Gefällt mir“

Hallo,

Danke für den Tipp… Ist das Modul quelloffen, damit zusätzliche Modifikationen machbar sind? Der Kunde hat bei der Registrierung sehr spezielle Anforderungen.

Grüße,
Michael

Normal nein, ist ja eines der Premium Plugins. Als Shopware Partner kannst du aber Zugriff auf die Sourcen bekommen, wobei die Logingeschichte ist ja trotzdem anpassbar aus meiner Sicht. 

Grüße Matthias

Danke für die Info - werde mir das Plugin jedenfalls mal ansehen…