Help

System Overview

Workshop Inventory is a self-hosted inventory and light manufacturing system for products, serialized items, and bulk stock lots.

It helps you answer: what you own, where it is, how much is available, what you can build now, and what your historical cost/profit is.

Inventory quantity is ledger-based (from stock movements) and planning respects reservations, BOM structure, and procurement rules.

Quick Navigation

Create or Add Products

  1. Open New Product.
  2. Enter product basics such as title, manufacturer, and MPN.
  3. Add identifiers (UPC, EAN, SKU, serial, or internal code) so scans resolve quickly.
  4. Save the product, then add inventory as serialized items or stock lots from product detail.
  5. Use header scan to open an existing product or start a new create flow if not found.

Create a Bill of Materials (BOM)

  1. Open BOMs and create a BOM for a finished product.
  2. Add component lines with required quantity per build unit.
  3. Mark each component as make or buy planning behavior.
  4. Set or activate the correct BOM version when you have alternatives.
  5. Use BOM details to confirm required components before planning work.

Create Work Orders

  1. Open Work Orders and select New Work Order.
  2. Choose the finished product and BOM version to build.
  3. Enter target quantity and run requirements planning.
  4. Review shortages: buy items become requisitions, make items can create child work orders.
  5. Execute the work order to consume components and produce finished stock with cost snapshots.

Create Requisitions

  1. Open Requisitions.
  2. Most requisitions are generated automatically from work-order shortages for buy components.
  3. Filter by status or source work order to review open demand.
  4. Select open requisitions and convert them into a purchase order batch.
  5. Track each requisition through open, converted, and fulfilled lifecycle states.

Create Purchase Orders

  1. Open Purchase Orders and create a new PO, or convert from requisitions.
  2. Set supplier details and expected dates.
  3. Add or verify PO lines and unit prices.
  4. Receive lines to create stock lots and record cost at receipt time.
  5. Use PO detail history to audit what was ordered and received.

Inventory Math and Planning Formulas

On-hand = SUM(stock_movements.delta_qty)

Available = On-hand - Reserved

MRP Net Available = On-hand - Reserved + Incoming Confirmed

Incoming confirmed means remaining quantity on POs in ordered or partially_received status.

Serialized vs Bulk Decision Guide

Use Serialized Items when:

Use Stock Lots when:

Status Lifecycle Reference

Item statuses (common UI lifecycle)

Work order statuses

Requisition statuses

Purchase order statuses

How Scan Resolution Works

  1. If a QR code matches a location label (LOC-001, LOC-0001, etc.), you are sent to that location edit page.
  2. If the code matches a known item identifier, you are sent to that item.
  3. If it matches a known product identifier, you are sent to that product.
  4. If unknown, the system routes to new-product create with prefilled identifier/scheme.
  5. QR scans may fall back to UPC/EAN or MusicBrainz release id when patterns match.

Reservations and Availability

BOM Behaviors and Versions

Receiving, Acquire, and Idempotency

Location Behavior

Locations page

Location codes, paths, and scanning

Edit location page

Add Product To This Location

Glossary

BOM
Bill of Materials. The structured list of components required to build one unit of a product.
BOM Explosion
Process of expanding a BOM into all required components and quantities for a target build quantity. Read full guide.
On-hand
Total quantity from stock ledger movements before reservations are subtracted.
Reserved Quantity
Quantity committed to references (for example work orders), unavailable for new allocation.
Available Quantity
Quantity that can still be allocated now: on-hand minus reserved.
Net Available (MRP)
Planning quantity: on-hand minus reserved plus confirmed incoming from active POs.
Stock Movement
Append-only ledger entry that changes lot quantity by delta amount.
Stock Reservation
Allocation record that protects quantity for a specific reference without mutating stock counters.
Procurement Type
buy means source externally; make means plan internal build.
Incoming Confirmed
Remaining PO quantity expected from ordered/partially_received purchase orders.
Idempotency Key
Client-generated key used to safely retry operations like receive/acquire without double posting.
Work Order
Manufacturing instruction to build a quantity of a finished product using a chosen BOM. Read full guide.
Work Order Execution
A specific build run that records quantity built, production output, and component consumptions.
Requisition
Internal demand record that requests purchasing for missing buy components.
Purchase Order (PO)
Supplier-facing order that tracks what you intend to buy, price, and receiving status.
PO Receive Event
Idempotent receive transaction record tied to a purchase order receipt payload and response.
Item Status Event
Historical log entry recording item status transitions over time.

Frequently Asked Questions

What are requisitions?

Requisitions capture purchasing demand for shortages, usually created during work-order planning for buy parts.

How do BOM versions work?

A product can have multiple BOM versions. Use versions to model alternates or revisions, and choose the intended version when creating a work order.

What is BOM explosion used for?

It calculates exact component demand from planned build quantity, so the system can detect shortages and trigger downstream requisitions or child work orders.

Why does available quantity differ from on-hand?

Because available subtracts active reservations, while on-hand is the raw ledger quantity.

Why did planning create requisitions for some parts but child work orders for others?

Shortage handling follows procurement type: buy creates requisitions, make creates child work orders.

Why can I fail a build even when stock exists?

Stock may be reserved elsewhere, requirements may include mandatory non-optional lines, or the selected BOM/version may differ from expectation.

What happens if I click Receive twice?

Receive endpoints use idempotency keys so retried requests return a safe prior response instead of double-receiving.

Can two products share the same identifier?

No. Identifier scheme/value pairs are unique in the product catalog.

Why is a requisition still open after creating a PO?

Open quantity can remain when requisition demand is only partially ordered or when conversion was not completed for that requisition.

Why are quantities ledger-based?

On-hand quantity is derived from stock movements, which preserves audit history and prevents silent counter drift.