DRKDS Manufacturing Pro
Advanced quality management, Gantt scheduling, OEE analytics, shift planning, and batch operations for Odoo 19 Community Edition.
v3.0.0 drkds_mfg_core drkds_gantt_base Zero Errors
5
Quality Models
5
Feature Toggles
3
Security Groups
4
Workflow Stages
Module Name
drkds_mfg_pro
Display: DRKDS Manufacturing Pro
Version
3.0.0
Installed on mfg_test DB · EXIT 0
Dependencies
2 modules
drkds_mfg_core + drkds_gantt_base
Load Time
1.92s
Zero errors · Zero warnings
🅾 Module Purpose

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 Management
End-to-end quality control from inline checks on manufacturing orders to full CAPA (Corrective and Preventive Action) workflows.
📋 Quality Check Workflow

Quality checks move through Kanban stages. The default installation creates 5 stages. Checks are linked to Manufacturing Orders and Workcenters.

New
Created
In Progress
Measuring
Verified ✓
Pass
Failed ✗
Out of Spec
CAPA Alert
Escalated
Closed
Resolved

Check Types

✓ Pass/Fail
Binary result — inspector marks pass or fail. Used for visual inspections, functional tests, go/no-go gauges.
📏 Measure
Numeric value with min/max tolerance. Result auto-computed: pass if min ≤ value ≤ max, fail otherwise.
📄 Text
Free-text response for observations, certificates, batch numbers, or descriptive quality notes.
📋 drkds.quality.check — Field Reference
FieldTypeDescriptionReq
nameCharCheck reference number (auto-sequenced)Yes
production_idMany2oneLinked Manufacturing Order (mrp.production)No
workcenter_idMany2oneWorkcenter where check is performedNo
team_idMany2oneQuality team responsibleNo
stage_idMany2oneCurrent Kanban stage (drkds.quality.stage)Yes
check_typeSelectionpassfail / measure / textYes
measure_valueFloatActual measured value (for type=measure)No
measure_minFloatLower tolerance boundNo
measure_maxFloatUpper tolerance boundNo
uom_idMany2oneUnit of measure for measurement checksNo
resultSelectionpass / fail / pending (auto-computed for measure type)No
date_doneDatetimeTimestamp when check was completedNo
notesTextInspector notes and observationsNo
tag_idsMany2manyClassification tags (drkds.quality.tag)No
🚨 CAPA Alert Workflow

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.

Open
Alert raised
Analysis
Root cause
Action
Corrective
Verification
Effectiveness
Closed
Resolved
💡
CAPA effectiveness is tracked via the capa_effectiveness field. Options: pending, effective, partially effective, ineffective. Ineffective CAPAs should trigger a new CAPA cycle.
🚨 drkds.quality.alert — Field Reference
FieldTypeDescriptionValues
nameCharAlert reference (auto-sequenced)
stage_idMany2oneCAPA Kanban stage
team_idMany2oneAssigned quality team
check_idMany2oneSource quality check that triggered alert
prioritySelectionAlert urgency level0=Normal, 1=Low, 2=High, 3=Urgent
descriptionTextProblem description
root_causeTextRoot cause analysis findings
corrective_actionTextImmediate action to fix current issue
preventive_actionTextLong-term action to prevent recurrence
dispositionSelectionNon-conforming material dispositionuse_as_is / rework / scrap / return
capa_effectivenessSelectionVerification result after actionpending / effective / partially / ineffective
date_assignDateDate alert assigned to team
date_closeDateDate alert closed/resolved
👥 drkds.quality.team — Field Reference
FieldTypeDescription
nameCharTeam name (e.g., "PCB Quality Team")
member_idsMany2manyTeam members (res.users)
member_countIntegerComputed count of team members
email_aliasCharEmail alias for incoming quality alerts
colorIntegerKanban color index (0–11)
🏁 drkds.quality.stage — Field Reference
FieldTypeDescription
nameCharStage display name
sequenceIntegerOrder in Kanban pipeline
foldBooleanCollapse stage in Kanban view by default
is_closing_stageBooleanMarks stage as terminal/closed state
📌
Default stages installed via data/quality_stage_data.xml (noupdate=1): New → In Progress → Verified → Failed → Closed
📊
Gantt Scheduling
Visual drag-and-drop scheduler for manufacturing workorders and workcenter capacity planning with automatic conflict detection.
📈 How Gantt Scheduling Works

