Workflow: Manufacturing Order
Modules involved: Manufacturing (MRP) · Warehouse · Purchase
Who uses it: Production planner, Workshop operator, Production manager, Warehouse keeper
Typical duration: Hours – weeks (depends on product complexity)
Overview
The complete manufacturing workflow: from the need for a finished product (triggered by a sales order or internal planning) to the finished product entering the warehouse. Includes checking material availability, scheduling operations on work centers, tracking execution, and integration with purchasing (if materials are missing).
Flow diagram
[PRODUCTION REQUEST]
│ from sales order / manual planning
│ ↓
│
[BILL OF MATERIALS (BoM)]
│ finished product + required components + quantities
│ associated routing (operations + work centers)
│
[MANUFACTURING ORDER (MO)]
│ status: draft → confirmed → planned → in_progress → done
│ ↘ cancelled
│
├── Check material availability
│ │ Available → reserved in warehouse (qty_reserved)
│ │ Missing → automatic Purchase Request
│
├── [WORK ORDERS]
│ │ one WO per operation from the routing
│ │ status: waiting → ready → in_progress → finished
│ │ time tracked per operator: time_trackings
│
└── Material consumption (qty_done)
│ deducted from the components warehouse
│
↓
[FINISHED PRODUCT → WAREHOUSE]
│ stock increases in finished_products_warehouse
│ inventory updated automatically
│
[MANUFACTURING ORDER: done ✓]
Step by step
1. Bill of Materials (BoM) — Product structure
Where: /admin/manufacturing/bill_of_material_manage
What a BoM defines:
- The finished product + quantity produced per run
- Components (raw materials, subassemblies): product, quantity, unit of measure
- Associated routing: the sequence of operations
BoM fields (mrp_bill_of_materials):
| Field | Notes |
|---|---|
bom_code |
Unique BoM code |
product_id |
Finished product |
product_qty |
Quantity produced per BoM run |
routing_id |
Routing (operations + work centers) |
consumption |
Consumption mode: automatic, manual, semi-automatic |
ready_to_produce |
Flag that the BoM is validated and ready for use |
BoM details — components (mrp_bill_of_material_details):
| Field | Notes |
|---|---|
product_id |
Component (raw material / subassembly) |
product_qty |
Quantity required per run |
unit_id |
Unit of measure |
operation_id |
Which operation consumes this component |
A BoM can be reused for any number of manufacturing orders. Changes to a BoM are recorded in
mrp_bom_changes_logswith the type of change and the operator.
2. Routing — The production plan
Where: /admin/manufacturing/routing_manage
What a routing defines:
- The sequence of operations (cutting, welding, assembly, quality control)
- The work center for each operation
- Estimated duration per operation
- Whether the next operation can start before the current one is finished (
start_next_operation)
Work centers (mrp_work_centers):
| Field | Notes |
|---|---|
work_center_code |
Unique code |
working_hours |
Working schedule (shifts) |
time_efficiency |
Efficiency (%) — adjusts planned durations |
capacity |
Simultaneous capacity (how many orders can run in parallel) |
oee_target |
OEE target (Overall Equipment Effectiveness) |
costs_hour |
Cost per hour — used in MO cost calculation |
Working schedule (mrp_working_hours):
Shifts defined by days of the week (work_from, work_to), with time-off periods (holidays, maintenance), for realistic time planning.
3. Manufacturing Order (MO) — Execution
Where: /admin/manufacturing/manufacturing_order_manage
Creation:
- From a sales order: Create Manufacturing Order button on the confirmed order
- Manually: define the product, quantity, BoM, warehouses
Key MO fields:
| Field | Notes |
|---|---|
manufacturing_order_code |
Unique code (prefix + auto-increment) |
product_id + product_qty |
What and how much is produced |
bom_id |
BoM used |
routing_id |
Routing |
date_deadline |
Delivery deadline |
date_planned_start |
Planned production start date |
components_warehouse_id |
Warehouse from which materials are consumed |
finished_products_warehouse_id |
Warehouse where the finished product enters |
purchase_request_id |
Link to purchase request if materials are missing |
Manufacturing order statuses:
| Status | Description | What happens |
|---|---|---|
draft |
Created, unconfirmed | Can be freely edited |
confirmed |
BoM and routing validated | Material availability is checked |
planned |
Production schedule generated | Work Orders are created; materials reserved |
in_progress |
Production has started | Operators record activity on WOs |
done |
Completed | Finished product entered warehouse; materials consumed |
cancelled |
Cancelled | Reserved materials are released |
4. Material verification — Availability and purchasing
When the MO transitions to confirmed:
- System checks
qty_reservedvs available stock incomponents_warehouse_id - If materials available: reserved immediately (
qty_reservedincreased on components) - If materials insufficient: the
material_availability_statusfield marks the shortage + optionally a Purchase Request is automatically created (purchase_request_idfilled in on MO)
Material reservation (mrp_manufacturing_order_details):
| Field | Description |
|---|---|
product_id |
Component |
qty_to_consume |
Required quantity (from BoM × MO quantity) |
qty_reserved |
Quantity blocked from stock |
qty_done |
Quantity actually consumed |
warehouse_id |
Source warehouse |
5. Work Orders — Shop floor execution
Where: /admin/manufacturing/work_order_manage
Creation:
When the MO transitions to planned, the system automatically creates one Work Order for each operation in the routing.
Work Order fields:
| Field | Notes |
|---|---|
manufacturing_order_id |
Parent MO |
routing_detail_id |
Operation from the routing |
work_center_id |
Allocated work center |
operation_name |
Operation name |
qty_production |
Quantity to produce |
qty_producing |
Currently in progress |
qty_produced |
Completed |
date_planned_start/finished |
Planned schedule |
date_start/finished |
Actual dates |
duration_expected |
Planned duration (minutes) |
real_duration |
Actual duration |
Work Order statuses:
| Status | Description |
|---|---|
waiting |
Waiting for previous WO to finish (if start_next_operation = false) |
ready |
Can start — resources are available |
in_progress |
Operator is working |
finished |
Operation complete |
Time recording (mrp_work_order_time_trackings):
Operator starts/stops the timer on the WO:
from_date,to_date→ calculatesdurationstaff_id→ responsible operator- Sum of actual times →
real_durationon WO vsduration_expectedfrom planning
6. Material consumption and finished products — Production output
Material consumption:
- On completion of each WO or when closing the MO:
qty_doneupdated on components - Stock in
components_warehouse_idautomatically deducted - Discrepancies from the BoM recorded in
mrp_bom_changes_logs
Consumption mode (consumption):
| Mode | Description |
|---|---|
automatic |
Materials consumed automatically when WO is validated |
manual |
Operator enters the consumed quantities |
semi-automatic |
System proposes; operator confirms |
When MO status → done:
- Finished product (quantity
product_qty) → added tofinished_products_warehouse_id - Stock transaction created in the Warehouse module (
goods_transaction_detail) - MO cost calculated:
materials + hours × cost_hour of work centers - Remaining reserved materials are released
What is created automatically
| Event | Created automatically |
|---|---|
MO → confirmed |
Stock check; material reservation (qty_reserved) |
| Insufficient materials | Purchase Request (purchase_request_id on MO) |
MO → planned |
Work Orders per operation from routing |
| WO timer started | Entry in mrp_work_order_time_trackings |
MO → done |
Finished product added to warehouse; stock transaction; cost calculated |
| BoM modified on active MO | Log in mrp_bom_changes_logs |
Points where the workflow may stall
| Problem | Likely cause | Solution |
|---|---|---|
MO cannot transition to planned |
Incomplete BoM or missing routing | Check BoM → all components have valid product_id + unit_id; add routing |
| Materials reserved but stock still decreases | Another MO or delivery consuming from the same stock | Check qty_reserved vs actual available stock; adjust MO priority |
WO remains waiting |
Previous WO not finished | Complete WOs in order; or enable start_next_operation on the previous operation |
| Finished product does not appear in warehouse | MO has not transitioned to done |
Complete all WOs; mark MO as done |
| MO cost is 0 | costs_hour = 0 on work centers |
Configure cost per hour on each Work Center |
| Purchase request not generated | Feature not enabled or materials at 0 without being checked | Enable Purchase integration from Manufacturing settings |
Relevant reports
- Manufacturing Dashboard —
/admin/manufacturing/dashboard— active MOs, WC utilization, OEE - Inventory History —
/admin/warehouse/warehouse_history— finished product entries - Purchase Reports — materials ordered for production
- Timesheets Report — hours worked per operator on WOs
Required initial configuration
Before the first Manufacturing Order, the following must be configured:
- Units of measure —
/admin/manufacturing/setting→ Units - Work centers —
/admin/manufacturing/work_center_manage— including schedule and cost/hour - Working schedules — shifts + days off
- Routings —
/admin/manufacturing/routing_manage - BoM for each product —
/admin/manufacturing/bill_of_material_manage - Prefixes — MO, BoM, Routing codes from
/admin/manufacturing/setting