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?
| Prozess | Buchungszeitpunkt | BegrĂĽndung |
|---|---|---|
| Kommissionierung | Am Ende (atomar) | Ware verlässt das Lager → genauer Zeitpunkt weniger kritisch |
| Nachfüllung | Sofort pro Position | Ware 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:
- Status der Position: Muss
pending(Phase 1 Einzeln / Phase 1 Batch-Einsammeln) odercollected(Phase 2 Batch-Verteilen) sein — verhindert Doppelverarbeitung - Auftrag aktiv: Der Bericht muss
pendingoderin_progresssein — auf abgebrochenen/abgeschlossenen Berichten wird nicht mehr gebucht - 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)
- Ziel-Platz valide: Muss
pick_and_ship-Typ haben, aktiv sein, kein System-Platz sein und im Lager des Berichts liegen - 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:
SELECT ... FOR UPDATEauf die Position (verhindert gleichzeitige Verarbeitung)- PrĂĽft
item.status = 'pending' - PrĂĽft
stock.quantity >= p_quantityauf Quell-Platz - Bucht Quell-Platz → SYS-WAGEN
- Erzeugt
stock_movementmitmovement_type: 'replenishment' - 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:
SELECT ... FOR UPDATEauf die Position- PrĂĽft Status:
'collected'(Batch) oder'pending'(Einzeln) - Validiert Ziel-Platz:
location_type = 'pick_and_ship'undis_system = false - Prüft Bestand: Batch → SYS-WAGEN, Einzeln → Quell-Platz
- FĂĽhrt Buchung aus
- Erzeugt
stock_movement - Setzt
item.status = 'placed'
skip_replenishment_item(p_item_id, p_reason) — Überspringen (beide Modi):
SELECT ... FOR UPDATEauf die Position- PrĂĽft Status
pending/collectedund dass der Bericht noch aktiv ist - 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) - Setzt
item.status = 'skipped'und speichert den optionalen Grund (skip_reason)
cancel_replenishment_order(p_order_id) — Bericht abbrechen:
- Bucht für alle eingesammelten, noch nicht verteilten Positionen die Ware transaktional vom SYS-WAGEN zurück auf ihre Quell-Plätze
- 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_type | Auslöser |
|---|---|
pick | Kommissionierung (Pickliste abschlieĂźen) |
receipt | Wareneingang |
replenishment | NachfĂĽllung (dieser Prozess) |
relocation | Manuelles Umlagern |
adjustment_plus / adjustment_minus | Bestandskorrektur |
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
| Merkmal | NachfĂĽllung | Kommissionierung |
|---|---|---|
| Buchungszeitpunkt | Sofort pro Position | Am Ende (atomar) |
| Buchungsrichtung | Lagerplatz → Lagerplatz | Lagerplatz → (Versand) |
| Transit-Platz | SYS-WAGEN (Batch) | Keiner |
| Bestandsreservierung | Nein (Echtzeit-Schutz) | Nein |
| Abbruch-Aufwand | Ggf. SYS-WAGEN manuell räumen | Keine Rückbuchungen |
| Audittrail-Typ | replenishment | pick |