Materialplanung Lager ausschließen

ReplenishmentExclude – ein Lager gezielt von der Bestands-/Nachbestellrechnung ausschließen

Hallo zusammen,

ich hatte folgendes Problem und dachte, das teile ich mal, falls jemand vor der gleichen Frage steht:

### Das Problem
Dolibarr summiert auf der Nachbestell-Seite (*Produkte → Lager → Nachbestellung*) den Lagerbestand grundsätzlich über **alle** Lager hinweg. Das Gleiche gilt für den „aktuellen“ und „virtuellen“ Bestand, wie er praktisch überall sonst in Dolibarr verwendet wird (Verfügbarkeitsprüfung bei Auftragspositionen, Kasse/TakePOS, Versand, Fertigung/Stücklisten, die Webservice-API, Produktlisten, …). Eine Möglichkeit, ein bestimmtes Lager davon **auszuschließen**, gibt es out-of-the-box nicht – das Lager-Dropdown auf der Nachbestell-Seite lässt einen nur auf *ein* Lager eingrenzen, nicht eines gezielt weglassen.

### Das Beispiel, das mich dazu gebracht hat

Wir haben ein **Demolager** (Vorführgeräte, Messe-/Showroom-Bestand). Da liegt echte, physische Ware, die auch ganz normal weiter bebucht wird – Wareneingang, Umlagerung, Inventur, alles wie gewohnt. Aber: Diese Stücke sind dauerhaft als Vorführmodell gebunden und sollen **nicht** als verfügbarer Bestand für die allgemeine Produktions- bzw. Verkaufsplanung zählen. Ohne Eingriff hat Dolibarr das Demolager aber ganz selbstverständlich in jede Verfügbarkeits- und Nachbestellrechnung mit eingerechnet – ein Vorführstück hat so künstlich echten Nachbestellbedarf „versteckt“, bzw. den angezeigten Bestand verfälscht.

### Die Lösung

Das Modul fügt jedem Lager eine einfache Checkbox hinzu: **„Von Nachbestellung ausschließen“**. Ist sie aktiviert:

- Der Bestand dieses Lagers fließt **nicht mehr** in die Nachbestellvorschläge ein

  • Er zählt auch **nirgends sonst** in Dolibarr zum aktuellen/virtuellen Bestand (Auftragsverfügbarkeit, Kasse, Versand, MRP-Bedarfsrechnung, Webservice-API, Produktlisten, …)
  • Das Lager selbst bleibt **voll benutzbar** – es wird nicht geschlossen oder versteckt, Bebuchung/Wareneingang/Inventur funktionieren ganz normal weiter

- Überall, wo Dolibarr den Lagernamen anzeigt, erscheint zusätzlich ein kleiner **„(ausgeschlossen)“**-Hinweis, damit auf einen Blick klar ist, dass dieses Lager bei der Bestandsrechnung außen vor bleibt

### Technischer Hinweis

Für den zentralen Teil (Bestandsberechnung in `Product::load_stock()`) bietet Dolibarr core aktuell **keinen Hook** an – dafür war ein kleiner, dokumentierter Patch in `product/class/product.class.php` nötig (eine Handvoll Zeilen, inkl. Vorgehen zum erneuten Einspielen nach einem Core-Update). Für die Badge-Anzeige am Lagernamen reicht dagegen ein bereits vorhandener Core-Hook, da war kein Patch nötig.

Wer produktiv damit arbeiten will, sollte sich also bewusst sein: ein Dolibarr-Update überschreibt den Patch kommentarlos, die Ausschluss-Logik hört dann still auf zu wirken, bis der Patch neu eingespielt wird.

### Sonstiges

- Getestet mit Dolibarr 22.0.3

  • einfach etwas, das ich für unseren eigenen Bedarf gebaut habe – Feedback und Verbesserungsvorschläge gerne willkommen

Viele Grüße!

2 „Gefällt mir“

Danke dafür, sowas in der Art hatte ich mir schon einmal in der Vergangenheit gewünscht. Aktuell brauche ich es eher nicht, aber gut zu wissen, dass es das gibt. Anwendungsfälle gibt es ja viele. Spontan fällt mir dazu ein Zwischenlager für Retouren und Reklamationen ein, die erst nach Kontrolle wieder verkaufbar sein sollen.

Hier ging es auch um ähnliches: Produkte in Sperrlager

1 „Gefällt mir“