The Gantt view shows workorders as horizontal bars on a timeline per workcenter. Supervisors can drag bars to reschedule and set predecessor dependencies.

GANTT TIMELINE — METAL FAB WORKCENTER
MO/2024/001
Weld Frame — 4h
MO/2024/002
⚠ Cut Sheet — CONFLICT
MO/2024/003
Inspect — 2h
When two Gantt items overlap on the same workcenter, the conflict boolean is set to True automatically. The Supervisor must resolve by adjusting date_start/date_stop or setting predecessor dependencies.
📊 drkds.gantt.item — Field Reference
FieldTypeDescriptionValues
nameCharGantt item label
workcenter_idMany2oneTarget workcenter (mrp.workcenter)
production_idMany2oneLinked Manufacturing Order
workorder_idMany2oneSpecific workorder within MO
date_startDatetimeScheduled start date/time
date_stopDatetimeScheduled end date/time
duration_hoursFloatDuration in hours (computed from dates)
predecessor_idsMany2manyItems that must complete before this starts
stateSelectionItem lifecycle statedraft / scheduled / done
conflictBooleanTrue if overlaps with another item on same workcenter
priorityIntegerScheduling priority (0=lowest, 3=highest)0–3
📅
Shift Planning
Template-based shift scheduling system for assigning employees to workcenters across defined time windows with conflict detection.
🗒 Shift Template

Reusable shift patterns with start/end times and break duration. Apply to generate planning slots.

FieldType
nameChar
shift_startFloat (e.g. 8.0 = 08:00)
shift_endFloat (e.g. 16.5 = 16:30)
break_durationFloat (hours)
days_of_weekChar (e.g. "0,1,2,3,4")
📅 Planning Slot

Individual shift assignment linking template, date, workcenter, and employee.

FieldType
template_idMany2one
dateDate
workcenter_idMany2one
employee_idMany2one
statedraft / confirmed / done
conflictBoolean
💡
Float-time fields use Odoo's float_time widget: 8.5 displays as 08:30. Days of week stored as comma-separated integers: 0=Monday through 6=Sunday.
📦
Batch Operations
Group multiple stock transfers into batch, wave, or cluster operations to maximize warehouse throughput and reduce operator travel time.
📦 Batch Transfer Modes
📝 Batch
Multiple transfers processed as a single consolidated operation. Best for same-product or same-destination orders.
🌊 Wave
Transfers grouped by criteria (carrier, date, manual). Operators process in coordinated waves. Best for high-volume receiving.
📚 Cluster
One operator processes multiple orders simultaneously using a pick cart. Best for pick-pack outbound operations.
📦 drkds.batch.picking — Field Reference
FieldTypeDescriptionValues
nameCharBatch reference number
picking_type_idMany2oneOperation type (receipts/deliveries/internal)
modeSelectionBatch strategybatch / wave / cluster
stateSelectionBatch lifecycle statedraft / confirmed / done
picking_idsMany2manyTransfer records included in batch
wave_criteriaSelectionWave grouping criterion (mode=wave only)carrier / date / manual
📈
OEE Dashboard
Real-time Overall Equipment Effectiveness monitoring with configurable KPI tiles and auto-refresh capability.
Overall Equipment Effectiveness
OEE = Availability × Performance × Quality
Availability
Run Time / Planned Time
×
Performance
Actual Rate / Ideal Rate
×
Quality
Good Parts / Total Parts
World Class OEE
≥ 85%
Industry Average
60%
Default Target
Configurable
📈 Dashboard KPI Tiles

The OEE Dashboard displays live KPIs aggregated from completed manufacturing orders and workorder logs. Auto-refresh interval is configurable in Settings.

