Markus Michalski FAQ

Kleinunternehmer: Shop API

Shop API des Sylius-Plugins Kleinunternehmer §19 UStG: das Feld kleinunternehmerNoticeApplies an Warenkorb, Bestellung, Produkt und Variante für Headless-Frontends, mit Regeln und Beispielen.

English Version

Zurück zur Übersicht

Kleinunternehmer: Shop API

Live Demo: Teste dieses und weitere Plugins live — ohne Installation, ohne Risiko: demo.markus-michalski.net

Wofür das Feld da ist

Der Hinweis in der Storefront kommt aus Twig Hooks, die ein Headless-Frontend nie sieht. Deshalb ergänzt das Plugin in der Shop API (/api/v2/shop) ein boolesches Feld kleinunternehmerNoticeApplies. Dein Frontend entscheidet damit selbst, wo und in welcher Sprache es den Hinweis zeigt, und zwar genau dort, wo auch die Twig-Storefront ihn zeigen würde.

Die Shop API liefert nur das Flag, nie den Hinweistext. Den Wortlaut formulierst du im Frontend.

graph LR
    A["Storefront Twig Hook"] --> C["NoticeApplicabilityChecker"]
    B["Shop API Request"] --> D["ShopNoticeNormalizer"]
    D --> C
    C --> E{"Regelung aktiv und Objekt ohne Steuer?"}
    E --> F["Twig-Render: Hinweis"]
    E --> G["JSON: kleinunternehmerNoticeApplies"]

Wo das Feld erscheint

Die Regel ist dieselbe wie in der Storefront. Das Feld ist true, wenn die Regelung aktiv ist und das Objekt tatsächlich ohne Steuer berechnet wird:

Ressource true, wenn
Warenkorb und Bestellung die Steuersummen des Warenkorbs oder der Bestellung beide 0 sind
Produktvariante die Variante auf der Steuerkategorie kleinunternehmer_zero liegt
Produkt es aktive Varianten gibt und alle aktiven Varianten auf kleinunternehmer_zero liegen

Ist die Regelung aus oder das Objekt noch nicht migriert, steht das Feld auf false.

Das Plugin hängt das Feld an diese Serialisierungsgruppen der Shop API:

Ressource Gruppen
Warenkorb / Bestellung sylius:shop:cart:show, sylius:shop:order:account:show, sylius:shop:order:index
Produkt sylius:shop:product:index, sylius:shop:product:show
Produktvariante sylius:shop:product_variant:index, sylius:shop:product_variant:show

Die Admin API ist nicht betroffen, das Feld erscheint nur in Shop-API-Antworten. Das Plugin bringt keine eigenen Endpunkte mit.

Beispiel

curl -s https://shop.example.com/api/v2/shop/products/PRODUKT-CODE \
  -H "Accept: application/ld+json"

Auszug aus der Antwort:

{
  "@type": "Product",
  "code": "PRODUKT-CODE",
  "kleinunternehmerNoticeApplies": true
}

Auch an der Variante und am Warenkorb:

curl -s https://shop.example.com/api/v2/shop/product-variants/VARIANTEN-CODE \
  -H "Accept: application/ld+json"
curl -s https://shop.example.com/api/v2/shop/orders/TOKEN \
  -H "Accept: application/ld+json"

Beide Antworten enthalten "kleinunternehmerNoticeApplies": true oder false. Zeige in deinem Frontend den Hinweis, sobald das Flag true ist, und zwar in der Sprache deiner Wahl.

Fehlerformat

Das Plugin liefert keine eigenen Fehlerantworten. Für das Feld gelten die Standard-Antworten der Sylius Shop API.