Per-operator start/stop on work orders with idle-time reasons, labor-cost roll-up into MO cost, and productivity KPIs. Built for Odoo 17/18/19. One-time license from $249.00 USD for Odoo 17, 18, 19 — includes 12 months of updates and support.

Per-operator start/stop on work orders with idle-time reasons, labor-cost roll-up into MO cost, and productivity KPIs. Built for Odoo 17/18/19.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
Odoo's core Manufacturing app records how long a work order stays "in progress" — but it can't tell you which operator did the work, how much of that time was genuinely productive versus idle, why the idle time happened, or what the direct labor actually cost. When two or three operators share one operation, or when a worker pauses for a material shortage or a machine jam, the native productivity log flattens everything into a single elapsed duration. Plant managers are then left costing direct labor from timesheets, spreadsheets, and guesswork.
Per-operator Start / Pause / Resume / Stop directly on `mrp.workorder`, so labor time is attributed to a named `hr.employee`, not just to the work order's elapsed clock.
Mandatory idle-reason capture on every pause — material wait, machine down, quality hold, changeover, break, meeting — driven by a configurable `operator.idle.reason` model you can extend without code.
Productive-vs-idle time split per log line via `@api.depends` computed fields, giving a true utilization figure instead of a single lumped duration.
Labor-cost roll-up that aggregates operator hours × rate up through the work order to `mrp.production`, so each Manufacturing Order carries its real direct-labor cost.
Configurable labor rates — flat company rate, per-work-center rate, or per-employee / per-grade rate — resolved at posting time and stored on the log for auditability.
Multi-operator on one operation: several `operator.time.log` records can attach to the same work order, correctly costing shared assemblies and operator-plus-helper setups.
Operator Time & Labor Productivity Tracking is a build-to-order Odoo module that ECOSIRE designs, builds, installs, and supports specifically for your shop floor. It extends mrp.workorder and the shift-floor tablet/kiosk view so every operator can start, pause, and stop their own labor against a work order — capturing productive time, idle time, and a mandatory reason for every stoppage. Those durations roll up through the ORM into the manufacturing order's real labor cost, and feed a set of productivity, efficiency, and idle-analysis dashboards that give plant managers a defensible, per-operator view of where their labor hours and labor dollars actually go.
Because this is a purpose-built module and not a generic app-store download, we model it around your operations: your work-center hierarchy, your shift patterns, your idle-reason taxonomy, your labor rates (flat, per-work-center, or per-employee-grade), and your reporting cadence. The result is delivered as clean, upgradeable Odoo code — new models with @api.depends computed fields, ir.model.access.csv and record rules for operator-vs-manager visibility, XML/OWL kiosk views, QWeb labor-cost reports, and JSON-RPC/XML-RPC endpoints if you need to feed the data to Power BI or an MES.
How it works under the hood. A dedicated operator.time.log model captures a start timestamp, stop timestamp, operator (hr.employee / res.users), work order, and an activity type (productive vs. idle) with an idle-reason Many2one. Computed fields (@api.depends on the timestamps and rate) derive productive hours, idle hours, and labor cost per log line; these aggregate up to the work order and then to mrp.production so the MO's total cost reflects true direct labor — not a nominal work-center average. Because multiple operator.time.log records can point at the same work order, genuine multi-operator operations (two people on one assembly, an operator plus a helper) are costed correctly instead of double-counting or under-counting a single "in progress" timer.
Operators interact through a stripped-down OWL kiosk screen — badge or select yourself, tap Start, tap Pause and pick a reason (material wait, machine down, quality hold, break, changeover, meeting), tap Resume, tap Done. Managers get server-side reporting: operator efficiency (productive vs. paid hours), utilization by work center and shift, a Pareto of idle reasons, and labor cost per MO / per product / per operator. Automated actions can flag a work order whose idle ratio crosses a threshold, or nudge a supervisor when an operator forgets to clock out.
Every deployment targets Odoo 17, 18, and 19 (Community or Enterprise — we confirm which edition your Manufacturing app runs on and build against it), ships with an install/config guide and operator training, and comes with a support-and-fixes window after go-live. You buy the outcome — a working, documented, supported labor-productivity capability inside your own Odoo — not a zip file you have to integrate yourself.
Owns direct-labor cost and throughput on the floor. Needs to know, per operator and per work center, how many paid hours turned into productive output versus idle time — and why the idle happened — so they can cost jobs accurately, justify headcount, and target the biggest sources of lost labor. This module gives them defensible per-operator numbers instead of timesheet estimates.
Responsible for accurate manufacturing cost. The native MO cost uses nominal work-center rates; this persona needs real direct-labor cost — actual operator hours × real rates — rolled into each Manufacturing Order and, optionally, posted to Analytic Accounts for job-costing and margin analysis.
Runs the shift and manages the operators. Needs a fast, tablet-friendly way for workers to clock on and off work orders, a live view of who is on what, and instant visibility when someone is idle too long or forgot to clock out — without adding paperwork that slows the line.
Drives OEE and waste reduction. Uses the idle-reason Pareto, efficiency %, and utilization-by-work-center data to find and eliminate the root causes of non-productive labor time — changeover losses, material waits, machine downtime — with real data rather than shop-floor anecdotes.
Buy the license on ecosire.com and download the Operator Time & Labor Productivity Tracking module ZIP from your account dashboard.
Extract the ZIP into your Odoo custom addons folder on the server (or upload via Apps > Install from file on Odoo.sh / runbot).
Activate Developer Mode, open Apps, click Update Apps List, search for Operator Time & Labor Productivity Tracking, and press Install.
Open the new menu, paste your ECOSIRE license key, connect any external credentials (Shopify, Amazon, Stripe, etc.), and save.
Run the built-in connection test, sync your first 10 records, and schedule the recurring cron. Contact support if anything fails.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Per-operator time attribution (named employee, not just a work-order timer) | ||||
| Mandatory idle-time capture with configurable reason codes | ||||
| Multiple operators costed correctly on one operation | ||||
| Real labor cost (operator hours × real rate) rolled into MO cost | ||||
| Idle-reason Pareto + efficiency/utilization KPI dashboards | ||||
| Built for YOUR shift calendar, rate scheme & idle taxonomy | ||||
| Odoo 17/18/19 + Community/Enterprise, upgradeable clean code | ||||
| Role-based visibility (operator sees own logs; manager sees floor) | ||||
| Delivered installed, configured, trained & supported | ||||
| JSON-RPC/XML-RPC feed to Power BI / MES |
This is a build-to-order module, not an instant download — nothing is shipped to you at checkout. Typical delivery is 2 to 4 weeks depending on scope. After purchase we run a short scoping call to confirm your Odoo version (17, 18 or 19), edition (Community vs. Enterprise), work-center and shift setup, idle-reason list, and labor-rate scheme. We then build the module, install and configure it in a staging instance for your review, adjust based on your feedback, and deploy to production with training. You get a working, documented capability inside your own Odoo — not a raw zip to integrate yourself.
Every build includes a post-go-live support-and-fixes window covering bug fixes and minor adjustments, with a defined response commitment agreed at scoping. Because we deliver clean, upgradeable module code (proper manifest, standard ORM patterns, no core hacks), it moves forward with your Odoo point releases; when you migrate across major versions (e.g. 18 to 19) we can quote a version-bump. Ongoing enhancements, extra integrations, or a longer maintenance retainer are available after the initial window — you own the code either way.
It works on both. The module extends the standard Manufacturing (`mrp`) app, which exists in Community and Enterprise, so we build against whichever edition and version (17/18/19) you run. We confirm your exact setup during scoping. If a feature you want depends on an Enterprise-only capability, we'll flag it up front rather than assume it.
Each operator session is stored as an `operator.time.log` record with start/stop timestamps, the operator, the work order, and productive-vs-idle status. Computed fields (`@api.depends`) derive hours and cost per log using the labor rate that applies to that operator or work center; those costs aggregate up through the work order to `mrp.production`, so the MO reflects real direct labor. Optionally the cost posts to an Odoo Analytic Account for job-costing. Because logs link to the work order — not a single global timer — multi-operator operations cost correctly.
Yes — that's a core design goal. Native Odoo runs a single 'in progress' clock per work order, which misrepresents shared work. Here, each operator opens their own `operator.time.log` against the same work order, so a two-person assembly or an operator-plus-helper is costed as the sum of their real hours. The module also prevents one operator from being productive on two orders at the same instant, so hours are never double-counted.
Yes. All models are exposed over Odoo's standard JSON-RPC and XML-RPC APIs, so Power BI, Grafana, an external MES, or a payroll system can pull operator hours, idle reasons, efficiency, and labor cost on a schedule. As part of delivery we can provide the endpoint/field spec and a sample query; a fuller custom integration (e.g. a pushed feed or a bespoke connector) can be scoped as an add-on.
No — it complements it. Odoo's native work-order productivity log (`mrp.workcenter.productivity`) stays intact; this module adds the operator dimension, the mandatory idle-reason capture, real labor-rate costing, and the analytics that core Odoo doesn't provide. We integrate cleanly with the standard work-order lifecycle rather than replacing it, so upgrades and other MRP add-ons keep working.
Per-operator start/stop on work orders with idle-time reasons, labor-cost roll-up into MO cost, and productivity KPIs. Built for Odoo 17/18/19.