Markus Michalski FAQ

Varianten-Preisaufschlag: Shop API und Headless

Varianten-Preisaufschlag in der Sylius Shop API: keine eigenen Endpunkte, aber berechnete Preise in price und originalPrice der Variante und in den Warenkorbpositionen, plus Grenzen bei lowestPriceBeforeDiscount.

English Version

Zurück zur Übersicht

Varianten-Preisaufschlag: Shop API und Headless

Das Plugin ist dual-mode: Storefront und Shop API liefern denselben Preis, weil beide über die Preisrechner von Sylius gehen, die das Plugin dekoriert (ab Sylius 2.3 auch den Katalog-Preisrechner, siehe Storefront und Warenkorb). Du musst für Headless-Betrieb nichts konfigurieren.

Das Plugin registriert keine eigenen API-Endpunkte, keine API-Ressourcen und keine Serializer.

graph LR
    A["Storefront (Twig)"] --> C["Preisrechner (Decorator)"]
    B["Shop API"] --> C
    C --> D["Preis der Basisvariante"]
    D --> E["Preis mit Aufschlag"]

Welche Felder sich ändern

Feld Verhalten
price einer Produktvariante Preis mit Aufschlag in der kleinsten Währungseinheit
originalPrice einer Produktvariante Nach derselben Formel aus dem ursprünglichen Preis der Basisvariante berechnet
lowestPriceBeforeDiscount einer Produktvariante Unverändert, der Wert der Variante selbst
appliedPromotions einer Produktvariante Zeigt die Katalog-Promotionen der Variante selbst, nicht die der Basisvariante
Preise der Warenkorbpositionen Mit Aufschlag, weil Sylius sie bei jeder Neuberechnung des Warenkorbs über den Rechner setzt

Die Preisfelder erscheinen nur, wenn der Channel bekannt ist. Fehlt für die Variante oder die Basisvariante der Preis im Channel, lässt Sylius price, originalPrice und lowestPriceBeforeDiscount in der Antwort weg.

Welcher Aufschlag gilt, richtet sich nach dem Channel der Anfrage: Hat der Channel eine eigene Einstellung, nutzt die API sie, sonst die globalen Werte.

Beispiel

Basisvariante mit price 2000, Variante mit Prozentsatz 150 und festem Aufschlag 0:

{
  "code": "TSHIRT_XL",
  "price": 3000,
  "originalPrice": 3000
}

Die Antwort zeigt nur die betroffenen Felder, der Rest des Variantendokuments entspricht dem Standard von Sylius.

Hinweise für Frontends