ZuloOne
English
Sign in
Menu

🏬 Store on an order and cross-store sourcing

Updated

A sales order names the store it ships from, and that store follows the order through its realization. When a company keeps several warehouses, a flag lets a short order pull the missing goods in from the neighbours before it is confirmed.

← Business wiki

How the process works#

Store and ship-from location are one value written twice. The order carries both: Store names the warehouse, Ship-from location names the cell inside it. Whichever the user touches leads the other — pick a store and its picking cell is filled in, pick a cell and the store is read from its zone. On save the cell wins and rewrites the store, because movements are written by cell and a document must not claim what it does not do. An order whose store has no cell at all keeps the store alone, and that store is then the only statement of where the goods ship from.

The store travels to the SalesRealization created on Approve order, next to the cell. Everything below the realization — put-away, pick tasks, transfers — is addressed by cell, so the store needs no further copying: the cell already names it.

Stock on hand is written into every line on every save, not on field change. A line that came from import or from the phone never passes a field event, and the colour in the journal has to be the same whichever way the line arrived. The figure is free stock — Stock minus ReservedStock — over every cell of the store, not of the single named cell: the goods are rarely in the exact cell the order points at. The line is then marked Short or Available, and the grid paints it red or green by that mark.

Cross-store sourcing is off by default. With it on, confirming an order — and posting it — first looks for lines the order's own store cannot cover, and brings the shortfall in from the other stores by posted transfers, in the order of Write-off priority. Only then does the usual confirmation run, so the order sees the goods as its own.

Settings#

Source orders from other stores#

Where Inventory → Settings → Inventory settings, field Source orders from other stores
Object InventorySettings, field CrossStoreSourcing
Value Meaning What changes
empty off, as an untouched tenant The order sees only its own store. A line short on that store is Short and red even when another warehouse is full. Confirmation refuses the order unless Allow backorder is on.
off the same, said out loud —
on the company treats its warehouses as one pool Before confirmation and before posting, the order creates posted StockTransfer documents that carry the shortfall into its own store. The stock figure in the line counts every store, so a line is red only when the company as a whole is short.

Default: empty, which is off. A tenant that never opens this card behaves exactly as before: one order, one store.

The flag is a mode, not a number, so four questions:

  • Switched on: automatic transfers between stores; the line figure widens to all stores.
  • Switched off: nothing stops working. The transfers already posted stay posted — they are ordinary warehouse movements and are not rolled back.
  • Becomes required: nothing. Write-off priority on Store stays optional; stores without it are simply asked last.
  • Documents already entered: untouched. The line figures are rewritten the next time each order is saved, not retroactively.

Write-off priority#

Where Inventory → Dictionaries → Stores, field Write-off priority
Object Store, field WriteOffOrder
Value Meaning What changes
1, 2, 3… the queue of donors The store with the lowest number gives its goods away first.
empty or 0 last in the queue A store created without a thought does not silently become donor number one.
equal numbers the tie is broken by store name Two stores with 2 are asked in a stable order, not at random.

Default: empty — last. The field does nothing while cross-store sourcing is off.

Example. Stores Main 0, South 2, North 1. The queue of donors for an order shipping from Main is North, then South. Set South to 1 as well and the queue becomes North, South — by name, with the same priority.

Store on the order#

Where Sales → Documents → Sales orders, field Store on the order card
Object SalesOrder, field Store
Value Meaning What changes
a store the order ships from it Ship-from location is filled with the picking cell of that store, or with its first storage cell when there is no picking cell. Availability, the line figure and sourcing are all counted against this store.
empty, cell filled the cell decides The store is read from the cell's zone on save.
empty, cell empty nothing is known Lines get stock 0 and no mark; nothing is painted.

Default: empty. The field is not required — an order typed as before, by cell alone, still works.

Example with numbers#

Item Paint 5 L. Cross-store sourcing is on. Stores: Main (priority 0), North (1), South (2). Free stock: Main 5, North 3, South 2. An order on Main asks for 10.

Step Input Result
1. Save the order line: 10 pcs Stock on hand = 10 (5 + 3 + 2), mark Available, the row is green
2. Approve order — Two transfers are posted: North → Main for 3, South → Main for 2
3. After the transfers — Main has 10, North 0, South 0; the order reserves its 10 and the realization is created
4. Press Approve order again — No third transfer. The earlier haul is found by SourceOrder and the run stops

The same order with the flag off: step 1 writes Stock on hand = 5 and mark Short, the row is red, and step 2 refuses to confirm unless Allow backorder is on.

The boundary that catches people. Order 12 pieces instead of 10. The company has 10 in total, so the shortfall of 7 cannot be covered, and nothing is carried at all — North and South keep their goods. Half a delivery would leave the paint standing in the wrong warehouse and the order would still not confirm. A line is sourced whole or not sourced.

Second boundary: a line of 4 on Main needs nothing, and a line of 10 on the same order needs 5. The first line is left alone; sourcing works line by line, not document by document.

What is posted#

Document Transition Register Sign Ledger
StockTransfer created by sourcing Draft → Posted, by the command, in one run Stock − on the donor cell, + on the target cell in the order's store none
SalesOrder Submitted → Confirmed ReservedStock + on the order's cell none

Writing Store, Stock on hand or Write-off priority posts nothing. They are stored values on the document and the dictionary; the quantities live in Stock and ReservedStock.

The transfers carry SourceOrder = the order. That field is what tells the two kinds of automatic transfer apart: sourcing brings goods in from another store, consolidation gathers them onto the picking cell of the same store, and both hang off the same order. Without the field the second would mistake the first for work already done.

A transfer created this way is a plain StockTransfer. It is visible in the warehouse journal, it can be read, and it is not reverted when the order is cancelled — the goods really did move.

Boundaries and edge cases#

  • Sourcing runs on Approve order and again on posting. The second run finds its own earlier transfers and does nothing; it is there for an order posted without the command.
  • Only free stock is taken: a donor cell holding another order's reservation is not emptied under it.
  • The target cell in the order's store is chosen by the item's Default storage place when that cell belongs to this store, then by any storage cell of the store, then by the order's own ship-from cell.
  • All stores of the tenant are donors, including stores of another division. There is no "group of warehouses that share stock".
  • The line figure and the colour are a snapshot of the last save. Someone else's sale a minute later does not repaint an open order.
  • An order with no cell and no store writes zero into every line. That is not a shortage report; it means nobody said where the goods ship from.
  • The transfers are posted inside the confirm run, so a failure of one transfer stops the confirmation before the order is reserved.

What's not there yet#

  • There is no reverse flow: goods pulled into a store and then not sold stay there. Nothing carries them back on cancellation.
  • Sourcing does not look at purchase orders on the way. It moves what exists today; Available to promise on the order is a separate figure.
  • There is no delivery time or cost between stores. A warehouse two days away is as good a donor as the one next door, if its priority says so.
  • There is no per-store storage place on an item: an item has one Default storage place, as in 1C. The other cells it is planned to live in are the tab Storage places, and they do not steer sourcing.
  • The stock column on the order line is free stock, not available-to-promise, and not stock by cell. The breakdown by cell is the report Stock by item and cell.
  • Loading from 1C does not fill Store on historical orders: 1C wrote the warehouse on the line, not on the header, and the loader keeps the cell it chose.

Where next#

Was this page helpful?