Skip to Content

Nachfüllung – Prozess-Details

Diese Seite erklärt die technischen Details hinter dem Nachfüll-Workflow: Buchungslogik, Status-Flows, das Abbruch-Verhalten und die Rolle des SYS-WAGEN.

Status-Flow: NachfĂĽllbericht

Status-Flow: NachfĂĽll-Positionen (Items)

Das Kernprinzip: Echtzeit-Buchung

Jede bestätigte Position wird sofort gebucht — nicht am Ende.

Das ist der fundamentale Unterschied zur Kommissionierung. Beim Nachfüllen wechselt die Ware nur ihren Platz innerhalb des Lagers — der Bestand muss jederzeit korrekt abgebildet sein, damit kein anderer Prozess auf Basis veralteter Zahlen arbeitet.

Warum dieser Unterschied zur Kommissionierung?

ProzessBuchungszeitpunktBegrĂĽndung
KommissionierungAm Ende (atomar)Ware verlässt das Lager → genauer Zeitpunkt weniger kritisch
NachfüllungSofort pro PositionWare bleibt im Lager, nur Platzwechsel → Bestand muss jederzeit stimmen

Buchungslogik im Detail

Batch-Modus: Zwei Buchungen pro Position

Jede Buchung erzeugt einen Stock Movement mit movement_type: 'replenishment' im Audit-Trail.

Einzeln-Modus: Eine atomare Buchung pro Position

Sicherheits-Checks vor jeder Buchung

Bevor eine Buchung ausgefĂĽhrt wird, prĂĽft das System:

  1. Status der Position: Muss pending (Phase 1 Einzeln / Phase 1 Batch-Einsammeln) oder collected (Phase 2 Batch-Verteilen) sein — verhindert Doppelverarbeitung
  2. Auftrag aktiv: Der Bericht muss pending oder in_progress sein — auf abgebrochenen/abgeschlossenen Berichten wird nicht mehr gebucht
  3. Bestand ausreichend: Auf dem Quell-Platz muss genug freier Bestand vorhanden sein — durch offene Picklisten reservierte Mengen zählen nicht (die Nachfüllung nimmt keinem Picker die eingeplante Ware weg)
  4. Ziel-Platz valide: Muss pick_and_ship-Typ haben, aktiv sein, kein System-Platz sein und im Lager des Berichts liegen
  5. Menge gedeckelt (Batch): Beim Verteilen kann nie mehr platziert werden, als für diese Position eingesammelt wurde — fremder Wagen-Bestand (andere Positionen/Berichte) ist geschützt. Teilmengen sind erlaubt: Die Position bleibt collected, bis der Rest verteilt oder übersprungen ist

Technische Details: RPC-Funktionen

collect_replenishment_item(p_item_id, p_quantity) — Batch Phase 1:

  1. SELECT ... FOR UPDATE auf die Position (verhindert gleichzeitige Verarbeitung)
  2. PrĂĽft item.status = 'pending'
  3. PrĂĽft stock.quantity >= p_quantity auf Quell-Platz
  4. Bucht Quell-Platz → SYS-WAGEN
  5. Erzeugt stock_movement mit movement_type: 'replenishment'
  6. Setzt item.status = 'collected', item.actual_quantity = p_quantity

place_replenishment_item(p_item_id, p_quantity, p_target_location_id) — Batch Phase 2 + Einzeln:

  1. SELECT ... FOR UPDATE auf die Position
  2. PrĂĽft Status: 'collected' (Batch) oder 'pending' (Einzeln)
  3. Validiert Ziel-Platz: location_type = 'pick_and_ship' und is_system = false
  4. Prüft Bestand: Batch → SYS-WAGEN, Einzeln → Quell-Platz
  5. FĂĽhrt Buchung aus
  6. Erzeugt stock_movement
  7. Setzt item.status = 'placed'

skip_replenishment_item(p_item_id, p_reason) — Überspringen (beide Modi):

  1. SELECT ... FOR UPDATE auf die Position
  2. PrĂĽft Status pending/collected und dass der Bericht noch aktiv ist
  3. Batch + bereits eingesammelt: bucht die Ware automatisch vom SYS-WAGEN zurück auf den Quell-Platz (geklemmt auf den tatsächlichen Wagen-Bestand, zwei stock_movements)
  4. Setzt item.status = 'skipped' und speichert den optionalen Grund (skip_reason)

