Order Management & Fulfillment
O.D.I.N. handles the full production workflow from product catalog through order fulfillment and shipping. Products have a Bill of Materials (BOM), orders generate jobs automatically, and each order gets a per-order P&L calculation and a downloadable PDF invoice.
End-to-End Workflow Overview
Product Catalog (BOM) → Order Created → Schedule All → Jobs Generated → Fulfilled → Shipped
- Define products with printed components and consumables in the BOM
- Create an order with customer info and line items referencing products
- Click "Schedule All" to auto-generate print jobs, assign to printers, and deduct consumable stock
- Monitor jobs in the Job Scheduler until all jobs are complete
- Mark Fulfilled when all jobs finish; Mark Shipped with a tracking number
COGS calculations rely on per-material cost rates. Set these under Settings → System → Pricing before creating orders, or cost data will be missing from your P&L reports.
Products & Bill of Materials
Product Catalog
Navigate to Commerce → Products to create and manage products.
| Field | Description |
|---|---|
| Name | Product display name |
| SKU | Your stock-keeping unit identifier |
| Sale Price | Per-unit revenue (used in P&L) |
| Description | Optional notes |
Bill of Materials
Each product has a BOM with two component types:
Printed Components — models from your Model Library
- Select a model
- Set quantity per product
- COGS: filament usage × cost per gram (from pricing config)
Consumables — non-printed supplies (screws, magnets, packaging, labels, glue)
- Select from the Consumables inventory
- Set quantity per product
- COGS: quantity × cost per unit
COGS is auto-calculated from the BOM whenever filament pricing or consumable costs change.
Consumables Inventory
Navigate to Inventory → Consumables to manage non-printed supplies.
- Full CRUD with stock levels, SKU, unit cost, vendor, and notes
- Low-stock alerts when stock drops below the minimum threshold
- Consumable stock is automatically deducted when "Schedule All" is clicked on an order
Creating an Order
- Go to Commerce → Orders → New Order
- Fill in:
- Platform Source — Etsy, Amazon, Wholesale, Direct, or other
- Customer Name and Order Reference
- Line Items — select a product and quantity for each line
- Click Save
Order Lifecycle States
| Status | Meaning | Trigger |
|---|---|---|
| Pending | Order received, not yet started | Order created |
| In Progress | Jobs generated and running | "Schedule All" clicked |
| Partial | Some jobs complete, others still running | Automatic on job completion |
| Fulfilled | All jobs complete, ready to ship | Automatic when all jobs finish |
| Shipped | Tracking number recorded | Admin/operator marks shipped |
| Cancelled | Order cancelled | Manual action |
Per-Order P&L
The order detail modal shows:
| Metric | Calculation |
|---|---|
| Revenue | Sale price × quantity per line item (summed across all lines) |
| COGS | Filament cost + consumable cost for all BOM components |
| Profit | Revenue − COGS |
| Margin | Profit / Revenue × 100% |
PDF Invoice Export
Download a branded PDF invoice for any order:
GET /api/orders/{id}/invoice.pdf
The invoice includes:
- Your branding (logo, app name, colors)
- Order reference, customer name, platform source
- Line items with unit prices and quantities
- Subtotal, taxes (if configured), and total
The Download Invoice button is available in the order detail modal.
Shipping
When an order is ready to ship:
- Open the order detail modal
- Click Mark as Shipped
- Enter the tracking number
- The order status changes to Shipped and the tracking number is saved
See Also
- Analytics & Reporting — revenue tracking, cost breakdown, and scheduled reports
- Filament & Spool Inventory — filament cost configuration
- Model Library & 3MF Parsing — the product BOM's printed components
- Job Scheduler — how generated jobs are dispatched to printers