87.3%
Current OEE
94.1%
Availability
91.2%
Performance
98.5%
Quality Rate
Dashboard refresh interval is set via mfg_pro_dashboard_refresh (integer, seconds). Default recommended: 60 seconds. Set to 0 to disable auto-refresh.
🗂
Data Models — Technical Reference
Complete model inventory for drkds_mfg_pro. All models follow Odoo 19 ORM conventions.
Model NameDescriptionTypeKey Relations
drkds.quality.stageQuality check Kanban stagesPersistent
drkds.quality.teamQuality inspection teamsPersistentres.users (M2M)
drkds.quality.tagClassification tags for checksPersistent
drkds.quality.checkQuality inspection recordsPersistentmrp.production, mrp.workcenter, drkds.quality.stage
drkds.quality.alertCAPA corrective action alertsPersistentdrkds.quality.check, drkds.quality.team
drkds.gantt.itemGantt schedule entriesPersistentmrp.workcenter, mrp.production, mrp.workorder
drkds.shift.templateReusable shift patternsPersistent
drkds.planning.slotIndividual shift assignmentsPersistentdrkds.shift.template, mrp.workcenter, hr.employee
drkds.batch.pickingBatch transfer groupsPersistentstock.picking.type, stock.picking (M2M)
Odoo 19 Key Fixes Applied: Feature groups must NOT use 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.
Settings & Configuration
All Pro features are individually toggled via Manufacturing > Configuration > Settings. Feature groups use the group_ prefix (Odoo 19 requirement for implied_group to work).
Critical Odoo 19 Rule: 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

Manufacturing Dashboard
group_mfg_pro_dashboard
Gantt Scheduler
group_mfg_pro_gantt
Shift Planning
group_mfg_pro_planning
Batch Picking
group_mfg_pro_batch
Quality Alerts (CAPA)
group_mfg_pro_quality_alert
Auto Quality Checks
group_mfg_pro_auto_quality_check

Value Fields (config_parameter)

FieldTypeConfig KeyDescriptionDefault
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
📌
Settings are extended via 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 IDPurposeNote
group_mfg_quality_alertEnables Quality Alerts (CAPA) menusFeature group — no category_id
group_mfg_ganttEnables Gantt Scheduler menusFeature group — no category_id
group_mfg_planningEnables Shift Planning menusFeature group — no category_id
group_mfg_batchEnables Batch Operations menusFeature group — no category_id
group_mfg_pro_dashboardEnables Dashboard menuFeature group — no category_id
🔒
Security & Access Groups
Three user-facing security groups control access to Pro features. All use the privilege from drkds_mfg_core.
Quality Inspector
group_mfg_quality
Create/edit quality checks, manage stages and tags
Supervisor
group_mfg_supervisor
Manage Gantt items, resolve conflicts, approve shifts
Pro Manager
group_mfg_pro_manager
Full access: settings, CAPA approvals, batch operations

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
R = Read W = Write C = Create D = Delete

🎮 Scenario Guides

Step-by-step walkthroughs of real-world manufacturing workflows using DRKDS Manufacturing Pro.

① Quality Check on Manufacturing Order
🕵 Quality Inspector 👥 Supervisor (review)
Feature Required
Quality Management
📋
Context: PCB assembly MO (MO/2024/0045) is in production. Inspector must verify solder joint dimensions using a digital caliper. Spec: 22.5mm – 24.0mm. Measured value: 23.4mm.
  • 1
    Navigate to Manufacturing → Quality → Quality Checks
    Click New to create a fresh quality check record.
  • 2
    Link the Manufacturing Order
    Set production_id = MO/2024/0045. Optionally set workcenter_id = "PCB Assembly Station".
  • 3
    Set Check Type to Measure
    Select check_type = "Measure". Enter measure_min = 22.5, measure_max = 24.0, uom_id = mm.
  • 4
    Enter Measured Value
    Set measure_value = 23.4. The result field auto-computes to Pass (22.5 ≤ 23.4 ≤ 24.0). ✓
  • 5
    Advance Stage to Verified
    Drag the Kanban card to "Verified" stage or use the status bar. Set date_done = now. Save record.
  • 6
    Supervisor Review (optional)
    Supervisor can view the check in list view filtered by Stage = Verified. Quality record is now audit-ready.
