Inventory
What it's for
Inventory is what you have, where it is, and what needs ordering. It covers warehouse shelves and van stock alike, because a part on a truck is stock too — it is just stock that moves.
Reach it from Materials & Purchasing → Inventory in the sidebar, at
/inventory. Cylinders have their own view at
Cylinders.
Tabs
- Parts — the catalogue of stocked items.
- Cylinders — refrigerant cylinders, tracked individually by serial.
Panels and controls
The list
- Search covers the list — "Search inventory…".
- Filters, each with a count: All, Low, Out, Trucks, and On order. Low and Out are the working views; Trucks answers "who has it" when the warehouse shelf is empty.
- Columns: Part · Code, Category, Stock level, Avail, On hand, Reorder pt, Avg cost, and Actions. Avail is what you can promise; On hand is what is physically there — the gap is what is already committed to jobs.
Bulk actions
Adjust stock, Transfer, Set reorder pt, and Create PO for the ticked items. Creating purchase orders straight from the low list is the loop this screen is built around.
Locations
Create location adds a warehouse or a van. A van location can be assigned to a technician; a warehouse cannot — "Only van locations can be assigned to a technician." One location is the default warehouse, and it cannot be archived while it holds that role.
Restock requests
Technicians can ask for stock; requests show Item, Destination, Requested, Fulfilled, Remaining, Warehouse, and Status. Fulfill ships it, Queue request raises one. No pending restock requests is the empty state.
Archiving
Nothing with stock in it can be archived — "This item still has stock on hand — transfer or zero it out before archiving." and "This location still has stock — transfer it out before archiving." That is deliberate: archiving stock you still physically own would make the ledger lie.
What it accepts
| Field | Format | Required | Rule |
|---|---|---|---|
| Name | Free text — "e.g. 24V Transformer" | Yes | "Name is required."; "Name is too long." |
| Category | Free text — "e.g. Refrigerant" | No | "Category is too long (100 characters max)." |
| Reorder point / threshold | A whole number, 0 or more | No | "Reorder point must be a whole number ≥ 0." |
| Unit cost | Cents, 0 or more | No | "Unit cost must be 0 or greater." |
| Track individual units | On or off | No | Turns on serial-level tracking |
| Preferred vendor | Pick a vendor | No | "Vendor not found." |
| Vendor part # | Free text | No | |
| Lead time | Days, 0 or more | No | "Lead time must be 0 or greater." |
| Pricebook item | Pick an item | No | One inventory item per catalogue entry — "Another inventory item is already linked to that pricebook entry." |
| Location name | Free text — "e.g. Main Warehouse" | Yes | "Location is required." |
| Location type | Warehouse or van | Yes | |
| Assigned technician | Pick a technician | Vans only | "Only van locations can be assigned to a technician." |
| Adjustment | A nonzero whole number | Yes, to adjust | "Enter a nonzero whole-number adjustment." |
| From / To location | Pick locations | Yes, to transfer | Must both be set and must differ; "Not enough stock at the source location." |
| Quantity | A whole number greater than 0 | Yes, to transfer | |
| Target quantity | A whole number | No | "Target quantity must be greater than or equal to minimum quantity." |
How to configure it
- Inventory settings decide how stock is valued and whether reorder alerts are raised automatically.
- Price book settings supply the catalogue items an inventory item links to.
- Purchasing settings decide what happens when Create PO is used from a low-stock row.
- Branches decide which locations belong where.
Who can see it
This screen sits behind the Inventory area.
Owners and office managers can open it. Dispatchers and technicians cannot — a technician sees their own van stock in the field app and raises restock requests from there. The gate is checked on the server, not just hidden in the sidebar, so a direct link does not get around it.
The full role matrix is on Roles & permissions.