Varianten-Preisanpassung: Storefront und Preisberechnung
Preisberechnung der Varianten-Preisanpassung in Storefront und Warenkorb: Preisquelle des Hauptprodukts, Regelpreise, Brutto/Netto, Währung. Streich- und Grundpreis entfallen, Mengenstaffeln der Variante wirken nicht (ein Einzelpreis).
Storefront und Preisberechnung
Das Plugin ändert keine Preise in der Datenbank. Es rechnet den Variantenpreis zur Laufzeit, sobald ein Produkt in einem Verkaufskanal geladen wird, und noch einmal bei der Warenkorb-Berechnung.
Wo gerechnet wird
| Ort | Auslöser | Wirkung |
|---|---|---|
| Produktanzeige im Verkaufskanal | Event sales_channel.product.loaded |
Der berechnete Preis (calculatedPrice) der Variante wird ersetzt |
| Warenkorb und Kasse | Cart-Prozessor mit Priorität 1000 | Preisdefinition und Preis der Produkt-Position werden ersetzt |
Im Admin (Admin-API) bleibt der Preis der Variante unverändert, weil dort kein Verkaufskanal-Event ausgelöst wird.
Schritte der Berechnung
- Das Plugin prüft, ob das Produkt eine Variante ist. Produkte ohne Hauptprodukt werden übersprungen.
- Es liest die drei Zusatzfelder der Variante und wendet bei Bedarf die Vererbung vom Hauptprodukt an.
- Es ermittelt den Preis des Hauptprodukts (siehe unten). Ist er 0 oder nicht vorhanden, bleibt der Preis der Variante unverändert.
- Es rechnet (Hauptpreis + Aufschlag) x (Prozentsatz / 100), setzt negative Ergebnisse auf 0 und rundet nach den Plugin-Einstellungen.
- Es berechnet Steuern und Summen mit dem Shopware-
QuantityPriceCalculatorund den Steuerregeln des Produkts.
Preis des Hauptprodukts
- Zuerst werden die erweiterten Preise (Regelpreise) des Hauptprodukts geprüft. Das Plugin geht die aktiven Regeln des Kunden in der Rangfolge der Regelpriorität durch, nimmt bei der ersten passenden Regel die Staffel mit der niedrigsten Menge und verwendet den Preis, wenn er größer als 0 ist.
- Gibt es keinen passenden Regelpreis, gilt der Standardpreis des Hauptprodukts.
- Der Preis wird in der Währung des Verkaufskanals gelesen. Fehlt dort ein Preis, wird der Preis der Standardwährung verwendet und mit dem Währungsfaktor umgerechnet.
- Ist der Verkaufskanal bzw. die Kundengruppe auf Brutto-Preise eingestellt, wird der Bruttopreis verwendet, bei Netto-Preisen der Nettopreis.
Der fixe Aufschlag wird unverändert zu diesem Preis addiert. Er wird nicht zwischen Währungen umgerechnet und gilt je nach Steuerstatus als Brutto- oder Nettobetrag, auch wenn das Feld "(EUR)" im Namen trägt.
Streichpreis, Grundpreis und Mengenstaffeln
Das Plugin ersetzt den gesamten berechneten Preis der Variante durch einen neu berechneten Preis ohne Streichpreis und ohne Grundpreis. Ein vorhandener Streichpreis oder Grundpreis der Variante entfällt deshalb bei angepassten Varianten, sowohl in der Produktanzeige als auch im Warenkorb. Prüfe das in der Storefront, wenn du mit solchen Preisangaben arbeitest.
Bei angepassten Varianten gilt immer ein einzelner Stückpreis, den das Plugin aus der niedrigsten Staffel des passenden Regelpreises (oder dem Standardpreis) des Hauptprodukts berechnet. Mengenstaffeln in den eigenen Preisen der Variante haben dort keine Wirkung, und eine höhere Menge im Warenkorb senkt den Stückpreis nicht. Die Staffelliste des Produkts (calculatedPrices) und der günstigste Preis einer Produktgruppe werden vom Plugin nicht verändert, die Anpassung greift aber nicht über sie.
Verhalten in Sonderfällen
| Situation | Verhalten |
|---|---|
| Hauptprodukt nicht auffindbar | Preis bleibt unverändert, ein Fehler (Storefront) bzw. eine Warnung (Warenkorb) wird ins Log geschrieben |
| Variante ohne Steuer-ID | In der Produktanzeige wird der Preis nicht angepasst |
| Aktiviert, aber keine gültigen Werte | Preis bleibt unverändert |
| Ergebnis der Rechnung negativ | Preis ist 0,00 |
| Prozentsatz 0 | Preis ist 0,00 (0 ist ein gültiger Wert) |
| Ungültige oder unendliche Zahlen | Werte werden ignoriert bzw. die Rechnung ergibt 0 |