⚙ DRKDS Manufacturing Core
Foundation layer — Shopfloor Stations & Barcode Operations for small manufacturers (5–20 employees). Lightweight, zero external dependencies, production-ready on Odoo 19 Community.
DRKDS Manufacturing Core (drkds_mfg_core) is the foundation module of the DRKDS manufacturing suite. It introduces two primary capabilities to Odoo 19's manufacturing environment:
- Shopfloor Station Management — Define physical workstations, assign operators, track real-time availability (available / busy / maintenance / offline), and display a live dashboard.
- Configurable Barcode Operations — Create named scan operations (Receipt, Delivery, Internal, Manufacturing) without coding. A simple wizard allows warehouse or shopfloor staff to scan products and auto-validate transfers.
The module is designed for small manufacturers with 5–20 employees who need lightweight shopfloor visibility without the complexity of a full MES system. It installs in under 2 seconds and adds zero performance overhead to existing manufacturing workflows.
drkds_mfg_pro, drkds_mfg_advanced, and drkds_mfg_compliance. Install this first before any other DRKDS manufacturing modules.
The module declares the following dependencies in __manifest__.py:
| Dependency | Purpose | Type |
|---|---|---|
stock | Inventory management, picking types, stock locations, lot/serial tracking | Odoo Core |
mrp | Manufacturing orders, workcenters — station links to mrp.workcenter | Odoo Core |
barcodes | Barcode field support, GS1 parsing utilities | Odoo Core |
web | OWL framework for Shopfloor Dashboard client action | Odoo Core |
mail | Chatter / activity support on station and operation records | Odoo Core |
delivery | Carrier/delivery method integration for delivery barcode operations | Odoo Core |
drkds_addons is listed in addons_path in /home/odoo19/odoo.conf before installing.
/home/odoo19/odoo-venv/bin/python3 /home/odoo19/odoo/odoo-bin \ --config /home/odoo19/odoo.conf \ --database mfg_test \ --init drkds_mfg_core \ --stop-after-init
/home/odoo19/odoo-venv/bin/python3 /home/odoo19/odoo/odoo-bin \ --config /home/odoo19/odoo.conf \ --database mfg_test \ --update drkds_mfg_core \ --stop-after-init
Modules loaded with zero ERROR or WARNING lines. Load time is typically under 2 seconds. Six default station types are auto-created via data/station_type_data.xml.
After install, navigate to Manufacturing → Shopfloor → Station Types. You should see 6 pre-loaded types: Assembly, Welding, Machining, Quality, Testing, Packaging.
The module defines two security groups within the Manufacturing privilege category:
🔵 Operator
drkds_mfg_core.group_mfg_operator
Assigned to shopfloor workers who perform manufacturing tasks. Has read access to station master data and can operate the barcode scan wizard.
- View shopfloor dashboard
- Use barcode scan wizard
- View station list
- Read station types
🟢 Manager
drkds_mfg_core.group_mfg_manager
Assigned to production supervisors and managers. Full create/write/delete access to all module records.
- Create / edit stations & types
- Configure barcode operations
- Change station states
- Access all settings
group_mfg_manager implies group_mfg_operator, so managers have all operator permissions automatically. Assign roles via Settings → Users & Companies → Users.
Navigate to Manufacturing → Configuration → Settings to access module toggles.
| Setting Field | Label | Default | Effect when Enabled |
|---|---|---|---|
group_mfg_core_barcode |
Enable Barcode Operations | ON | Shows Barcode Operations menu. Enables scan wizard and operation config views. |
group_mfg_core_shopfloor |
Enable Shopfloor Dashboard | ON | Shows Shopfloor menu with Dashboard, Stations, and Station Types. |
implied_group= and their field names start with group_ — this is required for Odoo 19 to process the implied group assignment. Fields without the group_ prefix are silently ignored by the settings framework.
Station types are master records that categorize physical stations. They provide color-coding and grouping for the shopfloor dashboard.
| Name | Code | Color | Typical Use |
|---|---|---|---|
| Assembly | ASSM | Blue | Final assembly, sub-assembly, kit building |
| Welding | WELD | Red | MIG/TIG welding, spot welding booths |
| Machining | MACH | Purple | CNC, lathe, milling operations |
| Quality | QC | Green | Inspection, measurement, QC checks |
| Testing | TEST | Amber | Functional testing, burn-in, calibration |
| Packaging | PACK | Gray | Final packing, labelling, shrink-wrap |
Shopfloor stations represent the physical workstations on the factory floor. Each station has a real-time state and can be linked to an Odoo workcenter for production scheduling.
| State | Meaning | Allowed Transitions |
|---|---|---|
| available | Station is idle and ready to accept work | → busy, → maintenance, → offline |
| busy | Station is actively processing a manufacturing order | → available, → maintenance |
| maintenance | Station is under repair or scheduled maintenance | → available, → offline |
| offline | Station is powered down or decommissioned | → available |
| Field | Type | Required | Description |
|---|---|---|---|
name | Char | ✓ | Station display name, e.g. Assembly-01 |
code | Char | ✓ | Short code used in barcode generation and reports, e.g. A01 |
station_type_id | Many2one | ✓ | Link to drkds.station.type. Drives color and grouping on dashboard. |
workcenter_id | Many2one | – | Links to mrp.workcenter for capacity planning integration. |
current_operator_id | Many2one | – | Currently assigned res.users. Updated when operator scans in. |
state | Selection | ✓ | Real-time status: available / busy / maintenance / offline |
barcode | Char | – | Unique barcode for station identification. Scanned during operator check-in. |
location_id | Many2one | – | Stock location (stock.location) associated with this station. |
shopfloor_instructions | Html | – | Rich-text instructions displayed to operators on the dashboard for this station. |
capacity | Integer | – | Maximum number of simultaneous jobs this station can handle. |
notes | Text | – | Internal notes for managers. Not shown on shopfloor dashboard. |
Barcode Operations allow non-technical users to configure scan workflows without writing code. Each operation maps a scan action to a stock picking type and controls behavior like auto-validation and lot tracking.
| operation_type | Typical Use | Example Picking Type |
|---|---|---|
| receipt | Goods received from supplier | Receipts (WH/IN) |
| delivery | Shipment to customer | Delivery Orders (WH/OUT) |
| internal | Stock transfer between locations | Internal Transfers (WH/INT) |
| manufacturing | Component issue to MO / finished goods receipt | Manufacturing (WH/MO) |
| Field | Type | Description |
|---|---|---|
name | Char | Operation display name, e.g. Quick Receipt — Dock A |
operation_type | Selection | receipt / delivery / internal / manufacturing |
picking_type_id | Many2one | The stock.picking.type this operation creates transfers against. |
sequence_prefix | Char | Optional prefix override for generated transfer names. |
auto_validate | Boolean | When True, transfer is immediately validated after scan — no manual confirm step. |
require_lot | Boolean | Forces lot number entry before scan is accepted. Used for FIFO/FEFO lot tracking. |
require_serial | Boolean | Forces serial number scan — one scan per unit. Use for high-value serialized items. |
active | Boolean | Archive/unarchive without deletion. Archived ops are hidden from scan wizard dropdown. |
The scan wizard (drkds.barcode.scan.wizard) is a transient model opened via Manufacturing → Barcode Operations → Scan. It provides a minimal three-step interface:
- Select the barcode operation from the dropdown.
- Scan or type the product barcode — product and UoM auto-populate.
- Enter quantity (and lot/serial if required). Click Confirm to process.
| Field | Type | Description |
|---|---|---|
operation_id | Many2one | The drkds.barcode.operation to execute. |
barcode | Char | Scanned or typed product barcode. Triggers onchange to populate product_id. |
product_id | Many2one | Auto-populated from barcode lookup against product.product. |
qty | Float | Quantity to process. Defaults to 1.0. |
lot_id | Many2one | Lot or serial number. Visible only when require_lot or require_serial is set on the operation. |
Complete field reference for all models defined by drkds_mfg_core.
drkds.station.type
| Table: drkds_station_type
| Inherits: mail.thread
| Field Name | Field Label | Type | Required | Description |
|---|---|---|---|---|
name | Type Name | Char | ✓ | Human-readable type name. Must be unique. |
code | Code | Char | ✓ | Short uppercase code (3–6 chars) for reports. |
color | Color | Integer | – | Odoo color index (0–11) for Kanban cards. |
active | Active | Boolean | – | Archive flag. Default: True. |
data/station_type_data.xml with noupdate="1". They will not be overwritten on module update.drkds.shopfloor.station
| Table: drkds_shopfloor_station
| Inherits: mail.thread, mail.activity.mixin
| Field Name | Label | Type | Req | Notes |
|---|---|---|---|---|
name | Station Name | Char | ✓ | E.g. "Assembly-01". Shown on dashboard card header. |
code | Code | Char | ✓ | Unique short code. Used in barcode generation. |
station_type_id | Station Type | Many2one | ✓ | → drkds.station.type |
workcenter_id | Workcenter | Many2one | – | → mrp.workcenter |
current_operator_id | Current Operator | Many2one | – | → res.users |
state | State | Selection | ✓ | available/busy/maintenance/offline. Default: available. |
barcode | Barcode | Char | – | Unique. Scanned for operator check-in. |
location_id | Stock Location | Many2one | – | → stock.location |
shopfloor_instructions | Instructions | Html | – | Shown on dashboard. Supports images and formatting. |
capacity | Capacity | Integer | – | Max simultaneous jobs. Default: 1. |
notes | Notes | Text | – | Internal manager notes. |
active | Active | Boolean | – | Archive flag. Default: True. |
drkds.barcode.operation
| Table: drkds_barcode_operation
| Inherits: mail.thread
| Field Name | Label | Type | Req | Notes |
|---|---|---|---|---|
name | Operation Name | Char | ✓ | Unique operation name shown in scan wizard dropdown. |
operation_type | Type | Selection | ✓ | receipt / delivery / internal / manufacturing |
picking_type_id | Picking Type | Many2one | ✓ | → stock.picking.type. Transfers are created under this picking type. |
sequence_prefix | Sequence Prefix | Char | – | Override default transfer name prefix. |
auto_validate | Auto-Validate | Boolean | – | Immediately validate on scan. Default: False. |
require_lot | Require Lot | Boolean | – | Force lot entry. Default: False. |
require_serial | Require Serial | Boolean | – | Force serial scan. Default: False. |
active | Active | Boolean | – | Archive flag. Default: True. |
drkds.barcode.scan.wizard
| Type: TransientModel | Inherits: (none)
| Field Name | Label | Type | Notes |
|---|---|---|---|
operation_id | Operation | Many2one | → drkds.barcode.operation. Required. |
barcode | Barcode | Char | Triggers @api.onchange to populate product_id. |
product_id | Product | Many2one | → product.product. Auto-filled from barcode. |
qty | Quantity | Float | Default: 1.0. Must be > 0. |
lot_id | Lot / Serial | Many2one | → stock.lot. Visible when op requires lot/serial. |
The module extends two standard Odoo models to integrate manufacturing core data into existing workflows.
| Added Field | Type | Description |
|---|---|---|
drkds_station_id |
Many2one | Links the MO to a physical shopfloor station (drkds.shopfloor.station). Displayed as a field on the MO form, in the Work Orders tab or in a dedicated Shopfloor group. |
drkds_operator_notes |
Html | Rich-text field for production-specific operator instructions. Visible on the MO form and optionally surfaced on the shopfloor dashboard for the assigned station. |
| Added Field | Type | Description |
|---|---|---|
drkds_shopfloor_instructions |
Html | Per-product HTML instructions that describe how this product should be manufactured or handled on the shopfloor. Shown as a new tab Shopfloor on the product form. |
drkds_default_station_id |
Many2one | Default shopfloor station that will be auto-suggested when a Manufacturing Order is created for this product. Managers can override per MO. |
Settings are implemented by extending res.config.settings and adding a new <app> block in the MRP settings view.
# models/res_config_settings.py class ResConfigSettings(models.TransientModel): _inherit = 'res.config.settings' group_mfg_core_barcode = fields.Boolean( string='Enable Barcode Operations', implied_group='drkds_mfg_core.group_mfg_core_barcode_feature', ) group_mfg_core_shopfloor = fields.Boolean( string='Enable Shopfloor Dashboard', implied_group='drkds_mfg_core.group_mfg_core_shopfloor_feature', )
name= attribute on the <app> element. Never reuse name="mrp" — it causes a duplicate key OWL error. This module uses name="drkds_mfg_core".
Access rights are defined in security/ir.model.access.csv. The table below shows the full access matrix.
| Model | Group | Read | Write | Create | Delete |
|---|---|---|---|---|---|
drkds.station.type |
Operator | ✓ | – | – | – |
| Manager | ✓ | ✓ | ✓ | ✓ | |
drkds.shopfloor.station |
Operator | ✓ | – | – | – |
| Manager | ✓ | ✓ | ✓ | ✓ | |
drkds.barcode.operation |
Operator | ✓ | – | – | – |
| Manager | ✓ | ✓ | ✓ | ✓ | |
drkds.barcode.scan.wizard |
Operator + Manager | ✓ | ✓ | ✓ | ✓ |
stock.picking model.
Morning Station Setup
Manager creates and configures shopfloor stations before the production shift begins.
-
1Navigate to Station Types Manager
Go to Manufacturing → Shopfloor → Station Types. Verify the 6 default types are present. If a custom type is needed (e.g. "Painting"), click New, enter a name, code (e.g.PAINT), and pick a color. -
2Create Stations Manager
Navigate to Manufacturing → Shopfloor → Stations → New. Create three stations:- Assembly-01 — Type: Assembly, Code: A01, Capacity: 2, Workcenter: Assembly Line 1
- Welding-02 — Type: Welding, Code: W02, Capacity: 1, Workcenter: Welding Bay
- QC-01 — Type: Quality, Code: QC1, Capacity: 3, Workcenter: QC Bench
-
3Add Shopfloor Instructions Manager
On each station form, fill the Instructions tab with HTML content — safety guidelines, checklist items, or process notes. This will appear on the dashboard for operators. -
4Open Shopfloor Dashboard Operator
Navigate to Manufacturing → Shopfloor → Dashboard. All three stations appear as Kanban cards with their state (Available, green). The operator can see their assigned station's instructions without navigating away. -
5Operator Check-In Operator
The manager assignscurrent_operator_idon the station record (or the operator scans their badge barcode if that flow is configured). The station card on the dashboard shows the operator name.
Goods Receipt via Barcode
Warehouse operator uses the barcode scan wizard to receive a supplier shipment without opening the full stock module.
-
1Enable Barcode Operations Manager
Go to Manufacturing → Configuration → Settings. Ensure Enable Barcode Operations is checked. Save. -
2Configure a Receipt Operation Manager
Go to Manufacturing → Barcode Operations → Operations Config → New. Set:- Name: Quick Receipt — Dock A
- Type:
receipt - Picking Type: Receipts (WH/IN)
- Auto-Validate: ✓ checked
- Require Lot: unchecked (for this product)
-
3Open Scan Wizard Operator
Navigate to Manufacturing → Barcode Operations → Scan. The wizard dialog opens. -
4Select Operation & Scan Operator
Select Quick Receipt — Dock A from the Operation dropdown. Click into the Barcode field and scan the product barcode with a USB/BT scanner. The Product field auto-populates. -
5Enter Quantity & Confirm Operator
Enter the received quantity in the Qty field. Click Confirm. Because Auto-Validate is enabled, the stock transfer is created and validated instantly. A green success notification appears. No further action needed.
Manufacturing Order with Station Assignment
Production manager confirms an MO, assigns it to a station, and adds operator-specific instructions.
-
1Set Default Station on Product Manager
Open the product (e.g. Bearing Assembly) and go to the Shopfloor tab. Setdrkds_default_station_idto Assembly-01. Save. Now any MO for this product will suggest Assembly-01 automatically. -
2Create Manufacturing Order Manager
Go to Manufacturing → Manufacturing Orders → New. Select Bearing Assembly as the product. The Station field (drkds_station_id) auto-suggests Assembly-01. -
3Add Operator Notes Manager
In the Operator Notes field (drkds_operator_notes), type specific instructions for this production run, e.g.: "Use Loctite 243 on bolts. Torque to 25 Nm. QC sign-off required before packing." -
4Confirm MO Manager
Click Confirm. The MO state changes to In Progress. The linked station (Assembly-01) state automatically changes to busy and shows the MO reference on the shopfloor dashboard card. -
5Operator Views Instructions on Dashboard Operator
The operator at Assembly-01 opens the shopfloor dashboard and sees the station card in Busy state with the MO reference and the operator notes displayed. They follow the instructions and mark the MO done. -
6MO Completion — Station Returns Available Operator
When the MO is set to Done, the station state reverts to available (green) on the dashboard. The station is ready for the next order.
DRKDS Manufacturing Core v1.0.0 · Odoo 19 Community Edition · Generated February 2026
Module path: /home/odoo19/drkds_addons/drkds_mfg_core