Stammdaten
Ladeeinheiten (Container)
Einführung
Eine Ladeeinheit (in Datenmodell und UI auch als „Container" bezeichnet, Tabelle unit) ist ein physisch geführter Behälter, in dem Bestände transportiert oder zwischengelagert werden. Typische Beispiele sind Absetzmulden, Wechselbrücken oder Rollcontainer. Ladeeinheiten haben einen aktuellen Standort (current_unit_location) — Lagerort, Adresse, Fahrzeug oder eine andere Ladeeinheit (Verschachtelung) — und können als Aufnahme von Beständen dienen.
Diese Seite beschreibt die Stammdatenverwaltung der Ladeeinheiten in rocklog Edge: das Anlegen und Bearbeiten einzelner Datensätze, die Power-Suche über die Stammdatenliste, die fachliche Sonderfunktion UVV-Prüfung und das zugrunde liegende Datenmodell.
1. CRUD-Funktionalität
Die Stammdatenliste der Ladeeinheiten ist über Stammdaten → Ladeeinheit (Container) erreichbar. Sie zeigt eine spaltenbasierte Übersicht; die Spalte UVV-Prüfung gültig bis ist nur im Anwendungsprofil container sichtbar.

Anlegen einer neuen Ladeeinheit
Über die Schaltfläche Neu in der Kopfzeile öffnet sich ein seitlicher Dialog (SideOver) Neue Ladeeinheit anlegen. Erfasst werden:
| Feld | Typ | Pflicht | Bemerkung |
|---|---|---|---|
| Barcode | Text | optional | Frei vergebbarer Bezeichner. |
| Artikel-ID | Auswahl | ja | Auswahl aus Artikeln mit article_kind = 'container'. |
| ERP Referenznummer | Text | optional | Verweis aus dem führenden Drittsystem. |
| Max. Nettogewicht (kg) | Zahl | optional | net_weight_per_unit. |
| Max. Volumen (m³) | Zahl | optional | net_volume_per_unit. |
| UVV-Prüfung gültig bis | Datum | optional | Nur im Profil container sichtbar — siehe 3.1 UVV-Prüfung. |
Das Speichern legt den Datensatz an und schließt den SideOver; eine Benachrichtigung mit der vergebenen id erscheint und die Liste wird neu geladen.

Bearbeiten und Archivieren
Über die Spaltenaktion Bearbeiten je Zeile gelangen Anwender:innen auf die Detailseite /master/unit/<id>. Dort können dieselben Felder wie im Anlege-Dialog gepflegt werden, ergänzt um den Schalter Archiviert im Reiter Identifikation. Ein Setzen des Schalters füllt die Spalte archived mit dem aktuellen Zeitstempel; archivierte Einheiten bleiben in der Datenbank, werden aber in der Liste ausgeblendet (sofern keine entsprechende Schnellsuche aktiv ist).
2. Power-Suche
Die Liste bietet zwei Sucheebenen:
- Schnellsuche (Tastenkürzel
Ctrl K): freier Text, der gegenbarcode(startsWith),hostsystem_reference(contains),article.identundarticle.descriptionmatcht. Numerische Eingaben werden zusätzlich gegenarticle.net_volume_per_unitgetestet. - Erweiterte Suche (im Schnellsuche-Dialog aufklappbar): kombinierbare Filter je Attributgruppe.
In der Erweiterten Suche der Gruppe Ladeeinheit (Container) sind folgende Attribute verfügbar:
| Attribut | Typ | Wirkung |
|---|---|---|
Barcode | Text (contains, case-insensitive) | Liefert alle Einheiten, deren Barcode den Eingabewert enthält. |
ERP Referenznummer | Text (contains, case-insensitive) | Filter auf hostsystem_reference. |
UVV-Prüfung gültig bis | Datumsbereich | Optionales von und bis (jeweils inklusive), nur im Profil container. |
| UVV-Prüfung gültig | Trivalent (ja / nein / beliebig) | Status-Schalter, nur im Profil container. Semantik siehe 3.1 UVV-Prüfung. |

Mehrere Felder werden mit UND verknüpft. Das Trivalent-Feld ist ephemer: es geht nicht über den generischen buildQuickSearchWhere-Pfad in das Prisma-Where ein, sondern wird im Where-Builder buildUnitsWhere.ts ausgewertet (siehe Datenmodell-Hinweis weiter unten).
3. Besondere Funktionen
3.1 UVV-Prüfung
UVV steht für Unfallverhütungsvorschrift. Behälter unterliegen wiederkehrenden Sicherheitsprüfungen: Neu-Container werden nach 5 Jahren erstmalig geprüft, anschließend folgt eine Folgeprüfung alle 2,5 Jahre. Die nächste fällige Prüfung wird in der Spalte uvv_clearance_valid_until (Datentyp DATE, optional) hinterlegt. Die Spalte ist nur sichtbar, wenn das Anwendungsprofil container aktiv ist.
Status „UVV-Prüfung gültig" (Trivalent)
Der Filter UVV-Prüfung gültig in der erweiterten Suche kennt drei Zustände:
| Wert | Bedeutung |
|---|---|
ja | uvv_clearance_valid_until IS NOT NULL und uvv_clearance_valid_until ≥ heute. |
nein | uvv_clearance_valid_until IS NOT NULL und uvv_clearance_valid_until < heute. |
beliebig (Default) | Kein Filter. |
Wichtig: NULL zählt als „unbekannt". Einheiten ohne hinterlegtes UVV-Datum werden weder von ja noch von nein erfasst — sie tauchen ausschließlich im Default-Zustand beliebig auf. So erkennt das Team gezielt entweder Einheiten mit gültiger Prüfung, mit überfälliger Prüfung oder solche, für die noch nie ein Datum erfasst wurde.
Massenmodus „UVV-Prüftermin setzen"
Wählt man in der Liste über die Zeilen-Checkboxen mehrere Ladeeinheiten aus, erscheint in der Werkzeugleiste die Schaltfläche UVV-Prüftermin setzen.

Der Massendialog kennt drei sich gegenseitig ausschließende Modi:
Konkretes Datum
Setzt für alle gewählten Einheiten das gleiche Datum.

Tage zum aktuellen Datum addieren
Addiert pro Einheit eine konfigurierbare Anzahl Tage. Das Basisdatum ist je Einheit coalesce(unit.uvv_clearance_valid_until, heute) — Einheiten mit bereits gesetztem Datum werden also relativ zu ihrem aktuellen Wert verschoben, Einheiten ohne Datum starten bei „heute". Zwei Schnellschalter spiegeln die UVV-Cadence wider:
- +5 Jahre (Erstprüfung) — addiert 1825 Tage (≈ 5 Jahre).
- +2,5 Jahre (Folgeprüfung) — addiert 913 Tage (≈ 2,5 Jahre).

Datum löschen (auf leer setzen)
Setzt uvv_clearance_valid_until für alle selektierten Einheiten auf NULL. Sinnvoll, wenn ein Eintrag rückgängig gemacht oder eine Einheit aus dem Prüfplan genommen werden soll.
Alle drei Modi laufen serverseitig in einer Prisma-$transaction, damit entweder alle gewählten Einheiten aktualisiert werden oder keine.
4. Datenmodell
Tabelle unit
Jede Ladeeinheit ist genau eine Zeile in der Tabelle unit. Die für die Stammdatenpflege relevanten Spalten:
| Spalte | Typ | Beschreibung |
|---|---|---|
id | integer | Eindeutiger, automatisch vergebener Schlüssel. |
created_at | timestamptz | Zeitstempel der Anlage. |
updated_at | timestamptz | Zeitstempel der letzten Änderung. |
archived | timestamptz | Wird gesetzt, wenn die Ladeeinheit archiviert wird; NULL bei aktiven Einheiten. |
barcode | varchar(250) | Frei vergebbarer Barcode. |
hostsystem_reference | varchar(250) | Referenz aus dem führenden Drittsystem (ERP). |
article_id | integer | Verweis auf article mit article_kind = 'container'. |
net_weight_per_unit | numeric(10,5) | Maximales Nettogewicht in kg. |
net_volume_per_unit | numeric(10,5) | Maximales Volumen in m³. |
locking_reason_id | integer | Optionaler Verweis auf einen Sperrgrund. |
current_unit_location_id | integer | Verweis auf den aktuellen Standort (siehe unten). |
uvv_clearance_valid_until | date | Nächster fälliger UVV-Prüftermin. NULL = kein Termin hinterlegt. |
return_date | date | Optionales Rückgabedatum (Mietkontext). |
missing_from | date | Datum, ab dem die Einheit als vermisst gilt. |
UVV-Spalte und partieller Index
Die Spalte uvv_clearance_valid_until wird durch das Migrationsskript 20260505_3_ext_unit_uvv.sql angelegt. Zur Beschleunigung der Filter „UVV-Prüfung gültig" und „UVV-Prüfung gültig bis" wird ein partieller Index auf den Nicht-NULL-Bereich der Spalte erzeugt:
CREATE INDEX IF NOT EXISTS idx_unit_uvv_clearance_valid_until
ON unit (uvv_clearance_valid_until)
WHERE uvv_clearance_valid_until IS NOT NULL;
Damit fließen nur die tatsächlich datierten Einheiten in den Index ein — typischerweise eine Minderheit, was den Index klein und das Filtern preiswert hält.
Aktueller Standort current_unit_location
Der aktuelle Standort einer Ladeeinheit wird über die Spalte current_unit_location_id referenziert. Die Tabelle current_unit_location ist eine Diskriminator-Zeile, die genau einen der folgenden Fremdschlüssel trägt:
| Feld | Verweis | Bedeutung |
|---|---|---|
location_id | location | Lagerort (z. B. Stellplatz auf dem Hof). |
address_id | address | Adresse (z. B. Kundenstandort, Pit). |
vehicle_id | vehicle | Fahrzeug (z. B. ein LKW, der die Einheit aktuell befördert). |
container_unit_id | unit | Andere Ladeeinheit (Verschachtelung — die Einheit liegt auf bzw. in einer anderen). |
In der Stammdatenliste rendert die Spalte AKTUELLER STANDORT den Standort über die gemeinsame Komponente LocationReferenceSummary: die Variante mit der höchsten Priorität gewinnt (Lagerort > Adresse > Fahrzeug > Container) und wird mit passendem Symbol und Klick-zu-kopieren-Handle dargestellt.
Anwendungsprofil-Steuerung
Die UVV-bezogenen Bestandteile (Spalte in der Liste, Felder im Anlege- und Bearbeiten-Dialog, Filter in der Erweiterten Suche) sind über applicationProfiles: ["container"] an das Anwendungsprofil container gebunden. In Profilen ohne diese Markierung (z. B. library, intralogistics) sind UVV-Felder unsichtbar; das Datenmodell selbst bleibt aber identisch — uvv_clearance_valid_until existiert in jeder Installation.