Zum Hauptinhalt springen

Mengeneinheiten

Zweck

Mengeneinheiten (Unit) bilden die Mengen-Stammdaten (Stk, kg, m, h, l, m², m³, ... über 2 000 UN/ECE-Codes). Sie werden zentral von der Speam-Master-Datenbank synchronisiert — Mandanten koennen die Stammwerte nicht ändern, sondern nur das relevant-Flag setzen, um eigene Auswahl-Listen schlanker zu machen.

Voraussetzungen

- Master-Sync wurde mindestens einmal durchgeführt (siehe Setup-Wizard Schritt 7). - Berechtigung `view:Unit`. Für `relevant`-Flag ändern: `update:Unit`.

Berechtigungen (CASL)

ActionSubjectWirkungKeycloak-Rolle
viewFE_Unit, UnitListe/Details aufrufbar
updateUnitrelevant-Flag setzenAPP_SPEAMCORE_UPDATE_UNIT

Schritt-für-Schritt-Anleitung

Einheit als „relevant" markieren

  1. Mengeneinheiten (/units).
  2. Einheit anklicken.
  3. Relevant-Switch aktivieren.
  4. Wert wird automatisch gespeichert.

Master-Sync auslosen

  1. Auf der Listen-Seite den Sync-Button klicken (oder über API POST /api/units/sync).
  2. Das System fetcht die aktuellen Master-Werte und upsert sie lokal.

Einheiten-Liste mit ~2.090 Eintraegen aus dem Master-Stamm. Spalten: Code, Name, Symbol, Abkuerzung, Relevant. Filter 'Relevant' und 'Master-Synchronisierung'-Button oben rechts.

Einheit-Detail (Beispiel: Jahr / ANN). Switch 'Relevant' editierbar, alle anderen Felder (Einheitencode, Name, Abkuerzung, Symbol) sind read-only — wurden vom Master-Sync gesetzt.

Toolbar (Detail-Seite)

Schlanke Toolbar oben rechts:

IconAktion (aria-label)CASLWirkung
ZurückgehenZurück zur Liste.
🏠Zur Startseite gehenSpringt auf das Dashboard / /.
⏮/◀/▶/⏭PaginationNavigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung.

Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:

  • KAL. (Mini-Kalender)
  • ZEIT (Persoenliche Wochen-Arbeitszeit)
  • ARBEIT (Eigene bevorstehende Aufträge)

UI-Elemente

Switch: „Relevant"

Einziges editierbares Feld. Steuert, ob die Einheit in Auswahl-Listen (z. B. für Produkt-Mengeneinheit) angezeigt wird.

Button: „Sync" (administrativ)

Triggert POST /api/units/sync — fetcht die Master-Daten neu.

Felder und Eingaben

FeldnamePflichtDatentypBeschreibungWirkung beim AusfuellenVoraussetzung
codeStringUN/ECE-Code der Einheit (z. B. EA, KGM, MTR). Disabled im FE.Wird beim Master-Sync gesetzt.
nameStringKlartext-Name (z. B. „Stueck", „Kilogramm"). Disabled.Wie oben.
abbreviationStringKurzform (z. B. „Stk", „kg"). Disabled.Wird auf Belegen angezeigt.
symbolStringSymbol (z. B. „kg", „m²"). Disabled.Erscheint neben Mengen in der UI.
relevantneinBoolean (Switch)User-editierbar — markiert die Einheit als relevant für den Mandanten.Wenn true: erscheint in der Mengen-Auswahl von Produkten und Belegen. Wenn false: bleibt versteckt.update:Unit
masterUnitIdUUIDFK zur Master-Quelle.Identifiziert die Quelle beim Sync.

Workflows und Zustaende

Master-Sync upsert die Master-Daten in regelmaessigen Abstaenden (Job-basiert). Mandanten-Änderungen am relevant-Flag bleiben dabei erhalten.

Im Code geprüft (siehe api.speamcore.com/src/services/unitSync.service.ts): Der Standard-Sync ueberschreibt das relevant-Flag nicht — Tenant-Edits bleiben erhalten. Nur wenn der Sync mit forceReset = true ausgeloest wird (administrativer Reset), werden auch lokale relevant-Werte aus dem Master übernommen.

Eine Race-Condition im engeren Sinne ist klein, aber nicht null: Der Sync laedt zuerst alle Master-Units in den Speicher (Snapshot), erzeugt dann update-Daten und schreibt in Batches von 100 Einträgen zurück. Wenn ein Anwender genau in dieser Spanne relevant umschaltet UND der Sync mit forceReset = true laeuft, wird der Toggle vom Master ueberschrieben. Beim Standard-Sync ist relevant nicht im updateData enthalten — kein Konflikt.

Empfehlung: forceReset nur ausführen, wenn man bewusst alle Tenant-Edits zuruecksetzen moechte (z. B. nach versehentlicher Massen-Deselektion).

Wiederverwendbare Konzepte

Verknuepfungen zu anderen Modulen

  • ProdukteProduct.unitId referenziert diese Einheit.
  • Verkaufs-/Bestellbelege — Positionen verwenden unitId aus dem Produkt-Stamm.
  • HS-Codes — werden parallel synchronisiert (siehe Master-Sync).

Häufige Fehler und Lösungen

FehlerLösung
Einheit nicht in Produkt-Auswahl sichtbarrelevant = false setzen — markieren und neu laden.
Einheit fehlt komplettMaster-Sync laeuft (noch) nicht — siehe Setup-Wizard Schritt 7.
Änderung an code/name nicht möglichPer Design — Stammdaten kommen vom Master. Korrektur dort vornehmen.

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/unitsListeview Unit
GET/api/units/:idDetailview Unit
POST/api/unitsAnlegen (selten manuell genutzt)create Unit
PUT/api/units/:idÄndern (i.d.R. nur relevant)update Unit
DELETE/api/units/:idLöschendelete Unit
POST/api/units/syncMaster-Sync triggern(admin)

Versionshinweise

  • 2026-04-29: Initiale Veroeffentlichung mit FE-Tiefen-Standard.