Workorder — Material (Sub-Route)
Zweck
Sub-Route /workorders/:id/materials listet alle verbrauchten Materialien am Auftrag — typischerweise aus dem Lager entnommen und mit dem Workorder verknuepft, um sie später in einer Rechnung zu fakturieren oder den Bestand korrekt zu reduzieren.
Voraussetzungen
Berechtigungen (CASL)
| Action | Subject | Wirkung | Keycloak-Rolle |
|---|---|---|---|
view | FE_Workorder, Workorder | Detail aufrufbar | — |
view/create/update/delete | WorkorderMaterial | Material-Einträge | APP_SPEAMCORE_VIEW/CREATE/UPDATE/DELETE_WORKORDER_MATERIAL |
view | Product | Produkt-Auswahl | APP_SPEAMCORE_VIEW_PRODUCT |
Schritt-für-Schritt-Anleitung
- Workorder (
/workorders/:id) → Tab Material. - + Material hinzufügen klicken → Produkt-Auswahl-Modal öffnet sich (siehe unten).
- Produkt aus der DataGrid auswählen (Volltextsuche, Spalten-Filter).
- Position wird angelegt, Default-Menge
1. Menge inline editierbar in der Material-Liste. - Beim Workorder-Abschluss werden die Material-Mengen typischerweise als Bestandsbewegung gebucht.

Tab-Toolbar (oben über DataGrid)
| Button | Aktion | Wirkung |
|---|---|---|
| + Material hinzufügen | Öffnet Produkt-Auswahl-Modal | Volltextsuche im Produkt-Stamm; ausgewählte Produkte werden als Material-Position angelegt (Default-Menge 1). Mehrfach-Auswahl möglich. |
| Auswahl | Bulk-Aktions-Trigger | Aktiviert die Checkboxen in der ersten Spalte; bei mind. einer Auswahl erscheint eine Bulk-Aktions-Leiste (Massen-Löschen, Massen-Mengen-Anpassung). |
Material-hinzufügen-Modal
Klick auf + Material hinzufügen öffnet ein Modal mit der Produkt-Auswahl. Der Modal-Inhalt ist eine DataGrid mit Suche:
| Spalte | Inhalt |
|---|---|
Produkt-Nr. | Eindeutige Produkt-Nummer aus dem Stamm (z. B. PROD-2026-00042). |
Titel | Produkt-Name. |
Beschreibung | Lange Produkt-Beschreibung. |
Einheit | Mengeneinheit (Stück, m, kg, ...). |
Hersteller | Hersteller-Name aus den Hersteller-Stammdaten. |
Hersteller Produkt-Nr. | Original-Artikel-Nummer beim Hersteller. |
Verkaufspreis | Aktueller Verkaufspreis (informativ — beim Auftrag wird Verbrauchspreis intern geführt). |
Workflow im Modal:
- Volltextsuche oben — sucht in Produkt-Nr., Titel, Beschreibung gleichzeitig.
- Optional: Spalten-Filter über das Filter-Icon (z. B. nur Hersteller „Bosch").
- Eine oder mehrere Zeilen anklicken (Multi-Select) — markierte Zeilen sind farbig hervorgehoben.
- Bestätigen unten rechts — alle ausgewählten Produkte werden als
WorkorderMaterial-Datensätze mit Menge1angelegt. - Mengen werden anschließend in der Material-Liste inline editiert.
Verbindung zu Lager und Beleg-Erstellung
- Lager-Buchung: erfolgt automatisch beim Status-Wechsel auf
inControl(oder spätestensfinished). ReduziertWarehouseProduct.amountfür das gewählte Lager (warehouseId). - Rechnungs-Übernahme: über den Auftrags-Toolbar-Button „Rechnung erstellen" werden alle Material-Positionen als Belegpositionen übernommen.
Wiederverwendbare Konzepte
Verknuepfungen zu anderen Modulen
- Workorders — Eltern-Modul.
- Produkte — Produkt-Stamm.
- Lager — Bestand wird angepasst.
- Verkaufsbelege — Material kann beim Workorder-Abschluss in einen Beleg uebertragen werden.
API/Schnittstellen
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/workorder-materials?filter[workorderId] | Liste | view WorkorderMaterial |
POST | /api/workorder-materials | Anlegen | create WorkorderMaterial |
PATCH | /api/workorder-materials/:id | Ändern | update WorkorderMaterial |
DELETE | /api/workorder-materials/:id | Soft-Delete | delete WorkorderMaterial |
Versionshinweise
- 2026-04-30: Initiale Veroeffentlichung.