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!




