Zum Hauptinhalt springen

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

- Berechtigung `view:Workorder` und `view:WorkorderMaterial`. - Für Erfassung: `create:WorkorderMaterial` und `view:Product`.

Berechtigungen (CASL)

ActionSubjectWirkungKeycloak-Rolle
viewFE_Workorder, WorkorderDetail aufrufbar
view/create/update/deleteWorkorderMaterialMaterial-EinträgeAPP_SPEAMCORE_VIEW/CREATE/UPDATE/DELETE_WORKORDER_MATERIAL
viewProductProdukt-AuswahlAPP_SPEAMCORE_VIEW_PRODUCT

Schritt-für-Schritt-Anleitung

  1. Workorder (/workorders/:id) → Tab Material.
  2. + Material hinzufügen klicken → Produkt-Auswahl-Modal öffnet sich (siehe unten).
  3. Produkt aus der DataGrid auswählen (Volltextsuche, Spalten-Filter).
  4. Position wird angelegt, Default-Menge 1. Menge inline editierbar in der Material-Liste.
  5. Beim Workorder-Abschluss werden die Material-Mengen typischerweise als Bestandsbewegung gebucht.

Listenansicht — workorders-materials

Tab-Toolbar (oben über DataGrid)

ButtonAktionWirkung
+ Material hinzufügenÖffnet Produkt-Auswahl-ModalVolltextsuche im Produkt-Stamm; ausgewählte Produkte werden als Material-Position angelegt (Default-Menge 1). Mehrfach-Auswahl möglich.
AuswahlBulk-Aktions-TriggerAktiviert 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:

SpalteInhalt
Produkt-Nr.Eindeutige Produkt-Nummer aus dem Stamm (z. B. PROD-2026-00042).
TitelProdukt-Name.
BeschreibungLange Produkt-Beschreibung.
EinheitMengeneinheit (Stück, m, kg, ...).
HerstellerHersteller-Name aus den Hersteller-Stammdaten.
Hersteller Produkt-Nr.Original-Artikel-Nummer beim Hersteller.
VerkaufspreisAktueller Verkaufspreis (informativ — beim Auftrag wird Verbrauchspreis intern geführt).

Workflow im Modal:

  1. Volltextsuche oben — sucht in Produkt-Nr., Titel, Beschreibung gleichzeitig.
  2. Optional: Spalten-Filter über das Filter-Icon (z. B. nur Hersteller „Bosch").
  3. Eine oder mehrere Zeilen anklicken (Multi-Select) — markierte Zeilen sind farbig hervorgehoben.
  4. Bestätigen unten rechts — alle ausgewählten Produkte werden als WorkorderMaterial-Datensätze mit Menge 1 angelegt.
  5. Mengen werden anschließend in der Material-Liste inline editiert.
Der Verbrauchspreis (`priceNet` auf `WorkorderMaterial`) ist eine **Snapshot-Kopie** des Verkaufspreises zum Zeitpunkt des Hinzufügens. Spätere Stammdaten-Preisänderungen wirken **nicht** auf bestehende Material-Positionen. Bei Bedarf: Position löschen und neu hinzufügen.

Verbindung zu Lager und Beleg-Erstellung

  • Lager-Buchung: erfolgt automatisch beim Status-Wechsel auf inControl (oder spätestens finished). Reduziert WarehouseProduct.amount fü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

MethodeEndpointZweckCASL
GET/api/workorder-materials?filter[workorderId]Listeview WorkorderMaterial
POST/api/workorder-materialsAnlegencreate WorkorderMaterial
PATCH/api/workorder-materials/:idÄndernupdate WorkorderMaterial
DELETE/api/workorder-materials/:idSoft-Deletedelete WorkorderMaterial

Versionshinweise

  • 2026-04-30: Initiale Veroeffentlichung.