Markus Michalski FAQ

Varianten-Preisanpassung: Technische Details

Technische Details der Varianten-Preisanpassung: Ablauf von Storefront und Warenkorb, Plugin-Struktur, Services und Tags, Logging, Fehlercode sowie Hinweise zu Erweiterbarkeit, Rollenrechten und Snippets.

English Version

Zurück zur Übersicht

Technische Details

Ablauf

graph TD
    A["Produkt wird im Verkaufskanal geladen"] --> B["ProductSubscriber"]
    B --> C["SurchargeConfigReader"]
    C --> D["ParentPriceResolver"]
    D --> E["VariantPriceCalculator"]
    E --> F["QuantityPriceCalculator"]
    F --> G["calculatedPrice der Variante"]
    H["Warenkorb wird berechnet"] --> I["VariantPriceProcessor"]
    I --> C
    I --> D
    I --> E
    I --> F
    F --> J["Preis der Position"]

Plugin-Struktur

Klasse Aufgabe
MmdVariantPriceSurcharge Plugin-Klasse. Beim Deinstallieren ohne "Nutzerdaten behalten" löscht sie Custom-Field-Set und Systemkonfiguration.
Migration1705200000CreateCustomFields Legt Custom-Field-Set und die drei Felder an
Subscriber\ProductSubscriber Hört auf sales_channel.product.loaded und ersetzt den berechneten Preis von Varianten
Core\Checkout\Cart\VariantPriceProcessor Cart-Prozessor, Service-Tag shopware.cart.processor, Priorität 1000
Service\SurchargeConfigReader Liest und validiert die Zusatzfelder, entscheidet über die Vererbung
Service\SurchargeConfig Unveränderliches Wertobjekt aus Prozentsatz und Aufschlag
Service\ParentPriceResolver Lädt das Hauptprodukt samt erweiterter Preise, ermittelt dessen Preis, cached pro Request
Service\VariantPriceCalculator Rechnung, Wertebereiche, Rundungs-Einstellungen aus der Systemkonfiguration
Exception\ParentProductNotFoundException HTTP 404, Fehlercode MMD_VARIANT_PRICE_SURCHARGE__PARENT_NOT_FOUND

Details

Erweiterbarkeit, Rechte, Snippets