Zum Hauptinhalt springen

Shop-Bestellungen

Zweck

Shop-Bestellungen (ShopOrder) entstehen aus einem oder mehreren Warenkoerben (ShoppingCart) — typischerweise wenn ein Anwender im Shop auf „Bestellung erstellen" klickt. Pro Bestellung sehen Sie Status (pending, confirmed, shipped, delivered, cancelled), Summen und ggf. einen verknuepften Bestellbeleg (Convert-to-PurchaseDocument).

Voraussetzungen

- Mindestens ein Warenkorb mit Produkten. - Berechtigung `create:ShopOrder` zum Erstellen. - Für Convert-Action: `create:PurchaseDocument`.

Berechtigungen (CASL)

ActionSubjectWirkungKeycloak-Rolle
viewFE_ShopOrder, ShopOrderListe/Details aufrufbar
create/updateShopOrderBestellungen anlegen, bestaetigen, stornierenAPP_SPEAMCORE_CREATE/UPDATE_SHOP_ORDER
viewShoppingCartSub-Tab WarenkoerbeAPP_SPEAMCORE_VIEW_SHOPPING_CART
createPurchaseDocumentConvert-ActionAPP_SPEAMCORE_CREATE_PURCHASE_DOCUMENT

Schritt-für-Schritt-Anleitung

Bestellung anlegen

Wird typischerweise vom Shop ausgeloest:

  1. Im Warenkorb (/shop/shopping-carts) Bestellung erstellen.
  2. POST /api/shop-orders mit shoppingCartIds.
  3. Bestellung wird mit Status pending angelegt.

Bestaetigen

  1. Auf der Detail-Seite Bestaetigen klicken.
  2. POST /api/shop-orders/:id/confirm — Status wechselt auf confirmed. Triggert ggf. E-Mail-Benachrichtigung.

In Bestellbeleg konvertieren

  1. In Bestellbeleg umwandeln klicken — Modal fragt Lieferant ab.
  2. POST /api/shop-orders/:id/to-purchase-document?supplierId=:id — erzeugt einen verknuepften PurchaseDocument.
  3. Sie werden auf den neuen Bestellbeleg weitergeleitet.

Shop-Bestellungen-Liste — read-only DataGrid, Bestellungen entstehen über den Shop-Frontend-Workflow nicht über die Listenseite

Shop-Bestellung-Detailseite (SHO-2026-00001) mit Tabs Allgemeine Daten und Warenkörbe, Belegnummer-Feld, Bild-Platzhalter und Kommentar-Karte (Test-Daten).

UI-Elemente

Button: „Bestaetigen"

Detailseite. Erfordert update:ShopOrder. Statuswechsel pending → confirmed.

Button: „In Bestellbeleg umwandeln"

Detailseite. Erfordert create:PurchaseDocument. Erzeugt verknuepften Beleg.

Felder und Eingaben

FeldnamePflichtDatentypWirkung beim AusfuellenVoraussetzung
statusEnumpending, confirmed, shipped, delivered, cancelled. System-gesteuert über Custom-Endpoints.
totalPriceDecimalAggregierter Wert aus den Warenkoerben. Read-only.
totalQuantityIntegerAggregierte Menge. Read-only.
shoppingCartIdsja (beim Anlegen)Array UUIDVerknuepft die Bestellung mit Warenkoerben.view:ShoppingCart.

Workflows und Zustaende

Hinweis zur Validierung: Im Live-Walkthrough konnten die Status-Uebergaenge nicht reproduziert werden, weil der Demo-Mandant keine Bestellungen enthält. Stand BE-Code: die Statuswerte werden über dedizierte Endpoints gesetzt (/confirm, /ship, /cancel, ...), aber es gibt keinen zentralen State-Machine-Validator im Code, der z. B. cancelled → confirmed blockiert. Wer den Status manuell via PATCH setzt, kann theoretisch alle Uebergaenge fahren — der Workflow oben ist die erwartete Sequenz, nicht die erzwungene.

Wiederverwendbare Konzepte

Verknuepfungen zu anderen Modulen

  • Shop (/shop) — Quelle der Warenkoerbe.
  • Bestellbelege (/purchase-documents) — Ziel der Convert-Aktion.
  • Kunden — Bestellungs-Empfaenger.
  • Zahlungen — Tab Payments zeigt Zahlungs-Verknuepfungen.

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/shop-ordersListeview ShopOrder
GET/api/shop-orders/:idDetailview ShopOrder
POST/api/shop-ordersAnlegencreate ShopOrder
PATCH/api/shop-orders/:idÄndernupdate ShopOrder
POST/api/shop-orders/:id/confirmBestaetigenupdate ShopOrder
POST/api/shop-orders/:id/to-purchase-documentIn Bestellbeleg umwandelncreate PurchaseDocument

Versionshinweise

  • 2026-04-29: Initiale Veroeffentlichung mit FE-Tiefen-Standard.