Bills of Materials
A bill of materials (BOM) is a recipe: it lists what a product is made from and in what quantity. When you create a work order or a production order for a SKU, Pharus reads that SKU's BOM to work out which materials and components the job will consume.
A BOM has no header record of its own — it is the set of component lines attached to an output SKU. Each line names one component and a quantity.
What a line can be
Each BOM line references exactly one of two things:
A line can't be both, and a SKU can't appear in its own BOM. This is what lets you model multi-level products: a finished gift set whose BOM includes a boxed candle SKU, whose own BOM in turn includes wax and a jar.
| Field | Meaning |
|---|---|
skuId | The output product this recipe builds |
materialId or inputSkuId | The component on this line (exactly one) |
quantity | How much of that component one unit of the output needs |
How orders use a BOM
The BOM is read at order-creation time and snapshotted onto the order, so later edits to a recipe never rewrite the history of a job already in flight.
- Work orders snapshot the BOM one level deep — both materials and component SKUs become inputs.
- Production orders explode the BOM all the way down to raw materials only.
Because recipes are snapshotted rather than referenced, editing a BOM replaces its lines wholesale; there's no in-place update.
See also
Manage BOMs through the REST API or the MCP server.