Result: Quality check MO/2024/0045 is verified at 23.4mm (in spec). The manufacturing order can proceed to the next work step.
② Quality Failure → CAPA Alert
🕵 Quality Inspector 👑 Pro Manager
Feature Required
Quality Alerts (CAPA)
🚨
Context: A quality check fails — solder bridge detected on PCB batch B-2024-089. Value 25.8mm exceeds max of 24.0mm. Inspector must raise a CAPA alert and initiate corrective action.
  • 1
    Check Fails — Result = Fail
    Measured value 25.8mm > max 24.0mm. Result auto-sets to Fail. Stage moved to "Failed".
  • 2
    Create Quality Alert from Check
    Navigate to Manufacturing → Quality → Quality Alerts. New alert. Set check_id = failing check. Set priority = 3 (Urgent).
  • 3
    Document Root Cause Analysis
    Enter root_cause: "PCB solder paste bridging caused by stencil aperture misalignment during recent maintenance."
  • 4
    Define Corrective Action
    Enter corrective_action: "Rework batch B-2024-089: manual de-solder bridge operation on affected boards."
  • 5
    Define Preventive Action
    Enter preventive_action: "Adjust stencil aperture by 0.1mm. Add aperture verification to PM checklist."
  • 6
    Set Disposition for Affected Material
    Set disposition = "Rework". Assign to Quality Team via team_id. Set date_assign.
  • 7
    Verify Effectiveness After Action
    After rework and stencil adjustment, Manager sets capa_effectiveness = "Effective". Alert stage moved to "Closed". date_close set.
Result: CAPA closed with effectiveness verified. Batch reworked and passed re-inspection. Preventive action implemented in PM schedule.
③ Gantt Conflict Resolution
👥 Supervisor
Feature Required
Gantt Scheduler
Context: Two Manufacturing Orders (MO-045: Weld Frame, MO-046: Cut Sheet) are both scheduled on Metal Fabrication workcenter for 08:00–12:00. Conflict detected. Supervisor must reschedule one.
  • 1
    Open Manufacturing → Scheduling → Gantt Schedule
    The Gantt view shows both MO-045 and MO-046 on Metal Fab with conflict flags (red border, warning icon).
  • 2
    Identify Higher Priority Item
    MO-045 (Weld Frame) has priority=3 (Urgent) — customer deadline today. MO-046 (Cut Sheet) has priority=1 (Low). MO-046 will be rescheduled.
  • 3
    Open MO-046 Gantt Item
    Click on MO-046 bar to open form. Change date_start = 13:00, date_stop = 17:00 (afternoon shift).
  • 4
    Set Predecessor Dependency
    Add MO-045 to predecessor_ids field. This enforces scheduling rule: MO-046 cannot start before MO-045 completes.
  • 5
    Save and Verify Conflict Cleared
    Save record. System recomputes conflict flags. Both items now show conflict = False. Green borders in Gantt view. ✓
Result: Metal Fab workcenter scheduled conflict-free. MO-045 runs 08:00–12:00, MO-046 runs 13:00–17:00. Predecessor ensures correct sequence.
④ Batch Receipt Wave — 8 Incoming Transfers
👑 Pro Manager 🚴 Warehouse Operator
Feature Required
Batch Picking
📦
Context: 8 incoming receipts from supplier "Steel Components Ltd" arrive simultaneously. All are same carrier, same date. Warehouse manager creates a wave batch to coordinate processing across two operators.
  • 1
    Navigate to Batch Operations → Batch Transfers
    Click New. Enter batch name (auto-sequenced). Set picking_type_id = "Receipts".
  • 2
    Set Mode to Wave
    Set mode = "Wave". Set wave_criteria = "Carrier". This groups by carrier for coordinated processing.
  • 3
    Add 8 Receipts to Batch
    In picking_ids Many2many field, search and select all 8 WH/IN/000XX receipts from Steel Components Ltd. All must be in "Ready" state.
  • 4
    Confirm Batch
    Click Confirm. State changes from DraftConfirmed. Batch is now visible to operators.
  • 5
    Operators Process Batch Together
    Two operators open the batch on mobile scanners. They divide the 8 receipts and scan items concurrently. Each validates their assigned transfers.
  • 6
    Mark Batch Done
    Once all 8 receipts are validated, Manager changes batch state to Done. All stock moves are posted simultaneously.
Result: 8 receipts processed in parallel wave operation. Typical time saving: 40–60% vs. individual processing. All inventory updated in single batch commit.
DRKDS Manufacturing Pro v3.0.0  •  Odoo 19 Community Edition
Documentation generated February 2026  •  DRKDS Addons Suite  •  Database: mfg_test
Dependencies: drkds_mfg_core, drkds_gantt_base Load Time: 1.92s  ✓ Zero Errors