Stop an item safely, create a linked successor, or correct a measurement without rewriting history.
Why items are not renamed into new products
Every purchase order, receipt, count, recipe explosion and ledger movement points to an item identity. Turning "Gin 750 ml" into "Gin 700 ml" by editing its name would make old paperwork appear to have bought the new bottle. Bohari therefore keeps the old item and creates a linked successor.
On Inventory → Items, the status beside each row explains what may happen next:
- Active - can enter purchasing and recipes.
- Discontinuing - no new purchasing or recipes; existing stock may still be counted, issued, transferred or written off.
- Pending - a successor waiting for approval of a measurement correction. It appears only when retired and pending items are shown.
- Retired - stays in history and is absent from normal pickers.
The old Active checkbox no longer exists. Use the named lifecycle actions so the server can check stock and live references before changing availability.
Replacing an item
Press the arrow button on an active item and choose the reason for replacement.
Choose A genuinely new product or pack when old and new stock must remain separate - for example, a supplier changes brands or introduces a 700 ml bottle while 750 ml bottles remain on the shelf. The successor becomes active immediately and the old item starts running down. You may select recipe lines to move now. Enter new supplier pack sizes and prices on the successor; Bohari deliberately never copies them.
The replacement stays in Item replacements requiring attention. Press Finish run-down after the old item has zero stock, no active recipes and no open requisition, purchase order, count, waste approval, in-transit transfer or bottle sign-out. If any remain, the refusal names them.
Correcting a frozen measurement
Choose The old item was measured incorrectly when the product is the same but its stored unit or factor was wrong. Define the successor's correct buy, stock and usage units, then enter New counted units per old counted unit. If one old stored unit really represents two new units, enter 2. If ten old grams become one new decagram, enter 0.1.
Every active recipe using the old item must move in the same correction. Its quantity factor means "new usage quantity per old usage quantity"; leave it at 1 when both use grams or both use millilitres.
Submission moves no stock. It creates a pending successor and an approval request. A different user with approve_item_replacement (Admin by default) must decide it. The requester cannot approve or reject their own request.
On approval, Bohari performs one transaction:
- It checks that no blocking document appeared and that the reviewed recipes have not changed.
- At every location, it removes the old balance and adds the converted successor balance with paired movements linked to the replacement.
- It divides unit cost by the conversion factor, preserving the total stock value.
- It moves the recipe references, closes old supplier prices, retires the old item and activates the successor.
If any part fails, none of it posts. Negative old balances must be corrected through a stocktake first. Rejecting instead retires the unused pending successor and leaves the old item active.
Discontinue, retire and restore
Use Discontinue when no successor is needed but new buying should stop. Use Retire only after stock and live references reach zero. A standalone discontinued or retired item can be restored; an item participating in a replacement must be managed through that replacement so its lineage cannot split.
Historical documents and ledger movements are never moved to the successor. That separation is the point: new work uses the new identity, while old records continue to say exactly what happened.