Browse topics

Parts and stock

Keeping a parts list, how retail price comes off cost, and the reserve-then-consume model that stops two orders from promising the same part.

Updated July 25, 2026

Inventory here does two jobs: it saves you re-typing part numbers and prices, and it stops you promising the same alternator to two customers. The second one is where the design decisions are.

A part record

Name, part number and cost are the working minimum. Beyond that a part can carry a SKU, a vendor, a brand, a category, a pricing matrix, and the stock figures: quantity on hand, minimum and maximum.

Minimum quantity is what makes the low-stock filter work. Set it and a part that drops below it is flagged; leave it empty and the part is never reported as low, because you never said what low means.

Retail price comes off cost

If you don't type a retail price, it is calculated from the cost by the part's pricing matrix — and it is recalculated whenever the cost changes. A supplier puts their price up, you update the cost, and the sell price follows the rule you set instead of drifting.

Type a retail price explicitly and it stands.

Note

A part with no matching matrix band sells at cost, with no markup. That is the single most expensive thing that can go wrong here — see pricing matrices for how the bands cover the range.

Categories are shared with services

Warning

Part categories and service sections are one list, not two. Renaming a category renames it everywhere it is used, on parts and on the service sections of your orders alike.

Worth knowing before you reorganise them. It is one list on purpose — Brakes is Brakes whether it names a shelf or a section on a repair order — but it does mean a tidy-up in one place shows up in the other.

Reserving, and why it exists

The unit that matters is not what's on the shelf, it's what's available — on hand minus reserved. That is the number you can still promise.

Add a part to an order and it is reserved straight away. The stock hasn't moved — the part is still on the shelf, still in your on-hand count — but it is spoken for, and it no longer counts as available to anybody else.

  1. Add a part to an order

    Reserved. On hand unchanged, available drops.

  2. Remove the line, or the customer declines the service

    Released. Available goes back up.

  3. Mark the order completed or invoice it

    Consumed. On hand drops, the reservation clears. This is the moment stock actually leaves.

Every one of those movements is written to the part's transaction log with who did it and against which order, alongside your manual adjustments — receipts, returns, corrections, stock counts. The log is the answer to "where did those four go".

One part, one line

Adding the same part twice to the same service bumps the quantity on the line that's already there rather than opening a second identical row. The reservation follows the new quantity.

When there isn't enough

Reserving more than is available is refused, and the message says how many you actually have. A shop that would rather sell first and sort the stock out later can allow negative stock, in which case the reservation goes through and the available figure goes below zero — visibly, not silently.

Auto-reservation is on by default. With it off, parts land on the order without holding stock and you reserve deliberately.

Reserving by hand

The order's sidebar shows what is reserved and what isn't. From there you can reserve a single line, reserve everything on the order at once, or release a line. Use it when a part was added before the stock arrived, or when a job has been sitting long enough that you want to free the parts for something urgent.

Deleting a part

A part with live reservations cannot be deleted — something is depending on it. Release the reservations, or mark the part inactive instead: inactive keeps the history intact and takes it out of the picker.

Troubleshooting

"Available doesn't match what's on the shelf." It isn't meant to. Available is on hand minus reserved. The shelf count is on hand.

"Adding a part failed." Not enough available stock, and negative stock is not allowed for your shop. Receive the stock first, or allow negative stock.

"Stock didn't drop when I added the part." Correct — it was reserved, not consumed. It drops when the order is completed or invoiced.

"The retail price changed by itself." You changed the cost, and the part has no explicit retail price, so the pricing matrix recalculated it.

"A part sold at cost." No matrix band covers its cost. Check the bands.

"I can't delete this part." It is reserved on an open order. Release it, or deactivate the part.

"Renaming a category changed my order sections." Categories are one shared list across parts and service sections.

Was this helpful?