Betriebsmittel-Bewegungen
Zweck
Betriebsmittel-Bewegungen (OperatingEquipmentMovement) dokumentieren den Standortwechsel von Werkzeugen, Pruefkoffern und sonstigen Equipments. Drei Bewegungs-Typen sind möglich:
issueFromWarehouseToEmployee— Ausgabe vom Lager an Mitarbeiter.returnFromEmployeeToWarehouse— Rueckgabe vom Mitarbeiter an Lager.transferFromEmployeeToEmployee— Direktes Weitergeben zwischen zwei Mitarbeitern.
Nach Booking (POST /:id/book) wird die Bewegung mit Zeitstempel bookedAt eingefroren — Felder sind danach im FE disabled.
Voraussetzungen
Berechtigungen (CASL)
| Action | Subject | Wirkung | Keycloak-Rolle |
|---|---|---|---|
view | FE_OperatingEquipmentMovement, OperatingEquipmentMovement | Liste/Details aufrufbar | — |
create/update/delete | OperatingEquipmentMovement | Pflegen | APP_SPEAMCORE_CREATE/UPDATE/DELETE_OPERATING_EQUIPMENT_MOVEMENT |
do | BookOperatingEquipmentMovement | Bewegung buchen (einfrieren) | APP_SPEAMCORE_DO_BOOK_OPERATING_EQUIPMENT_MOVEMENT |
Schritt-für-Schritt-Anleitung
Bewegung anlegen
- Bewegungen (
/operating-equipment-movements) → + Neu. - Im Dropdown den Movement-Type wählen.
- Detail-Seite öffnet sich:
- Bei
issueFromWarehouseToEmployee:fromIdist Warehouse-Select,toIdist Employee-Select. - Bei
returnFromEmployeeToWarehouse: umgekehrt. - Bei
transferFromEmployeeToEmployee: beide Employee-Selects.
- Bei
- Beschreibung ergaenzen.
- Tab Operating Equipments — die Geraete einer Bewegung zuordnen.
Bewegung buchen
- Buchen klicken —
POST /:id/booksetztbookedAt. - Alle Felder ausser
descriptionsind danach disabled.

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: „Buchen"
Detailseite. Erfordert do:BookOperatingEquipmentMovement. Setzt bookedAt und friert die Bewegung ein.
Felder und Eingaben
| Feldname | Pflicht | Datentyp | Wirkung beim Ausfuellen | Voraussetzung |
|---|---|---|---|---|
movementType | ja (disabled nach Anlage) | Enum (3 Werte) | Steuert die Conditional FieldsConfig für fromId/toId. | — |
fromId | ja | UUID (Warehouse oder Employee) | Quelle der Bewegung. Disabled bei bookedAt != null. | passende View-Permission je Type. |
toId | ja | UUID (Warehouse oder Employee) | Ziel der Bewegung. Disabled bei bookedAt != null. | passende View-Permission je Type. |
description | nein | TEXT | Bewegungsnotiz. Disabled bei bookedAt != null. | — |
bookedAt | — | DateTime (read-only) | Zeitstempel der Buchung. null bei Entwurf, gesetzt nach Booking. | — |
Workflows und Zustaende
Anlege-Pattern (Bewegungs-Logik)
Betriebsmittel-Bewegungen folgen einem strikten Audit-Trail-Modell:
- Jede
OperatingEquipmentMovementhaelt fest wer wann welches Betriebsmittel wohin bewegt hat. fromAssigneeType/fromAssigneeIdundtoAssigneeType/toAssigneeId(polymorph:Employee,Vehicle,Warehouse).movedAt— Zeitstempel der Bewegung.
Zustand des Betriebsmittels wird durch die juengste Bewegung bestimmt — keine Direkt-Zuweisung.
Wiederverwendbare Konzepte
Verknuepfungen zu anderen Modulen
- Betriebsmittel (
/operating-equipments) — Geraete pro Bewegung. - Lager (
/warehouses) — Quelle/Ziel je nach Type. - Mitarbeiter (
/employees) — Quelle/Ziel je nach Type.
Häufige Fehler und Lösungen
| Fehler | Lösung |
|---|---|
| Felder nicht editierbar | Bewegung wurde gebucht (bookedAt). Per Design — neue Korrektur-Bewegung anlegen. |
fromId/toId Auswahl falsch typisiert | Movement-Type erst bestaetigen — Conditional FieldsConfig zeigt anschliessend richtige Selects. |
| Booking schlaegt fehl | do:BookOperatingEquipmentMovement fehlt oder Bewegung ist unvollstaendig. |
API/Schnittstellen
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/operating-equipment-movements | Liste | view OperatingEquipmentMovement |
POST | /api/operating-equipment-movements | Anlegen | create OperatingEquipmentMovement |
GET | /api/operating-equipment-movements/:id | Detail | view OperatingEquipmentMovement |
PATCH | /api/operating-equipment-movements/:id | Ändern (geblockt bei bookedAt) | update OperatingEquipmentMovement |
DELETE | /api/operating-equipment-movements/:id | Soft-Delete | delete OperatingEquipmentMovement |
POST | /api/operating-equipment-movements/:id/book | Buchen / Einfrieren | do BookOperatingEquipmentMovement |
Versionshinweise
- 2026-04-29: Initiale Veroeffentlichung mit FE-Tiefen-Standard.