Multilager

Überblick
Mehrere Lagerorte mit Vorrang und eigener Bestandsbewertung. Das Default-Lager übernimmt die Bestandsauflösung — es ist die Voreinstellung, wenn kein anderes bestimmt ist.
Vier Ebenen bauen aufeinander auf: Lagerort → Lagerplätze → Nachschub-Regeln → Bestand. Der Bestand je Lager ist dabei nur lesend; Buchungen entstehen über Umlagerungen und die Buchungswege der anderen Module — nie durch direktes Eintragen.
Kernaufgaben
Lagerorte pflegen. Je Ort Vorrang und Bewertung; der Klick auf die Zeile öffnet das Detail mit Lagerplätzen, Nachschub-Regeln und Bestand.
Lagerplätze ordnen. Bins werden nach Kommissionier-Reihenfolge sortiert: Pick-Priorität aufsteigend, dann Code. Diese Reihenfolge ist der Laufweg im Lager — wer sie sinnvoll setzt, spart bei jeder Kommissionierung Schritte.
Nachschub-Regeln setzen. Min/Max je Produkt: Fällt der verfügbare Bestand unter Min, entsteht ein Vorschlag, bis Max aufzufüllen. Es gibt genau eine Regel je Lager × Produkt — zwei widersprüchliche Regeln kann es damit nicht geben.
Konsignation führen. Lager → Konsignation zeigt, was beim Kunden liegt, was er verbraucht hat und was davon noch nicht berechnet ist. Der Ablauf hat drei Schritte: Bestand beim Kunden sehen (der Arbeitsvorrat „verbraucht und noch nicht berechnet"), Verbrauch melden (Artikel, Menge, optional die Referenz des Kunden-Belegs) und als berechnet vermerken, sobald die Rechnung raus ist. Solange die Ware im Konsignationsregal liegt, gehört sie uns — Erlös entsteht erst mit der Verbrauchsmeldung. Wer den Rückweg nicht von Hand abhaken will, lässt ihn von einer Automation am Ereignis Konsignations-Verbrauch gemeldet erledigen.
Umlagern. Eine Umlagerung läuft dreistufig: Entwurf anlegen → versenden (Abgang) → empfangen (Zugang). Die Ware ist zwischen Abgang und Zugang unterwegs und in keinem der beiden Lager verfügbar — genau so, wie es der Wirklichkeit entspricht.
Versandlager nach Nähe wählen. Ohne Lagervorgabe am Auftrag wählt Octibiz das Lager nach Priorität und Bestand: das Standard-Lager zuerst, dann die höhere Priorität, und jeweils nur so viel, wie dort frei ist. Ist unter Lagerwahl nach Nähe der Schalter Nächstes Lager zuerst an, ordnet Octibiz die Lager stattdessen nach der Luftlinie zum Empfänger (Lieferanschrift des Auftrags, sonst Rechnungsanschrift): das nächste Lager mit freiem Bestand reserviert und versendet zuerst, der Rest kommt aus dem nächstfernen. Konsignationslager bleiben hinten, Lager ohne Koordinaten hinter denen mit; bei gleicher Entfernung gilt die bisherige Reihenfolge. Dafür braucht es Koordinaten an den Lagern und einen aktiven Geokodierer (Einstellungen → Integrationen, Typ geocoder), der die Empfänger-Anschrift in einen Ort übersetzt. Fehlt eines davon, liefert der Geokodierer keinen Treffer oder ist er nicht erreichbar, gilt still die Regel nach Priorität und Bestand — eine Bestellung bleibt nie hängen. Ein am Auftrag oder Lieferschein gewähltes Lager gewinnt immer.
Mit dem JTL-Fulfillment-Netzwerk auslagern. Ein Fulfiller im JTL-Fulfillment-Netzwerk ist bei uns ein Dienstleister-Lager: die Ware gehört uns, gelagert, kommissioniert und versendet wird dort. Damit Octibiz selbst mit dem Netzwerk spricht, tragen Sie am Lager unter Kennung beim Dienstleister die Lager-Kennung im Netzwerk ein und wählen bei Fulfillment-Netzwerk den Eintrag JTL-Fulfillment-Netzwerk. Den Zugang richten Sie unter Einstellungen → Integrationen als Typ jtl_ffn ein. Danach gleicht Octibiz alle 15 Minuten ab (oder sofort mit Mit Fulfiller abgleichen oben auf der Lagerseite):
- Artikel: lagergeführte Artikel mit Artikelnummer gehen als Händler-Artikel ins Netzwerk
(Name, Artikelnummer, EAN, Hersteller-Nr., Gewicht, Ursprungsland); geänderte Stammdaten werden nachgeschickt.
- Auslieferungsaufträge: ein freigegebener Auslagerungsauftrag geht mit Lieferanschrift und
Positionen hinaus; die Auftragsnummer des Netzwerks steht danach am Auftrag (angenommen).
- Versand: meldet das Netzwerk Pakete, übernimmt Octibiz Versanddienstleister und
Sendungsnummer und bucht die versendeten Mengen aus dem Dienstleister-Lager ab — Teil-Lieferungen inklusive. Ein im Netzwerk stornierter Auftrag ohne Versand wird zurückgezogen. Stammt der Auslagerungsauftrag aus einem Auftrag (Bezug sales_order:<Nummer des Datensatzes>), entsteht zugleich ein Lieferschein (versendet) und eine Sendung mit der Sendungsnummer im Versandzentrum (Erfüllungsart Fulfiller), und der Auftrag schreitet fort — ohne zweite Bestandsbuchung.
- Bestand: der Bestand je Fulfiller-Lager kommt als absolute Meldung; die Differenz zu
unserem Buch wird als Inventur-Korrektur gebucht. Artikel mit einem noch laufenden Auftrag gleicht erst der nächste Lauf nach dem Versand ab — sonst zählte die Ware doppelt.
Gebucht wird dabei ausschließlich über die Auslagerung und damit über die Bestands-Schnittstelle — nie am Lager vorbei. Jeder Lauf steht im Protokoll der Integration.
Vorschläge lagerübergreifend prüfen. Die Auswertung aller Nachschub-Regeln zeigt, wo aufgefüllt werden muss.
Bestand auf einen Blick. Lager → Bestandsmatrix zeigt je Artikel den verfügbaren Bestand in jedem aktiven Lager und die Summe. Steht in Klammern eine zweite Zahl, ist davon etwas reserviert — die Klammer nennt den physischen Bestand. Suche und Artikelzustand schneiden die Matrix; sind es mehr als 50 Artikel, nennt ein Hinweis unter der Tabelle, wie viele fehlen.
B-Ware getrennt führen. Der Bestand je Lager ist nach Artikelzustand getrennt: Neuware, B-Ware/gebraucht, geprüft wiederaufbereitet und beschädigt stehen je in einer eigenen Zeile. Eine Retoure bucht die Ware in dem Zustand ein, den Sie an der Retourenposition erfasst haben — eine gebrauchte Rücksendung landet also nie im Neuwarenbestand. Verkaufbar für Aufträge ist nur Neuware; Nachschub-Regeln, Einlagerungsvorschlag und Inventur gibt es je Zustand (Vorgabe Neuware): eine Regel für B-Ware überwacht nur B-Ware, die Inventur zählt jeden Zustand in einer eigenen Zeile. Geprüfte B-Ware wird über Zustand umbuchen wieder Neuware; ein Kanal-Angebot mit Zustand liest genau dessen Bestand. Auch die Verteilung auf Lagerplätze gilt je Zustand: Auf einen Platz lässt sich B-Ware nur verorten, soweit B-Ware-Bestand noch nicht verortet ist (beim Einlagern den Zustand mit angeben).
Einlagerliste drucken. Auf der Detailseite eines Lagers druckt Einlagerliste drucken den noch nicht verorteten Bestand je Artikel samt erstem Platzvorschlag und einer Spalte für den tatsächlich gewählten Platz — das Arbeitspapier für die Einlagerung ohne Scanner. Gebucht wird weiterhin der Platz, der wirklich belegt wurde.
Bestandswert sehen. Die Lagerübersicht zeigt je Lager den Bestand in Stück und den Lagerwert in Buchwährung. Wie der Wert entsteht, entscheidet die Bestandsbewertung des Lagers: Bei Gleitender Durchschnitt ist es je Artikel die Menge mal Ø-Einstand, bei FIFO die Summe der noch offenen Einkaufsschichten (Restmenge mal Einstand der Schicht). Ein gelbes Abzeichen neben dem Wert nennt die Zahl der Artikel ohne bekannten Einstandspreis — sie zählen nicht mit, der Wert ist dann eine Untergrenze, keine vollständige Summe. Im Reiter Bestand des Lagers stehen dieselben Zahlen als Kacheln (Bestandswert dieses Lagers, Ohne Einstandspreis) und darunter je Zeile der Einstand nach dem Verfahren dieses Lagers (Spalte Ø-Einstand, im FIFO-Lager der gewichtete Einstand der offenen Schichten); „–" heißt unbekannt, nicht 0,00 €. Der Schalter Nur ohne Einstandspreis zeigt genau die Artikel, die die Lücke ausmachen — dort fehlt ein Einkaufspreis bzw. ein Zugang mit Preis. Die Kacheln gelten immer für das ganze Lager, auch wenn die Liste gefiltert ist; ein Nullbestand ist keine Lücke.
Felder im Detail
Marke (brandId) des Lagers: Listen und Auswahlfelder zeigen es nur in dieser Marke, leer = für alle Marken; der Bestand erbt die Marke. Beim Empfang einer Umlagerung (receivedItems) lässt sich die tatsächlich angekommene Menge je Artikel angeben; ohne Angabe gilt alles wie versandt, eine Differenz bleibt als Fehlmenge sichtbar.
Die Spalte Was es bewirkt beantwortet, was sich im System ändert — nicht, wie das Feld heißt. Der graue Name dahinter ist das Feld der API: unter ihm läuft dasselbe über Automation, Import und KI-Werkzeuge.
Lager anlegen und bearbeiten
| Feld | Pflicht | Werte / Format | Was es bewirkt |
|---|---|---|---|
Kürzel code | ja | Text, max. 30 Zeichen | Die Kennung des Lagers in Buchungen, Etiketten und Auswertungen. Nicht mehr ändern, sobald Bestand darauf liegt. |
Name name | ja | Text, max. 100 Zeichen | Wie das Lager in Auswahl und Übersicht heißt. |
Lagerart type | nein | eigenes Lager (Vorgabe), Konsignationslager oder Dienstleister-Lager | Wem das Lager gehört und wer darin bucht. Ein Konsignationslager hält unsere Ware beim Kunden: Die Einlagerung ist eine Umlagerung ohne Erlös, berechnet wird erst der Verbrauch. Ein Dienstleister-Lager hält unsere Ware in einem fremden Betrieb: Dort wird für uns kommissioniert, und der Bestand kommt als Meldung des Dienstleisters herein, nicht aus unserer Buchung. |
Kunde des Konsignationslagers partnerCustomerId | bei Konsignation | bestehender Kunde | Bei wem das Lager steht. Ohne ihn wüsste die Verbrauchsmeldung nicht, wem sie berechnet wird. |
Betreibender Dienstleister partnerSupplierId | nein | bestehender Lieferant | Wer das Dienstleister-Lager betreibt. Freiwillig: Was ein solches Lager ausmacht, sind seine Meldungen, nicht ein Stammsatz. |
Kennung beim Dienstleister externalCode | nein | Text, max. 60 Zeichen | Unter welcher Kennung der Dienstleister dieses Lager führt. Er kennt uns unter seiner Nummer, nicht unter unserem Kürzel — ohne sie lassen sich seine Meldungen nicht zuordnen. |
Fulfillment-Netzwerk fulfillmentNetwork | nein | keines (Vorgabe) oder JTL-Fulfillment-Netzwerk (jtl_ffn); nur am Dienstleister-Lager mit Kennung | Ob Octibiz Artikel, Aufträge, Versand und Bestand selbst mit dem Netzwerk austauscht. Die Kennung beim Dienstleister ist dann die Lager-Kennung im Netzwerk. Ohne Eintrag kommen die Meldungen von Hand, als Datei oder über einen Ablauf. Wechselt die Lagerart, fällt die Anbindung weg. |
Standard isDefault | nein | Ja/Nein | Welches Lager gewählt wird, wenn nichts anderes angegeben ist. Es gibt genau eines; die Auszeichnung wandert. |
Priorität priority | nein | Zahl | In welcher Reihenfolge Lager für Reservierung und Versand herangezogen werden, wenn kein Lager vorgegeben ist. Höhere Zahl heißt früher; das Standard-Lager geht immer vor. Bei der Lagerwahl nach Nähe entscheidet nur noch ein Gleichstand der Entfernung. |
Breitengrad latitude | nein | Dezimalgrad −90 bis 90, nur zusammen mit dem Längengrad | Wo das Lager liegt — Grundlage der Lagerwahl nach Nähe. Ohne Koordinaten nimmt das Lager daran nicht teil und steht hinter den Lagern mit Koordinaten. |
Längengrad longitude | nein | Dezimalgrad −180 bis 180, nur zusammen mit dem Breitengrad | Gegenstück zum Breitengrad. Eine halbe Angabe wird abgewiesen — ein Breitengrad allein ist kein Ort. |
Bewertungsverfahren valuationMethod | nein | FIFO oder Durchschnitt | Wie der Bestandswert gerechnet wird. FIFO bewertet nach Zugangsreihenfolge, Durchschnitt mit dem gleitenden Mittel. Das Verfahren nachträglich zu wechseln ändert den ausgewiesenen Lagerwert — es ist eine buchhalterische Entscheidung, keine Einstellung. |
Aktiv active | nein | Ja/Nein | Aus heißt: keine neuen Buchungen. Vorhandener Bestand bleibt sichtbar und muss erst umgelagert werden. |
Umlagerung
| Feld | Pflicht | Werte / Format | Was es bewirkt |
|---|---|---|---|
Von Lager fromWarehouseUlid | ja | bestehendes Lager | Woher die Ware kommt. |
Nach Lager toWarehouseUlid | ja | bestehendes Lager | Wohin sie geht. |
Positionen items | ja | Artikel mit Menge | Was umgelagert wird. Mehr als vorhanden lässt sich nicht buchen. |
Bemerkung note | nein | Text | Warum umgelagert wird. |
Eine Umlagerung ist zweistufig: Der Abgang wird gebucht, die Ware gilt als unterwegs, und erst der Zugang schreibt sie dem Ziellager gut. Dazwischen ist sie nirgends verfügbar — das ist gewollt und bildet die Wirklichkeit ab, statt Bestand zu verdoppeln.
Nachschub-Regel
| Feld | Pflicht | Werte / Format | Was es bewirkt |
|---|---|---|---|
Artikel productId | ja | lagergeführter Artikel | Welcher Artikel überwacht wird. |
Minimum minQty | ja | ganze Zahl | Fällt der verfügbare Bestand darunter, entsteht ein Vorschlag. |
Maximum maxQty | ja | ganze Zahl, mindestens das Minimum | Bis wohin aufgefüllt wird. |
Quell-Lager sourceWarehouseId | nein | anderes Lager | Woher umgelagert wird; leer heißt Nachbestellung. |
Zielplatz targetBinId | nein | Lagerplatz des Lagers | Mit Platz überwacht die Regel diesen Greifplatz und schlägt Nachschub aus der Reserve vor; ohne Platz gilt sie für das ganze Lager. |
Quellplatz sourceBinId | nein | Reserveplatz des Lagers | Fester Reserveplatz für den Nachschub; leer heißt der mengenstärkste Reserveplatz. |
Zustand condition | nein | Neuware (Vorgabe), B-Ware/gebraucht, geprüft wiederaufbereitet, beschädigt | Welchen Bestand die Regel überwacht. B-Ware deckt kein Neuware-Minimum; je Zustand gibt es eine eigene Regel. |
In der Registerkarte Nachschub-Regeln steht der Zustand jeder Regel in einer eigenen Spalte; im Dialog wählen Sie ihn beim Anlegen und beim Ändern (Vorgabe Neuware).
Nur über Schnittstelle und Automation
Diese Felder trägt keine Maske; sie lassen sich über die Schnittstelle, einen Import oder eine Automation setzen.
| Feld | Werte / Format | Was es bewirkt |
|---|---|---|
singleProductBins | Ja/Nein (Vorgabe: nein) | Sortenreine Einlagerung: auf einem Platz liegt höchstens ein Artikel. Eine Verortung auf ein Fach mit fremdem Artikel wird abgewiesen. Wer sortenrein lagert, greift blind — ein zweiter Artikel im Fach wird zum unbemerkten Fehlgriff. Aus heißt: Mischplätze sind erlaubt. |
putawayTargetRequired | Ja/Nein (Vorgabe: nein) | Pflicht-Zielplatz: ein Zugang ohne Platzangabe wird abgewiesen. Unverortete Menge ist Ware, die das Buch kennt und niemand findet. Aus heißt: unverortete Menge bleibt erlaubt. |
autoPutawayToDefaultBin | Ja/Nein (Vorgabe: nein) | Zugänge ohne Platzangabe landen auf dem Vorgabeplatz des Artikels, statt unverortet zu bleiben. Ohne gepflegten Vorgabeplatz ändert sich nichts. |
putawayStrategy | freier Platz, Name auf-/absteigend, Sortierung auf-/absteigend (Vorgabe: Sortierung aufsteigend) | Reihenfolge, in der freie Plätze beim Einlagern vorgeschlagen werden. Freier Platz füllt Lücken, die Namensstrategien laufen den Gang systematisch ab. Steht bewusst hier statt im Anlegen-Dialog: es ist einer von vier Einlagerungs-Schaltern, und die drei darüber gehören ebenso wenig in eine Maske, in der man ein Lager erst anlegt. |
address | Anschrift als strukturierte Angabe (Straße, PLZ, Ort, Land) | Wo das Lager liegt. Wird als Lieferanschrift für Bestellungen vorgeschlagen. |
clearCoordinates | Ja | Entfernt Breiten- und Längengrad des Lagers; es nimmt dann nicht mehr an der Lagerwahl nach Nähe teil. In der Maske genügt es, beide Felder zu leeren. |
Einstellungen & Rechte
- Modul
module.warehouses. warehouses.warehouse.view/.manage,warehouses.stock.view/.manage,
warehouses.transfer.manage.
- Bestandswert: Spalte Lagerwert der Übersicht mit
warehouses.warehouse.manage, Kacheln und
Einstand im Reiter Bestand mit warehouses.stock.view; Schnittstelle GET /api/v1/warehouses/{ulid}/stock-value (Filter onlyUnvalued) und die Lagerliste mit withTotals=1.
- Lagerwahl nach Nähe: Schalter
warehouses.allocation.proximity(Vorgabe aus) unter
Lagerwahl nach Nähe auf der Lagerseite, mit platform.settings.manage. Der Geokodierer ist eine Integration vom Typ geocoder mit der Adresse url eines Dienstes mit Nominatim-Schnittstelle (empfohlen: selbst betrieben); ein Dienst mit Konto bekommt seinen Schlüssel als api_key (verschlüsselt abgelegt) und bei Bedarf den Parameternamen api_key_param (Vorgabe key). Abschalten = Integration auf inaktiv. Die Empfänger-Anschrift verlässt das System nur zu diesem Dienst; Treffer merkt sich Octibiz 30 Tage.
- JTL-Fulfillment-Netzwerk: Integration vom Typ
jtl_ffn(markenübergreifend). Einstellungen:
environment (sandbox als Vorgabe oder production), optional base_url, token_url (Vorgabe https://oauth2.api.jtl-software.com/token), scope (Vorgabe ffn.merchant.read ffn.merchant.write) und shipping_type (Versandart der Aufträge, Vorgabe Standard). Geheimnisse (verschlüsselt): client_id, client_secret und das Erneuerungs-Token refresh_token aus der Freigabe im JTL-Konto; ein neu ausgegebenes Erneuerungs-Token legt Octibiz selbst ab. Die Verbindungsprüfung tauscht nur das Token. Abgleich auf Zuruf mit warehouses.fulfillment.manage (POST /api/v1/warehouses/fulfillment-network-sync), sonst alle 15 Minuten. Abschalten = Integration auf inaktiv oder Anbindung am Lager entfernen.
- Der Gesamtbestand steht im Produktkatalog — hier steht seine Verteilung.
- Der Einkauf löst keine Umlagerung aus. Zeilen aus einem anderen Lager werden dort abgewiesen,
siehe Einkaufslisten.
FAQ & Fehlerbilder
Der Bestand im Lager lässt sich nicht ändern. So gewollt — er ist nur lesend. Buchen Sie über eine Umlagerung oder den Weg des jeweiligen Moduls.
Nach dem Versenden fehlt die Ware überall. Sie ist unterwegs. Erst das Empfangen bucht sie im Ziel zu.
Es entsteht kein Nachschub-Vorschlag. Prüfen Sie, ob für Lager und Produkt eine Regel existiert und ob der verfügbare Bestand wirklich unter Min liegt.
Der Abgleich mit dem Fulfiller meldet „nichts abgefragt". Es fehlt der Zugang (Integration jtl_ffn aktiv mit Client-ID, Client-Secret und Erneuerungs-Token) oder ein aktives Dienstleister-Lager mit Kennung und Fulfillment-Netzwerk. Scheitert die Anmeldung, steht das in der Verbindungsprüfung der Integration — dann das Erneuerungs-Token im JTL-Konto neu ausstellen.
Die Lagerwahl nach Nähe greift nicht. Prüfen Sie den Schalter Nächstes Lager zuerst, die Koordinaten der Lager, ob der Geokodierer aktiv ist (seine Verbindungsprüfung unter Einstellungen → Integrationen) und ob der Auftrag eine Anschrift mit PLZ oder Ort trägt. Fehlt etwas davon, gilt bewusst die Regel nach Priorität und Bestand.
Zwei Regeln für dasselbe Produkt. Gibt es nicht — je Lager und Produkt ist genau eine Regel möglich.
Ein Artikel steht zweimal in der Bestandsliste. Er liegt in zwei Zuständen vor, zum Beispiel als Neuware und als B-Ware. Die Spalte Zustand zeigt, welche Zeile welche ist; mit dem Filter Zustand sehen Sie nur einen davon.
Der Zustand einer eingelagerten Retourenposition lässt sich nicht ändern. So gewollt: Die Ware steht bereits im Bestand des alten Zustands. Stellen Sie erst die Verwendung um (Ware geht wieder aus dem Lager), ändern Sie dann den Zustand und lagern Sie neu ein.