Stammdaten
Artikel
Einführung
Der Artikelstamm bildet die Grundlage für nahezu alle Geschäftsprozesse in rocklog Edge: Bestände werden für Artikel geführt, Aufträge greifen auf Artikel als Leistungsmerkmal zu, und Dienstleistungen werden über sogenannte Dienstleistungsartikel abgewickelt. Dieses Dokument beschreibt das Datenmodell der Tabelle article, die Pflege von Dienstleistungsartikeln und ihre Verwendung in der Auftragsabwicklung.
1. Datenmodell
Tabelle article
Jeder Artikel ist genau eine Zeile in der Tabelle article. Die wichtigsten Attribute:
| Spalte | Typ | Beschreibung |
|---|---|---|
id | integer | Eindeutiger, automatisch vergebener Schlüssel. |
ident | varchar(250) | Eindeutiger fachlicher Bezeichner (SKU). |
description | text | Kurzbezeichnung. |
description_long | text | Lange Beschreibung. |
barcode, gtin | varchar(250) | Barcode bzw. Global Trade Item Number. |
hostsystem_reference | varchar(250) | Referenz aus dem führenden Drittsystem (ERP). |
article_type_id | integer | Verweis auf article_type (Artikeltyp). |
uom_id | integer | Verweis auf uom (Mengeneinheit). |
supplier_id | integer | Optionaler Verweis auf eine Lieferantenadresse. |
valid_from | date | Optionales Gültigkeitsdatum. |
archived | timestamp | Wird gesetzt, wenn der Artikel archiviert wird. |
active | boolean | Aktivierungs-Schalter. |
default_article | boolean | Markiert den Standardartikel je article_kind. |
bulk_item, batch_is_must, batch2_is_must, shelf_life_is_must | boolean | Bestandsführungsmerkmale. |
inventory_managed | boolean | Steuert, ob für den Artikel Bestände geführt werden. |
tags | text[] | Frei definierbare Schlagwörter. |
Dienstleistungsbezogene Attribute
Für Artikel mit Dienstleistungscharakter (article_type.article_kind = 'service') sind zusätzliche Felder relevant:
| Spalte | Typ | Beschreibung |
|---|---|---|
unique_per_job | boolean | Wenn gesetzt, ist pro Auftrag nur ein job_service_item mit diesem Artikel zulässig. |
comment_applicable | boolean | Erlaubt einen internen Kommentar je job_service_item. |
comment_public_applicable | boolean | Erlaubt einen kundenseitig sichtbaren Kommentar (z. B. auf dem Beleg). |
billable | boolean | Steuert, ob die Dienstleistung abrechenbar ist. |
abbr_dispo | varchar(1) | Einbuchstabige Abkürzung für die Dispoanzeige. |
abbr_accounting | varchar(3) | Bis zu dreistellige Abkürzung für Berichte und Buchungstexte. |
color | text | Farb-Token aus der Tailwind-Palette der Form <name>-<schattierung> (z. B. red-500). Eine Datenbank-CHECK-Bedingung schränkt den Wertebereich auf die kuratierte Palette ein. |
Artikeltypen und article_kind
Jeder Artikel gehört zu genau einem article_type. Der Aufzählungswert article_kind auf dem Artikeltyp klassifiziert den Artikel grob:
article_kind | Bedeutung |
|---|---|
product | Physisch geführter Artikel mit Bestand. |
service | Dienstleistung; nicht bestandsgeführt, aber für Aufträge relevant. |
| Weitere | Materialien, Verpackungen u. ä. — siehe Datenbank-Enum. |
In der Stammdatenliste der Artikel ist die Spalte Artikeltyp-Kennung ein gefilterter Anzeigename des hinterlegten article_type.
Beziehung job_tx_model_article
Dienstleistungsartikel werden je Auftragsschritt (job_tx_model) zugeordnet. Die Verknüpfung lebt in der Tabelle job_tx_model_article:
| Spalte | Typ | Beschreibung |
|---|---|---|
job_tx_model_id | integer | Auftragsschritt, zu dem die Dienstleistung gehört. |
article_id | integer | Verweis auf den Dienstleistungsartikel. |
default_amount | numeric(10,5) | Vorbelegte Menge bei Auswahl der Dienstleistung. |
active | boolean | Aktiviert die Zuordnung. |
auto_create | boolean | Steuert die automatische Anlage des job_service_item beim Durchführen des Auftragsschritts (siehe Automatische Ableitung). |
Eine eindeutige Bedingung (job_tx_model_id, article_id) verhindert, dass ein Artikel mehrfach zum selben Auftragsschritt zugeordnet wird.
Erfasste Aufwände job_service_item
Die tatsächlich für einen Auftrag erfassten Dienstleistungen werden in job_service_item gespeichert. Wenn article.unique_per_job = true ist, sorgt der Trigger enforce_unique_per_job dafür, dass derselbe Artikel pro Auftrag nur einmal vorkommen kann — unabhängig davon, ob er manuell, beim Duplizieren oder per automatischer Ableitung entstanden ist.
2. Dienstleistungsartikel
Dienstleistungsartikel sind Artikel mit article_type.article_kind = 'service'. Sie tragen die im Datenmodell beschriebenen dienstleistungsbezogenen Attribute und werden über job_tx_model_article-Zuordnungen einzelnen Auftragsschritten verfügbar gemacht.
Konfiguration im Artikelstamm
Im Artikeldetail bündelt der Reiter Dienstleistungsbezogen alle service-spezifischen Schalter und Felder:

