Skip to main content
All quotes & invoices articles

Parts inventory + tech parts picker

Maintain your parts catalog (cost + price + on-hand). When techs log a part used at a job, it auto-adds to the invoice and decrements stock.

Updated 2026-05-01

Parts inventory + the tech-app parts picker turn 'I think I used 3 of those' into 'I tap, I'm done, the invoice updates.' One catalog, one workflow, used at three points: stocking, billing, and reordering.

Setting up the catalog

  1. 1
    Go to /portal/parts

    Add part — name, SKU (optional), cost (what you pay), price (what you charge), unit (each / foot / pound / etc.). Set on-hand + 'reorder when ≤ X' if you want stock tracking + alerts. Leave both blank for consumables you don't track.

  2. 2
    Or import a CSV

    Top-right, 'Import CSV.' Header names are flexible — name (required), sku, cost, price, stock, min_stock, category, unit, supplier. Existing parts (matched by SKU) get updated; new ones added. Cost/price accept '12.50' or '$12.50' — the importer strips dollar signs + commas.

What the tech sees

On any job's detail page (/portal/tech/[id]), there's a 'Parts used' section. Tap 'Add part' → search + tap, picker shows common-for-this-service parts at the top, full catalog after. Quantity defaults to 1 (or whatever you set as default for that service); they can override.

What happens when a part gets logged

  • parts_used_on_appointment row created — snapshot of cost + price at use-time (so later catalog edits don't shift historical job profitability).
  • Catalog stock decrements (when tracked).
  • If there's a draft invoice for this appointment, a line item gets added at your set price — description, quantity, taxable flag all carried from the catalog. Invoice subtotal/tax/total recompute.
  • Per-job profitability (Phase 2B) updates — parts cost flows into the cost block.
Common parts for a service type

Plyrium can show the most-likely parts FIRST in the picker so techs don't scroll through 200 SKUs to find the 1/2 in coupling they always use on Standard Service Calls. Linking parts to service types is forward-compat — the data model supports it; the UI to manage it ships in a follow-up release.

Reorder alerts

Daily cron at 8am Mountain. For every part where current_stock ≤ min_stock, you get a single consolidated email — one email per shop, listing every part that needs ordering, sorted by how far below threshold each is. Already-alerted parts dedup for 7 days so we don't spam you about the same 12 SKUs every day; restocking a part clears the dedup so the next dip alerts fresh.

Restocking

When an order arrives: open /portal/parts, click the part, ⋯ → 'Mark restocked.' Enter quantity received. We bump current_stock + clear the alert dedup + log the restock to your activity feed.

Reversing a part-use

Tech added the wrong part by accident? Open the job detail; in 'Parts used' tap the trash icon next to the part. Plyrium deletes the parts_used row, removes the linked invoice line item, restocks the part, and recomputes invoice totals. Atomic — no half-done state.

Untrackedcurrent_stock blank — Plyrium doesn't decrement or alert. Right for consumables (electrical tape, plumbers putty) where you'd rather just buy more when you notice you're out.
Trackedcurrent_stock + min_stock both set — alerts fire when on-hand dips below threshold.
Stock-onlycurrent_stock set but min_stock blank — counts down as you use, but no reorder alerts. Right for parts you want to track usage on without committing to a reorder threshold.
Negative stock is allowed

If you log a part you didn't have a restock recorded for, current_stock goes negative. Plyrium doesn't block this — sometimes you grab a part from a different truck or pick one up from the supplier on the way and don't update inventory. The next 'Mark restocked' brings the count back to honest.

Ready to try this in the actual product?

14-day free trial, no card charged for 14 days, cancel anytime.

More quotes & invoices articles