Skip to content

One product, more than one warehouse

Stock is kept per warehouse: one row per product and warehouse, with existing stock stamped to Main. Once a second warehouse exists, a movement has to say which building it belongs to, and the location on the movement is what says it.

A product used to have one number. You had 300 of it, and that was the answer. Then the company opened a second building, and the question changed. Three hundred where? The old answer is still true and completely useless: 300 across two buildings tells the picker nothing, the promise to the customer nothing, and the count at the end of the month nothing.

One row per product and warehouse

Stock is now kept per warehouse: one row per product and warehouse. A product in two buildings has two rows, each with its own number. A product in one building still has one row. The change is in the grain of the record, not in the shape of the screen.

Existing stock does not move when the second warehouse appears. Every stock row and every movement you already had is stamped to Main, the first warehouse. The second warehouse starts empty, and its rows appear as stock arrives there. The history still replays to the same totals, because the stamp says where the old stock always was: in the only building there was.

A purchase order stores a destination warehouse, so inbound stock knows which building it belongs to before it arrives. Orders that already existed take the company’s default warehouse. Floor users are assigned to Main.

The order names its warehouse

A sales order has a required warehouse, “Ships from”. Availability and shortage are computed against that warehouse’s row, not against the company total. An order that ships from the second building can only promise what the second building has.

When stock is held for an order, the hold names the warehouse. A draft order, or a confirmed order with nothing reserved yet, can change warehouse. Once stock is held for the order, the warehouse can no longer be changed. Changing the warehouse reprices the lines: a line with a typed price keeps it, the rest are repriced.

Put numbers on it. A fictional order for 150 pieces of SKU WDG-2070 ships from the second building, which holds 100. Main holds 200. Availability against the second building is short 50. If the order is changed to ship from Main before anything is reserved, availability is recomputed against Main, where 200 covers the 150.

Why a location is required

Once a second warehouse exists, a movement has to say which building it belongs to. The location on the movement is what says it. Every location belongs to exactly one warehouse, so a movement that names a location names a warehouse with it. The writer takes the warehouse from the location, and the stock lands on that warehouse’s row.

The rule bites on the way in. Adding available stock with no location is refused once a second warehouse exists, because an addition with no location has no warehouse to land in. With one warehouse there is only one possible answer, so the system warns and carries on. With two, guessing the building would put stock in a row nobody can defend, so the system refuses instead. The error is the honest answer: tell me where it is.

On the way out, the same logic runs in reverse. A pick names a bin, and the bin sits in one warehouse, so the removal lands on that warehouse’s row. A transfer names two locations, and if they are in different warehouses the transfer is refused: moving stock between warehouses is not in this release, and neither is replenishment across warehouses. Same-building moves still hit one stock row, exactly as before.

The location decides the warehouse

The point is not that locations are paperwork. The location is the warehouse, for stock purposes. A pallet in a bay in the second building is second-building stock because the bay is there. A receipt put away to that bay lands on the second building’s row. A count of that bay counts the second building. Nothing about the product changes; the address carries the meaning.

That is also why a location-less number is dangerous in a two-building company. Stock without a location is stock without a building, and a system that lets it through has to invent a building for it. The refusal is not bureaucracy. It is the system declining to invent a fact.

Put numbers on it. A fictional product, SKU WDG-2070, has 200 pieces in Main and 100 in the second building. The product screen shows two rows, not one number of 300. A pick of 40 from a bin in the second building leaves that row at 60 and Main untouched at 200. A receipt of 50 put away to Main leaves Main at 250 and the second building at 100. No movement touches both rows, because no movement belongs to both buildings. The totals still add up, 300 before and 310 after the receipt, but the per-building numbers are the ones the floor can act on.

One product, two rows, each row true about its own building. The picker walks to the right building. The promise to the customer names the stock that is actually there. And the count at the end of the month counts two buildings instead of one blurry number.

Questions

What happens to my existing stock when a second warehouse is added?
Nothing moves. Every existing stock row and movement is stamped to Main, the first warehouse. The second warehouse starts empty.
Why does adding available stock need a location once a second warehouse exists?
Because an addition with no location has no warehouse to land in. With one warehouse there is only one possible answer, so the system warns. With two, it refuses, because guessing the building would be a lie.
Can stock move between warehouses?
Not in this release. A transfer whose locations are in different warehouses is refused, and replenishment stays inside one warehouse.

Keep reading

See how DockingWare handles this →