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.
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.