On the floor
Scan a pallet, scan a shelf. Built for an RF gun or a phone — the scanner types and presses Enter, so there is no camera permission and no app to install. Open it once on the device and leave it there.
Shelves holding less than nothing
Each of these is a count that was already wrong before
the movement that revealed it. The system records the movement rather than
refusing it, because the goods came off the shelf whether or not anybody
wrote it down — refusing the scan does not put them back, it only declines
to know. Walk the shelf, then
admin.ts stock:count <code> <account> <counted>.
| Product | Where | Short by | Last movement |
|---|
Running low
Fewer days of pickable cover than the business set, at the last fourteen days' ordering rate. Every smart waving run reports these too. Locations is how many shelves still hold any — one means there is no alternate for the next cart.
| Product | Pickable | Per day | Days left | Locations |
|---|
Fast movers at the back
A product in the top fifth of demand whose pickable stock is all beyond the front third of the walk, while a shelf near the door stands empty. The put-away suggestion now offers a fast mover the front first; this is what was shelved before it knew. Move one forward on a quiet afternoon — nothing here moves goods by itself.
| Product | Per day | Orders | Pickable | Where it sits | Empty near the door |
|---|
By building
The same on-hand, per building — each shelf stands in one (db/190), so these add up to the table below to the unit. Promised is not split: an order is picked wherever its goods stand.
| Building | Code | Product | Owner | On hand |
|---|
How many, and how much is spoken for
On hand is what is physically ours, promised or not. Promised is allocated to a consignment and still on the floor — it has not left, and a picker walking the aisle will find it there. Free is what may still be promised to somebody. The three are summed separately rather than subtracted from one another, so that the day a quarantine shelf exists none of them quietly becomes wrong.
One row per owner, since db/090. A warehouse holds many merchants' goods on the same shelves, and a single line adding two of them together is a number that is true of neither. Osoro (ours) is packaging, pallets and anything this business actually bought.
| Code | Product | Owner | On hand | Promised | Free | Last movement |
|---|---|---|---|---|---|---|
| Loading… | ||||||
Where it is
Every account holding a non-zero quantity. An empty shelf is
not news and does not appear. The account's first word is its kind,
and the database refuses one it does not recognise — a mistyped
bins.A1 would otherwise be a location holding real goods that
no total counts, and nothing reconciles a warehouse except a person walking
it.
| Code | Owner | Where | Kind | Quantity | Movements | Last movement |
|---|---|---|---|---|---|---|
| Loading… | ||||||
What crossed the door
In came from a supplier. Out went to a customer,
to damage, or to a counted difference. Damage and shrinkage are accounts
with names rather than a smaller number in a bin, which is the whole reason
stock is kept as a ledger: five fewer on the shelf is silent, and five at
loss.damage is a question somebody can be asked.
| Code | Direction | Where | Units | Last movement |
|---|---|---|---|---|
| Loading… | ||||
What the kinds mean
The first word of every account. Read from the database rather than written into this page, because adding a kind was deliberately made a row and not a migration — consignment stock a merchant owns, goods in transit between hubs, a quarantine cage. Each one that arrives explains itself here without anybody editing this screen.
| Kind | What it is | On hand | Can be promised |
|---|---|---|---|
| Loading… | |||
Expected deliveries
What a merchant told us is coming. Receiving against one is the floor's job — the delivery already says whose goods these are, so nobody needs the merchant list to book them in. What arrived against what was agreed is on every line, and a short delivery stays short in the record after it is closed.
No lines yet. A delivery is what a merchant SAID is coming, line by line — that is what makes a short delivery visible when it arrives.
| Reference | Product | Expected | Had | Short by |
|---|
Book goods in
Goods arriving from a merchant, onto the dock or straight to a shelf. Ownership is asked rather than assumed — in a third-party warehouse a merchant's goods stay theirs, and the difference between holding them and owning them is the difference between a storage fee and a purchase.
Booking in is intake, not stock, and the reason is the merchant. Naming whose goods these are needs the merchant list, and db/098 deliberately took that off the warehouse floor. A stocker moves what is already here; a dispatcher says what arrived and whose it is.
Batches, and what is going off
A product is tracked by batch only when somebody says so —
most goods have no lot number, and a mandatory field would be filled with the
date, or 1, for ever. For one that is tracked, a receipt without
a lot is refused and picking is first expired, first out with
expired stock excluded from what can be promised.
Already expired rows stay on this list, at the top, with a negative
count: stock that went off in July and is still on a shelf is the row
somebody has to act on today.
| Product | Batch | Expires | Days left | Units | Where |
|---|
Tracked by batch
Turning tracking on is not retrospective and cannot be: stock already on the shelves has no batch, and guessing which one a carton received in June belonged to would turn a gap into a false record. Anything standing unbatched has to be counted out and booked back in against a lot before it can be picked for that product.
| Code | Product | Batches | Tracked |
|---|
Move loose goods
Between shelves, or off the dock. Loose only — goods go onto and off a pallet by scanning it, on the handheld, because a typed pallet is a pallet nobody scanned.
Counting is on the handheld, under COUNT. Writing goods off and correcting a recorded act are on Floor.