Reserve stock for an order
Hold a quantity for one order so another order cannot quietly consume it. How reservations are checked, what gets refused, and how to release stock you no longer need to hold.
Promising the same stock twice is one of the easiest ways to lose a customer. A reservation holds a quantity against a specific voucher so nothing else can consume it, and an issue that would break the promise is refused rather than silently allowed.
Say it the way you would out loud: “hold 40 of the blue chairs at the main warehouse for this order.”
What a reservation actually does
Reservations here are hard, not advisory. Three things follow from that:
- Availability is reduced for everyone else. A new reservation is refused if it would exceed available stock, where available means actual quantity minus everything already actively reserved.
- An issue that would breach an active reservation is blocked. A
material_issuethat would eat into reserved quantity does not go through, so the promise survives contact with the rest of the system. - Held stock stays visible. The quantity is not hidden or moved; it is on hand and spoken for.
Reserve a quantity
Ask for it the way you would say it to a colleague:
“Hold 40 blue chairs at the main warehouse for this sales order.”
ERPClaw resolves the item from your loose phrasing and places the hold against that order, for that warehouse, in that quantity. If the warehouse does not have that much free, the reservation is refused at this point rather than accepted and quietly broken later.
That refusal is the feature. A system that accepts every reservation and sorts it out at picking time has moved the problem to the worst possible moment, which is when someone is standing in the aisle.
See what is held
“What stock is currently reserved?”
“How many blue chairs do we actually have free at Main?”
The first question is worth asking before promising a date to a customer, and the second during any investigation that starts with “we should have had enough of these.”
The second is answered from projected stock, where the reserved quantity reads your persisted active reservations. Where none exist, it falls back to open sales-order lines, so the projection is still meaningful before anyone has reserved anything explicitly.
Release a hold
“Release the hold on those chairs, the order was cancelled.”
Releasing returns the quantity to available immediately. Cancelled orders, quotes that went cold, and holds placed against the wrong warehouse all end here.
Reservations are also released for you in the ordinary course of fulfilment: completing a pick list consumes the reservations it created, and cancelling one releases them. See putaway and pick lists for that flow, and item substitutes for what to reach for when the held item is short.
Common questions
Does a reservation move the stock? No. The quantity stays where it is and stays in your on-hand figures. What changes is how much of it anyone else is allowed to consume.
What happens if I try to reserve more than is available? The reservation is refused, and the check uses actual quantity minus active reservations rather than raw on-hand. You find out at the moment you make the promise, not at the moment you break it.
Can I still issue stock that is reserved?
Not while the reservation is active. A material_issue that would breach it is blocked. Release the reservation first if the situation has genuinely changed.
Do reservations expire?
They stay until released or consumed. That is deliberate, because a hold that quietly lapses is worse than no hold at all, but it does mean stale reservations need clearing. list-reservations is the review tool.
How does this relate to pick lists? Submitting a pick list places hard reservations for the quantities on it, completing the pick consumes them and produces a delivery note, and cancelling releases them. The two features are the same mechanism seen from different ends.
Where do I see the effect on planning?
get-projected-qty shows reserved quantity alongside actual, which is the figure to use when deciding whether to reorder.
Reference: the actions behind this page
You never have to type these. They are what ERPClaw runs when you ask, and they are here for anyone calling the API or MCP surface directly, or reading a log.
add-reservation --voucher-type sales_order --item CHAIR-BLUE --warehouse "Main" --qty 40
list-reservations
get-projected-qty --item CHAIR-BLUE --warehouse "Main"
release-reservation --id <reservation-id>