Lager — Produkte (Sub-Route)
Zweck
Sub-Route /warehouses/:id/products zeigt den Bestand eines Lagers pro Produkt. Detail-Sicht /warehouses/:id/products/:warehouseProductId rendert ein einzelnes WarehouseProduct mit Mindest-/Maximalbestand, Reservierungen, letzter Bewegung.
Voraussetzungen
Berechtigungen (CASL)
| Action | Subject | Wirkung | Keycloak-Rolle |
|---|---|---|---|
view | FE_Warehouse, Warehouse | Detail aufrufbar | — |
view/create/update | WarehouseProduct | Bestand pflegen | APP_SPEAMCORE_VIEW/CREATE/UPDATE_WAREHOUSE_PRODUCT |
view | Product | Produkt-Auswahl | APP_SPEAMCORE_VIEW_PRODUCT |
Schritt-für-Schritt-Anleitung
- Lager (
/warehouses/:id) → Tab Produkte. - + Produkt wählt ein Produkt und legt einen WarehouseProduct-Datensatz an.
- Klick auf eine Zeile → Detail mit Bestands-Historie und Soll-Werten.

Pattern (Bestand-Sicht)
Read-mostly Liste der Produkte mit WarehouseProduct.warehouseId = :id. Zeigt aktuelle amount-Werte des Lagers.
| Spalte | Inhalt |
|---|---|
Produkt-Nr. | Produktnummer aus dem Stamm. |
Titel | Produktname. |
amount | Aktueller Bestand. Inline-Editierbar (Direktkorrektur ohne Inventur). |
minStock | Mindestbestand-Schwelle. Bei Unterschreitung Notification. |
reservedAmount | In offenen Aufträgen reservierte Menge. |
availableAmount | amount - reservedAmount. |
Wiederverwendbare Konzepte
Verknuepfungen zu anderen Modulen
- Lager — Eltern-Modul.
- Produkte — Stamm.
- Inventuren — Korrekturen über Inventur-Workflow.
- Produkt-Bewegungen — manuelle Buchungen.
API/Schnittstellen
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/warehouse-products?filter[warehouseId] | Liste | view WarehouseProduct |
POST | /api/warehouse-products | Anlegen | create WarehouseProduct |
PATCH | /api/warehouse-products/:id | Ändern | update WarehouseProduct |
Versionshinweise
- 2026-04-30: Initiale Veroeffentlichung.