cancel_replenishment_order(p_order_id) — Bericht abbrechen:

  1. Bucht für alle eingesammelten, noch nicht verteilten Positionen die Ware transaktional vom SYS-WAGEN zurück auf ihre Quell-Plätze
  2. Setzt den Bericht auf cancelled

Der SELECT ... FOR UPDATE verhindert, dass zwei Mitarbeiter dieselbe Position gleichzeitig abarbeiten können.

SYS-WAGEN: Der virtuelle NachfĂĽllwagen

Im Batch-Modus dient SYS-WAGEN als virtueller Transit-Lagerplatz. Physisch stellt er den Wagen dar, den der Mitarbeiter durch das Lager schiebt.

Wichtige Eigenschaften von SYS-WAGEN:

  • Eingehende Buchungen nur vom NachfĂĽll-Prozess (kein manuelles Einbuchen)
  • Ausgehende Buchungen (Umlagern weg vom Wagen) sind jederzeit möglich — notwendig beim Abbruch-Szenario
  • Sichtbar im BestandsĂĽbersicht als Lagerplatz mit eigenem Bestand

Mehr zu System-Lagerplätzen: System-Lagerplätze

Abbruch-Verhalten

Ein NachfĂĽllbericht kann jederzeit abgebrochen werden (Status pending oder in_progress). Das System behandelt bereits gebuchte und nicht begonnene Positionen unterschiedlich:

Automatische RĂĽckbuchung beim Abbruch

Wenn Positionen im Batch-Modus eingesammelt (collected), aber noch nicht verteilt (placed) wurden, bucht das System die Ware beim Abbruch automatisch vom SYS-WAGEN zurück auf die jeweiligen Quell-Plätze — transaktional, mit vollständigem Audit-Trail (movement_type: 'replenishment'). Ein manuelles Räumen des Wagens ist nicht mehr nötig.

Die Rückbuchung ist auf den tatsächlichen Wagen-Bestand geklemmt: Wurde der Wagen zwischenzeitlich per Korrektur angefasst, wird nie mehr zurückgebucht, als physisch dort liegt (kein negativer Bestand). Dasselbe gilt beim Überspringen einer bereits eingesammelten Position — auch dort geht die Ware automatisch zurück auf den Quell-Platz.

Stock Movements im Audit-Trail

Alle NachfĂĽll-Buchungen erscheinen im Bestandsprotokoll mit movement_type: 'replenishment'. Das unterscheidet sie von anderen Bewegungstypen:

movement_typeAuslöser
pickKommissionierung (Pickliste abschlieĂźen)
receiptWareneingang
replenishmentNachfĂĽllung (dieser Prozess)
relocationManuelles Umlagern
adjustment_plus / adjustment_minusBestandskorrektur

Konkurrenz: Zwei Berichte fĂĽr denselben Artikel

Das System verhindert beim Erstellen von Berichten keine parallelen Berichte. Wenn zwei Berichte denselben Artikel aus demselben Quell-Platz enthalten:

  • Erster Mitarbeiter sammelt den Bestand ein → Buchung erfolgt, Bestand auf Quell-Platz sinkt
  • Zweiter Mitarbeiter versucht einzusammeln → Bestand reicht nicht aus → System zeigt Fehlermeldung
  • Der zweite Mitarbeiter kann die Position ĂĽberspringen

Das ist ein bewusst akzeptiertes Verhalten. Es entspricht der Lagerrealität: Wer zuerst kommt, mahlt zuerst. Die Echtzeit-Buchung ist der Schutzmechanismus.

Nachfüllung vs. Kommissionierung: Vollständiger Vergleich

MerkmalNachfĂĽllungKommissionierung
BuchungszeitpunktSofort pro PositionAm Ende (atomar)
BuchungsrichtungLagerplatz → LagerplatzLagerplatz → (Versand)
Transit-PlatzSYS-WAGEN (Batch)Keiner
BestandsreservierungNein (Echtzeit-Schutz)Nein
Abbruch-AufwandGgf. SYS-WAGEN manuell räumenKeine Rückbuchungen
Audittrail-Typreplenishmentpick