Lager
Zweck
Lager bilden physische oder logische Bestandsorte ab — Hauptlager, Aussenlager, Servicefahrzeuge etc. Pro Lager werden Produktbestaende, Lagerorte (Spots/Regale) und Inventuren gefuehrt. Ein Lager kann über PurchaseDocument.parentType = 'Warehouse' Empfaenger einer Bestellung sein.
Voraussetzungen
Berechtigungen (CASL)
Frontend-Page-Guard:
| Action | Subject | Keycloak-Rolle |
|---|---|---|
view | FE_Warehouse | — |
view | Warehouse | APP_SPEAMCORE_VIEW_WAREHOUSE |
Tab-Subjects:
| Tab | Subject |
|---|---|
| Produkte | WarehouseProduct:view |
| Lagerorte | WarehouseSpot:view |
| Inventuren | WarehouseInventory:view |
API-Datenzugriff:
| Action | Subject | Endpoint | Keycloak-Rolle |
|---|---|---|---|
view | Warehouse | GET /api/warehouses, GET /api/warehouses/:id | APP_SPEAMCORE_VIEW_WAREHOUSE |
create | Warehouse | POST /api/warehouses | APP_SPEAMCORE_CREATE_WAREHOUSE |
update | Warehouse | PATCH /api/warehouses/:id | APP_SPEAMCORE_UPDATE_WAREHOUSE |
delete | Warehouse | DELETE /api/warehouses/:id | APP_SPEAMCORE_DELETE_WAREHOUSE |
Schritt-für-Schritt-Anleitung
Lager anlegen
- Lager (
/warehouses) → + Lager hinzufuegen. - Detailseite öffnet sich, Auto-Save laeuft beim Ändern jedes Feldes (Toast „Erfolg — Änderungen gespeichert").
- Pflichtbereich:
name. Optional Adresse (Strasse/PLZ/Stadt/Land), E-Mail, Telefon. latitude/longitudewerden in der UI nicht editiert — nur über API setzbar.


Toolbar (Detail-Seite)
Schlanke Toolbar oben rechts:
| Icon | Aktion (aria-label) | CASL | Wirkung |
|---|---|---|---|
| ← | Zurückgehen | — | Zurück zur Liste. |
| 🏠 | Zur Startseite gehen | — | Springt auf das Dashboard / /. |
| ⏮/◀/▶/⏭ | Pagination | — | Navigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung. |
Globale Floating-Drawer (links)
Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:
- KAL. (Mini-Kalender)
- ZEIT (Persoenliche Wochen-Arbeitszeit)
- ARBEIT (Eigene bevorstehende Aufträge)
UI-Elemente
Button: „+ Neu"
Listenseite. Erfordert create:Warehouse.
Felder und Eingaben
| Feldname | Pflicht | Datentyp | Wirkung beim Ausfuellen | Voraussetzung |
|---|---|---|---|---|
name | nein | String | Lager-Name in Auswahllisten (Bestellungen, Bestand, Inventur). | — |
street | nein | String | Strasse und Hausnummer der Lagerstaette. | — |
postalCode | nein | String | PLZ. | — |
city | nein | String | Stadt. | — |
country | nein | Country-Select | Land aus Geo-Stammdaten. | Geo-Stamm geladen. |
emailGeneral | nein | Allgemeine Kontakt-Adresse für das Lager. | RFC-Format. | |
phone | nein | String + Country-Code-Select | Telefonnummer mit Vorwahl-Selector (Default +49). | — |
latitude / longitude | — | Decimal | Geokoordinaten für Karten-Visualisierung. Nur über API editierbar — kein UI-Feld. | API-Zugriff. |
Zusaetzlich am Detail-Form-Ende: Buttons „Neues Attributfeld" (zentral verwaltetes Attribut über AttributeParent) und „Neues Feld" (freies Custom-Feld). Siehe Custom-Fields und AttributeFields.
Ein Lager-Typ-Feld ist im UI aktuell nicht vorhanden — falls fachlich benötigt (z. B. Hauptlager / Servicewagen / Konsignationslager), muesste das Backend-Modell erweitert und ein UI-Feld ergaenzt werden.
Workflows und Zustaende
Lager haben kein Status-Feld.
Wiederverwendbare Konzepte
Verknuepfungen zu anderen Modulen
- Bestand —
WarehouseProduct(1:N) jeproductId. - Lagerorte —
WarehouseSpot(Regal/Fach). - Inventuren —
WarehouseInventory. - Bestellbelege —
PurchaseDocument.parentType = 'Warehouse'(Wareneingangsempfaenger).
Häufige Fehler und Lösungen
| Fehler | Lösung |
|---|---|
latitude/longitude nicht änderbar in UI | Per Design — nur über API. Geo-Picking-Feature folgt. |
| Lager nicht in Auswahl als Empfaenger sichtbar | Warehouse:view oder clientScope blockiert Zugriff. |
API/Schnittstellen
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/warehouses | Liste | view Warehouse |
GET | /api/warehouses/:id | Detail | view Warehouse |
POST | /api/warehouses | Anlegen | create Warehouse |
PATCH | /api/warehouses/:id | Ändern | update Warehouse |
DELETE | /api/warehouses/:id | Soft-Delete | delete Warehouse |
Versionshinweise
- 2026-04-29: Initiale Veroeffentlichung.