DRKDS Manufacturing Pro extends the Core module with advanced production management capabilities. It adds a full Quality Management System with CAPA workflows, a visual Gantt scheduler for workorder sequencing, shift planning with template-based slot allocation, batch/wave/cluster picking for warehouse operations, and a live OEE dashboard with configurable KPIs. All features are individually toggleable via Settings, allowing phased rollouts without affecting core manufacturing operations.
Quality checks move through Kanban stages. The default installation creates 5 stages. Checks are linked to Manufacturing Orders and Workcenters.
Check Types
| Field | Type | Description | Req |
|---|---|---|---|
| name | Char | Check reference number (auto-sequenced) | Yes |
| production_id | Many2one | Linked Manufacturing Order (mrp.production) | No |
| workcenter_id | Many2one | Workcenter where check is performed | No |
| team_id | Many2one | Quality team responsible | No |
| stage_id | Many2one | Current Kanban stage (drkds.quality.stage) | Yes |
| check_type | Selection | passfail / measure / text | Yes |
| measure_value | Float | Actual measured value (for type=measure) | No |
| measure_min | Float | Lower tolerance bound | No |
| measure_max | Float | Upper tolerance bound | No |
| uom_id | Many2one | Unit of measure for measurement checks | No |
| result | Selection | pass / fail / pending (auto-computed for measure type) | No |
| date_done | Datetime | Timestamp when check was completed | No |
| notes | Text | Inspector notes and observations | No |
| tag_ids | Many2many | Classification tags (drkds.quality.tag) | No |
When a quality check fails, a CAPA (Corrective and Preventive Action) alert is raised. The alert tracks root cause analysis, corrective actions, preventive actions, and effectiveness verification.
capa_effectiveness field. Options: pending, effective, partially effective, ineffective. Ineffective CAPAs should trigger a new CAPA cycle.| Field | Type | Description | Values |
|---|---|---|---|
| name | Char | Alert reference (auto-sequenced) | — |
| stage_id | Many2one | CAPA Kanban stage | — |
| team_id | Many2one | Assigned quality team | — |
| check_id | Many2one | Source quality check that triggered alert | — |
| priority | Selection | Alert urgency level | 0=Normal, 1=Low, 2=High, 3=Urgent |
| description | Text | Problem description | — |
| root_cause | Text | Root cause analysis findings | — |
| corrective_action | Text | Immediate action to fix current issue | — |
| preventive_action | Text | Long-term action to prevent recurrence | — |
| disposition | Selection | Non-conforming material disposition | use_as_is / rework / scrap / return |
| capa_effectiveness | Selection | Verification result after action | pending / effective / partially / ineffective |
| date_assign | Date | Date alert assigned to team | — |
| date_close | Date | Date alert closed/resolved | — |
| Field | Type | Description |
|---|---|---|
| name | Char | Team name (e.g., "PCB Quality Team") |
| member_ids | Many2many | Team members (res.users) |
| member_count | Integer | Computed count of team members |
| email_alias | Char | Email alias for incoming quality alerts |
| color | Integer | Kanban color index (0–11) |
| Field | Type | Description |
|---|---|---|
| name | Char | Stage display name |
| sequence | Integer | Order in Kanban pipeline |
| fold | Boolean | Collapse stage in Kanban view by default |
| is_closing_stage | Boolean | Marks stage as terminal/closed state |
data/quality_stage_data.xml (noupdate=1): New → In Progress → Verified → Failed → ClosedThe Gantt view shows workorders as horizontal bars on a timeline per workcenter. Supervisors can drag bars to reschedule and set predecessor dependencies.
conflict boolean is set to True automatically. The Supervisor must resolve by adjusting date_start/date_stop or setting predecessor dependencies.| Field | Type | Description | Values |
|---|---|---|---|
| name | Char | Gantt item label | — |
| workcenter_id | Many2one | Target workcenter (mrp.workcenter) | — |
| production_id | Many2one | Linked Manufacturing Order | — |
| workorder_id | Many2one | Specific workorder within MO | — |
| date_start | Datetime | Scheduled start date/time | — |
| date_stop | Datetime | Scheduled end date/time | — |
| duration_hours | Float | Duration in hours (computed from dates) | — |
| predecessor_ids | Many2many | Items that must complete before this starts | — |
| state | Selection | Item lifecycle state | draft / scheduled / done |
| conflict | Boolean | True if overlaps with another item on same workcenter | — |
| priority | Integer | Scheduling priority (0=lowest, 3=highest) | 0–3 |
Reusable shift patterns with start/end times and break duration. Apply to generate planning slots.
| Field | Type |
|---|---|
| name | Char |
| shift_start | Float (e.g. 8.0 = 08:00) |
| shift_end | Float (e.g. 16.5 = 16:30) |
| break_duration | Float (hours) |
| days_of_week | Char (e.g. "0,1,2,3,4") |
Individual shift assignment linking template, date, workcenter, and employee.
| Field | Type |
|---|---|
| template_id | Many2one |
| date | Date |
| workcenter_id | Many2one |
| employee_id | Many2one |
| state | draft / confirmed / done |
| conflict | Boolean |
float_time widget: 8.5 displays as 08:30. Days of week stored as comma-separated integers: 0=Monday through 6=Sunday.| Field | Type | Description | Values |
|---|---|---|---|
| name | Char | Batch reference number | — |
| picking_type_id | Many2one | Operation type (receipts/deliveries/internal) | — |
| mode | Selection | Batch strategy | batch / wave / cluster |
| state | Selection | Batch lifecycle state | draft / confirmed / done |
| picking_ids | Many2many | Transfer records included in batch | — |
| wave_criteria | Selection | Wave grouping criterion (mode=wave only) | carrier / date / manual |
The OEE Dashboard displays live KPIs aggregated from completed manufacturing orders and workorder logs. Auto-refresh interval is configurable in Settings.
mfg_pro_dashboard_refresh (integer, seconds). Default recommended: 60 seconds. Set to 0 to disable auto-refresh.| Model Name | Description | Type | Key Relations |
|---|---|---|---|
| drkds.quality.stage | Quality check Kanban stages | Persistent | — |
| drkds.quality.team | Quality inspection teams | Persistent | res.users (M2M) |
| drkds.quality.tag | Classification tags for checks | Persistent | — |
| drkds.quality.check | Quality inspection records | Persistent | mrp.production, mrp.workcenter, drkds.quality.stage |
| drkds.quality.alert | CAPA corrective action alerts | Persistent | drkds.quality.check, drkds.quality.team |
| drkds.gantt.item | Gantt schedule entries | Persistent | mrp.workcenter, mrp.production, mrp.workorder |
| drkds.shift.template | Reusable shift patterns | Persistent | — |
| drkds.planning.slot | Individual shift assignments | Persistent | drkds.shift.template, mrp.workcenter, hr.employee |
| drkds.batch.picking | Batch transfer groups | Persistent | stock.picking.type, stock.picking (M2M) |
category_id (no category/privilege for hidden groups). CSV access file must have NO comment lines (# lines break Odoo CSV parser). decoration-secondary is invalid in list views — use decoration-muted instead.group_ prefix (Odoo 19 requirement for implied_group to work).implied_group= on settings fields ONLY works when the field name starts with group_. Fields prefixed differently (e.g. mfg_pro_dashboard) are silently ignored and never save. Fields using config_parameter= do NOT need the group_ prefix.Feature Toggle Fields
Value Fields (config_parameter)
| Field | Type | Config Key | Description | Default |
|---|---|---|---|---|
| mfg_pro_oee_target | Float | mfg_pro.oee_target |
OEE target percentage shown on dashboard | 85.0 |
| mfg_pro_dashboard_refresh | Integer | mfg_pro.dashboard_refresh |
Dashboard auto-refresh interval in seconds | 60 |
inherit_id=mrp.res_config_settings_view_form with xpath expr="//app[@name='mrp']". The Pro settings appear as a new block inside the existing MRP settings app. Do NOT create a new app block with name="mrp" — this causes a duplicate key OwlError.Feature Groups (Internal)
| XML ID | Purpose | Note |
|---|---|---|
| group_mfg_quality_alert | Enables Quality Alerts (CAPA) menus | Feature group — no category_id |
| group_mfg_gantt | Enables Gantt Scheduler menus | Feature group — no category_id |
| group_mfg_planning | Enables Shift Planning menus | Feature group — no category_id |
| group_mfg_batch | Enables Batch Operations menus | Feature group — no category_id |
| group_mfg_pro_dashboard | Enables Dashboard menu | Feature group — no category_id |
Access Rights Matrix
| Model | Quality Inspector | Supervisor | Pro Manager | MFG User (Core) |
|---|---|---|---|---|
| drkds.quality.check | RWCD |
RWCD |
RWCD |
RWCD |
| drkds.quality.alert | RWCD |
RWCD |
RWCD |
RWCD |
| drkds.gantt.item | RWCD |
RWCD |
RWCD |
RWCD |
| drkds.batch.picking | RWCD |
RWCD |
RWCD |
RWCD |
| drkds.quality.stage | RWCD |
RWCD |
RWCD |
RWCD |
🎮 Scenario Guides
Step-by-step walkthroughs of real-world manufacturing workflows using DRKDS Manufacturing Pro.
-
1Navigate to Manufacturing → Quality → Quality ChecksClick New to create a fresh quality check record.
-
2Link the Manufacturing OrderSet
production_id= MO/2024/0045. Optionally setworkcenter_id= "PCB Assembly Station". -
3Set Check Type to MeasureSelect
check_type= "Measure". Entermeasure_min= 22.5,measure_max= 24.0,uom_id= mm. -
4Enter Measured ValueSet
measure_value= 23.4. Theresultfield auto-computes to Pass (22.5 ≤ 23.4 ≤ 24.0). ✓ -
5Advance Stage to VerifiedDrag the Kanban card to "Verified" stage or use the status bar. Set
date_done= now. Save record. -
6Supervisor Review (optional)Supervisor can view the check in list view filtered by Stage = Verified. Quality record is now audit-ready.
-
1Check Fails — Result = FailMeasured value 25.8mm > max 24.0mm. Result auto-sets to Fail. Stage moved to "Failed".
-
2Create Quality Alert from CheckNavigate to Manufacturing → Quality → Quality Alerts. New alert. Set
check_id= failing check. Setpriority= 3 (Urgent). -
3Document Root Cause AnalysisEnter
root_cause: "PCB solder paste bridging caused by stencil aperture misalignment during recent maintenance." -
4Define Corrective ActionEnter
corrective_action: "Rework batch B-2024-089: manual de-solder bridge operation on affected boards." -
5Define Preventive ActionEnter
preventive_action: "Adjust stencil aperture by 0.1mm. Add aperture verification to PM checklist." -
6Set Disposition for Affected MaterialSet
disposition= "Rework". Assign to Quality Team viateam_id. Setdate_assign. -
7Verify Effectiveness After ActionAfter rework and stencil adjustment, Manager sets
capa_effectiveness= "Effective". Alert stage moved to "Closed".date_closeset.
-
1Open Manufacturing → Scheduling → Gantt ScheduleThe Gantt view shows both MO-045 and MO-046 on Metal Fab with conflict flags (red border, warning icon).
-
2Identify Higher Priority ItemMO-045 (Weld Frame) has priority=3 (Urgent) — customer deadline today. MO-046 (Cut Sheet) has priority=1 (Low). MO-046 will be rescheduled.
-
3Open MO-046 Gantt ItemClick on MO-046 bar to open form. Change
date_start= 13:00,date_stop= 17:00 (afternoon shift). -
4Set Predecessor DependencyAdd MO-045 to
predecessor_idsfield. This enforces scheduling rule: MO-046 cannot start before MO-045 completes. -
5Save and Verify Conflict ClearedSave record. System recomputes conflict flags. Both items now show
conflict = False. Green borders in Gantt view. ✓
-
1Navigate to Batch Operations → Batch TransfersClick New. Enter batch name (auto-sequenced). Set
picking_type_id= "Receipts". -
2Set Mode to WaveSet
mode= "Wave". Setwave_criteria= "Carrier". This groups by carrier for coordinated processing. -
3Add 8 Receipts to BatchIn
picking_idsMany2many field, search and select all 8 WH/IN/000XX receipts from Steel Components Ltd. All must be in "Ready" state. -
4Confirm BatchClick Confirm. State changes from Draft → Confirmed. Batch is now visible to operators.
-
5Operators Process Batch TogetherTwo operators open the batch on mobile scanners. They divide the 8 receipts and scan items concurrently. Each validates their assigned transfers.
-
6Mark Batch DoneOnce all 8 receipts are validated, Manager changes batch state to Done. All stock moves are posted simultaneously.
drkds_mfg_core, drkds_gantt_base
Load Time: 1.92s ✓ Zero Errors