Varianten-Preisaufschlag
Varianten-Preisaufschlag für Sylius 2: Varianten als Prozentsatz und fester Aufschlag auf den Preis einer Basisvariante, pro Channel überschreibbar, wirksam in Storefront, Warenkorb und Shop API.
Varianten-Preisaufschlag
Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.
Überblick
Sylius speichert den Preis jeder Variante als festen Betrag pro Channel. Eine Variante, die "50 Prozent teurer als die Standardvariante" kostet, lässt sich damit nicht ausdrücken, und Sylius kennt auch keine Eltern-Variante, die einen Referenzpreis trägt. Das Plugin ergänzt das: Du markierst pro Produkt eine Variante als Basisvariante und gibst allen anderen Varianten einen Prozentsatz und/oder einen festen Aufschlag. Wenn ein Channel andere Werte braucht, überschreibst du sie für diesen Channel.
Der Preis wird bei jeder Preisberechnung neu aus dem Preis der Basisvariante ermittelt. Ändert sich deren Preis, ziehen alle Varianten mit Aufschlag automatisch nach.
Formel: Preis = (Basispreis + fester Aufschlag) x (Prozentsatz / 100). Ein Prozentsatz von 100 lässt den Preis unverändert, 150 bedeutet 50 Prozent mehr.
graph LR
A["Storefront (Twig)"] --> C["Preisrechner (Decorator)"]
B["Shop API"] --> C
D["Warenkorb-Neuberechnung"] --> C
C --> E{"Aufschlag für die Variante?"}
E -->|Nein| F["Eigener Preis der Variante"]
E -->|Ja| G["Preis der Basisvariante mit Formel, Werte pro Channel"]
Dokumentation
| Seite | Inhalt |
|---|---|
| Installation und Betrieb | Composer (Packeton), Bundle, Routen, Setup-Befehl, Update, Deinstallation |
| Konfiguration | Variantenformular, Überschreibungen pro Channel, Formel mit Beispielen, globaler Schalter, Übersicht |
| Storefront und Warenkorb | Wo der Aufschlag wirkt, Streichpreis, was unverändert bleibt |
| Shop API und Headless | Betroffene Felder, Verhalten bei fehlenden Preisen |
| Erweiterbarkeit | Dekorierte Preisrechner, Repository, Twig-Hook, Routen |
| Fehlerbehebung und FAQ | Typische Probleme, bekannte Einschränkungen, häufige Fragen |
| Technische Details | Ablauf, Datenmodell, Plugin-Struktur |
Features
| Feature | Beschreibung |
|---|---|
| Aufschlag relativ zu einer Basisvariante | Eine Variante pro Produkt liefert den Referenzpreis, jede andere Variante bekommt Prozentsatz und/oder festen Aufschlag |
| Überschreibung pro Channel | Aufschlag aktiv, Prozentsatz und fester Aufschlag lassen sich je Channel überschreiben, nicht überschriebene Felder übernehmen den globalen Wert |
| Folgt dem Channel-Preis | Der Basispreis kommt pro Channel aus der Basisvariante, inklusive ihrer Katalog-Promotionen |
| Dual-Mode | Storefront, Warenkorb und Shop API liefern denselben Preis, weil das Plugin die zentralen Preisrechner von Sylius dekoriert (ab Sylius 2.3 auch den Katalog-Preisrechner) |
| Pflege im Variantenformular | Eigener Bereich "Preisaufschlag" beim Bearbeiten einer Variante, kein eigener CRUD-Bereich |
| Übersicht | Liste aller konfigurierten Aufschläge mit Link zur Variante |
| Globaler Schalter | Schaltet alle Aufschläge sofort ab und lässt die Konfiguration bestehen |
| Setup-Befehl | mmd:variant-price-surcharge:setup führt nur die Migrationen dieses Plugins aus und prüft den Routen-Import |
Keine Änderung an ProductVariant |
Eigene Tabellen mit Fremdschlüssel, kein Klassen-Override im Projekt nötig |
Anforderungen
| Anforderung | Version | Hinweise |
|---|---|---|
| Sylius | ^2.2 | Paket sylius/sylius, getestet mit 2.2 und 2.3 |
| PHP | ^8.3 | |
| Datenbank | MySQL oder MariaDB | Die mitgelieferten Migrationen sind in MySQL-Syntax geschrieben |
Composer-Paket: mmd/sylius-variant-price-surcharge-plugin, bereitgestellt über die Packeton-Registry (https://packeton.markus-michalski.net). Die Schritte stehen unter Installation und Betrieb.
Lizenz
Kommerzielle Lizenz: eine Sylius-Installation (alle Channels sowie Entwicklungs- und Staging-Umgebung) pro Lizenz, keine Weitergabe, Updates für 12 Monate ab Kauf.
Support
Bei Fragen oder Fehlern erreichst du mich unter support@markus-michalski.net.