Inventory Management
The inventory system automatically tracks stock levels across estimates, invoices, and jobs. When you add items from your price book, the system manages reservations and deductions.
Inventory is automatically managed when you create estimates and invoices. No manual intervention required - the system reserves stock for estimates and deducts it when invoices are created.
How It Works
The inventory system follows a reservation-based workflow to ensure accurate stock tracking:
1. Estimate Created
Inventory is reserved (put on hold) for the items
2. Invoice Created
Reservations are fulfilled, stock is deducted
3. Stock Updated
Available quantity reflects actual inventory
4. Transaction Logged
Full audit trail of all changes
Stock Level Fields
Each inventory item tracks multiple quantities to support the reservation workflow:
| Field | Description | Example |
|---|---|---|
| quantity | Total stock at location | 100 units |
| availableQuantity | Stock available for new sales | 85 units |
| reservedQuantity | Stock reserved for pending estimates/jobs | 15 units |
| damagedQuantity | Stock marked as damaged | 0 units |
When you view inventory levels, 'Available' shows what can be used for new sales. 'Reserved' shows what's committed to pending estimates or jobs but not yet consumed.
Inventory Actions
Here's how different actions affect your inventory:
| Action | Effect | Stock Level Changes |
|---|---|---|
| Create Estimate | Inventory reserved (put on hold) | reservedQuantity ↑, availableQuantity ↓ |
| Invoice from Estimate | Reservations fulfilled, stock consumed | quantity ↓, reservedQuantity ↓ |
| Direct Invoice | Stock directly deducted | quantity ↓, availableQuantity ↓ |
| Cancel Estimate/Job | Reservations released | reservedQuantity ↓, availableQuantity ↑ |
| Complete Job | Reservations fulfilled | quantity ↓, reservedQuantity ↓ |
Estimate Reservations
When you create an estimate with price book items that have inventory components:
- Automatic Reservation: The system automatically reserves the required inventory quantities
- Expiration: Reservations expire based on the estimate's "Valid Until" date (default 30 days)
- Multiple Options: If your estimate has multiple pricing options, reservations are made for the selected option
- Component-Based: If a price book item has multiple inventory components, each is reserved
What Happens to Reservations
Estimate → Invoice
Reservations are fulfilled and inventory is consumed
Estimate → Job
Reservations transfer to the job
Estimate Cancelled
Reservations are released back to available stock
Invoice Inventory Deduction
Inventory is deducted when invoices are created. The process differs based on how the invoice is created:
Invoice from Estimate
When you create an invoice from an estimate, the existing reservations are fulfilled. This converts 'reserved' inventory to 'consumed' - no double-deduction occurs.
- Existing estimate reservations are marked as 'fulfilled'
- Inventory is deducted from the reserved quantity
- A transaction record is created for audit purposes
- The reservation is linked to the invoice
Direct Invoice (No Estimate)
When you create an invoice directly (without an estimate), inventory is deducted immediately from available stock.
- System identifies price book items with inventory components
- Inventory is deducted directly from available quantity
- A transaction record is created with 'invoice_consumption' type
Smart Invoice Creation
To help avoid duplicate work and ensure proper inventory tracking, the system includes smart estimate detection:
When creating an invoice, if the selected customer has open estimates, the most recent one is automatically loaded. This ensures you don't accidentally create a duplicate invoice or miss using an existing estimate.
How It Works
- Customer Selection: When you select a customer for a new invoice, the system checks for open estimates
- Auto-Load: If estimates exist, the most recent one is automatically selected and its items are loaded
- Alert Shown: An alert notifies you that an estimate was auto-loaded
- User Choice: You can continue with the estimate or dismiss it to create a fresh invoice
Benefits
Accurate Inventory
Using the estimate ensures reservations are properly fulfilled
Using the estimate ensures reservations are properly fulfilled
No Duplicates
Prevents creating multiple invoices for the same work
Prevents creating multiple invoices for the same work
Time Savings
Auto-populates customer info, items, and pricing
Auto-populates customer info, items, and pricing
Transaction History
All inventory changes are recorded in the transaction history for complete audit trails:
Transaction Types:
- invoice_consumption Invoice deduction
- job_consumption Job completion deduction
- transfer Location transfer
- receipt Inventory received
Transaction Details:
- Reference to invoice/job/estimate
- Quantity changed
- Timestamp
- Notes
Best Practices
Do:
- ✅ Create estimates before invoices when possible
- ✅ Use the auto-selected estimate when available
- ✅ Set accurate "Valid Until" dates on estimates
- ✅ Link price book items to inventory for tracking
Avoid:
- ❌ Creating direct invoices when an estimate exists
- ❌ Ignoring low-stock warnings
- ❌ Deleting estimates instead of cancelling them
- ❌ Creating duplicate estimates for the same work
Related Topics
Inventory Management
Estimates
Invoices