- Eindeutig pro Auftrag (
unique_per_job) — Verhindert mehrfaches Erfassen derselben Dienstleistung im selben Auftrag. - Abrechenbar (
billable) — Markiert die Dienstleistung als rechnungsrelevant. - Kommentar möglich / Öffentlicher Kommentar möglich (
comment_applicable/comment_public_applicable) — Schalten die jeweiligen Kommentarfelder im Erfassungsdialog frei. - Abkürzung Dispoanzeige (
abbr_dispo) — Ein Zeichen, das in der Disposition neben dem Auftrag eingeblendet wird (z. B.Nfür „Notentsorgung"). - Abkürzung Berichte (
abbr_accounting) — Bis zu drei Zeichen für Berichte und Buchungstexte (z. B.NES). - Farbe (
color) — Tailwind-Farbtoken, der die Hervorhebung in Disposition und Auftragserfassung bestimmt.
Unterhalb der Schalter listet die Sektion Dienstleistungsartikel für Arbeitsschritt alle bestehenden job_tx_model_article-Zuordnungen mit Auftragsschritt, Standardmenge und Status.
Farbauswahl
Die Farbe wird aus einer kuratierten Tailwind-Palette gewählt. Der Auswahldialog zeigt die zulässigen Kombinationen aus Farbnamen und Schattierungen; die Datenbank weist andere Werte über die CHECK-Bedingung zurück.

Anzeige in der Stammdatenliste
Die Artikelstammdatenliste blendet die Spalte FARBE als kompakten Farbswatch ein. Bewegt man den Mauszeiger über den Swatch, erscheint der Tailwind-Token (z. B. red-500) als Tooltip.

Die Spalten abbr_dispo, abbr_accounting und color lassen sich bei Bedarf über die Spaltenauswahl ein- und ausblenden.
Verwendung in der Auftragserfassung
Beim Durchführen eines Auftragsschritts blendet der Erfassungsdialog die für den job_tx_model hinterlegten Dienstleistungsartikel ein. Aktive Dienstleistungen lassen sich über Schalter ein- und ausschalten, mengenpflichtige Artikel zusätzlich mit der gewünschten Menge versehen.
Unter dem Eintrag werden Abkürzungen und Farbe der zugehörigen article-Zeile schreibgeschützt als Badges/Swatch angezeigt — so erkennen Anwender:innen die Dispoanzeige bereits vor dem Speichern.

Farbmarkierung in der Disposition
In der Auftragsübersicht Disposition auf Zeitstrahl sammeln sich alle erfassten Dienstleistungen je Auftrag. Liegt für einen Artikel eine abbr_dispo und eine color vor, erscheint die Abkürzung farbig hinterlegt direkt in der Tageszelle des Auftrags — Disponent:innen erkennen so auf einen Blick, welche Aufträge eine Sondersituation haben (z. B. Notentsorgung).

Eingangsbedingungen für die Anzeige:
- Die Dienstleistung ist auf dem Auftrag als
job_service_itemerfasst (manuell oder per Automatische Ableitung). - Der zugrunde liegende Artikel hat eine nicht leere
abbr_dispound eine gültigecolor.
Farbmarkierung auf dem Tablet
Auf dem Tablet (/Tx, Auftragsauswahl der Fahrer:innen) erscheint dasselbe farbige Dispo-Kürzel direkt neben dem Aufgabentitel der Auftragskarte. Fahrer:innen erkennen so beim Picken der nächsten Aufgabe sofort, ob es sich z. B. um eine Notentsorgung handelt — die Darstellung ist konsistent mit der Disposition.

Die Anzeige greift in beiden Listendarstellungen (ausführliche und kompakte Karte) und nutzt dieselben Eingangsbedingungen wie die Disposition: ein zugehöriges job_service_item mit abbr_dispo und color am Artikel.
2.1 Automatische Ableitung von Dienstleistungen bei Aufträgen
Für wiederkehrende, an einen Auftragsschritt fest gekoppelte Dienstleistungen lohnt sich die automatische Anlage. Dazu wird auf der Zuordnung job_tx_model_article der Schalter Automatische Anlage (auto_create) gesetzt.
Verhalten beim Durchführen des Auftragsschritts
Beim Erzeugen eines job_tx (Durchführung des Auftragsschritts) merge der Backend-Layer die explizit übergebenen _service_items mit den auf job_tx_model_article als auto_create = true markierten Einträgen. Die Logik überspringt jeden Artikel, der bereits
- in der explizit übergebenen Liste steht oder
- bereits ein
job_service_itemfür den Auftrag hat.
Damit wird das Trigger-Constraint enforce_unique_per_job nie verletzt. Für jeden verbleibenden auto-create-Eintrag wird ein job_service_item mit der hinterlegten default_amount erzeugt.
Wann sich auto_create lohnt
- Standarddienstleistungen, die ohnehin auf jedem Auftrag des Schritts entstehen — z. B. eine Pauschale.
- Sonderfälle, die für eine spezielle Adresse oder einen speziellen Artikel obligatorisch sind und nicht vergessen werden sollen — z. B. die Notentsorgung am Beispiel oben.
Wann auto_create deaktiviert bleiben sollte
- Dienstleistungen, die nur in Einzelfällen entstehen und vom Auftragnehmer:in bewusst ein- oder ausgeschaltet werden sollen.
- Dienstleistungen, deren Standardmenge stark variiert — die
default_amountwäre nicht aussagekräftig.
Beispiel: Notentsorgung
Der Standardartikel Notentsorgung ist im Auslieferungszustand mit abbr_dispo = 'N', abbr_accounting = 'NES' und color = 'red-500' vorbelegt. Wird er auf einem Auftragsschritt mit auto_create = true zugeordnet, erscheint die Notentsorgung beim Durchführen automatisch als job_service_item und ihre Farbmarkierung schlägt in der Disposition als rotes N-Badge auf — auch dann, wenn der Eintrag im Erfassungsdialog selbst nicht aktiv getoggelt wurde.