Stock Addressing · Odoo 19.0
What the module guarantees and why
Addressing makes a few promises that hold whatever the storekeeper, the scanner, the till or the nightly job does. This page explains what is guaranteed, what it looks like in the warehouse, and why it was designed this way.
Stock tells the truth
Moves never create phantom stock
With “Block Negative Stock” on, nobody can move more out of a bin than it holds and push a place that was not negative below zero. Without this rule the scanner would validate the scanned bin even when the item was actually lying next door: one bin would go negative, and the real one would keep an extra unit nobody can see.
A bin that was already negative does not block work: you can still take the item from where it really is. Sales and customer deliveries are not stopped either — their negative stays a signal to check, not an error at the till.
Put-away always ends in a bin
Stock that is put away lands on an address: a bin or a section of the forward area, never “Without an Address”, a whole zone or a rack. If a storekeeper scans a zone label instead of a bin, the scanner rejects it straight away. Otherwise the item would be in stock on paper, but nobody would know which shelf to look on.
Every unit can be found
Everything that has no exact address is shown as “Without an Address” — on the “Rack Map” and on the warehouse board, with the same number in both places. Nothing slips between reports, and you always see how much stock is still waiting for its place.
Another document’s reservation is not taken
A move inside the warehouse never carries stock reserved for another document to a place that document cannot take it from. For example, an item set aside for a customer order will not be moved into the hand-over basket. When a move needs more than the free stock, it first takes from a prepared put-away, not from someone else’s order — otherwise tomorrow’s customer delivery would be the first to suffer.
Home bins
One home bin per product — and stock does not spread
The warehouse remembers where a person put a product and suggests the same bin next time. There is only one home bin per product and warehouse, even when two documents are validated at the same moment. With “Keep one home” the home bin changes only once the old one is empty, so one product’s stock does not drift across two places.
Rules you created by hand are never changed by the module. Stock counts teach nothing: an extra unit found during a count is not a decision to keep the product there.
Learning never stops a validation
If remembering a bin fails for any reason, the document is still validated. The suggestion is a help, and it must never get in the way of the warehouse’s main work.
Night work
The night reconcile fixes only what is unambiguous
The nightly reconcile of forward-area negatives moves stock only when exactly one bin holds the product and it is nowhere else. Anything ambiguous — several bins, stock in the basket or “Without an Address”, an unfinished transfer — goes to a review list for the responsible person. Guessing was rejected on purpose: settling from the wrong bin would not remove the error, only move it elsewhere.
One problem product does not block the others, and a night missed because the server was down is caught up in the morning.
Setup
The setup wizard shows changes in advance and breaks nothing
The setup wizard names every change before you press “Apply”, and running it again duplicates nothing. A place holding stock or an open transfer is never archived or replaced: the wizard stops and names it before anything is written.
A warehouse without addressing switched on works and looks exactly like standard Odoo.
How this is checked
Every guarantee on this page has automated tests that check it. On top of that, the tests play through random working days of a warehouse — receipts, sales, returns, counts, the night reconcile, in different time zones — and after each step confirm that stock and reservations across the whole warehouse are still correct.