Odoo 19.0 Community · Persistent

mrp.workcenter: fields, relations and API

The mrp.workcenter model ("Work Center") is a persistent model declared by the Manufacturing module, then extended by 1 other module. It exposes 59 fields, 34 of them declared directly on the model; 7 fields from other models point to it. Below you will find every field with its technical name, type, label and relations, followed by an Odoo 19 JSON-2 API call.

Model identity

Technical name
mrp.workcenter
Label
Work Center
Type
Persistent (models.Model)
SQL table
mrp_workcenter
Origin module
Manufacturing (mrp)
Extended by
mrp_account
Default order (_order)
sequence, id
Inherits from (mixins)
mail.threadresource.mixinanalytic.mixin

Model fields

34 own fields, 19 inherited from mixins and 6 automatic ORM fields. Click a name to get a direct link to that field.

59 of 59 fields shown

Technical nameLabelTypeDetails
activeActiveboolean

related: resource_id.active

alternative_workcenter_idsAlternative Workcenters

Alternative workcenters that can be substituted to this one in order to dispatch production

many2many
blocked_timeBlocked Time

Blocked hours over the last month

float
computed
capacity_idsProduct Capacities

Specific number of pieces that can be produced in parallel per product.

one2many

inverse: workcenter_id

codeCodechar
colorColorinteger
costs_hourCost per hour

Hourly processing cost.

float
costs_hour_account_idsCosts Hour Accountmany2many
computed, stored

added by Accounting - MRP (mrp_account)

currency_idCurrencymany2one
requiredread-only

related: company_id.currency_id

expense_account_idExpense Account

The expense is accounted for when the manufacturing order is marked as done. If not set, it is the expense account of the final product that will be used instead.

many2one

added by Accounting - MRP (mrp_account)

has_routing_linesHas Routing Lines

Technical field for workcenter views

boolean
computed
kanban_dashboard_graphKanban Dashboard Graphtext
computed
nameWork Centerchar

related: resource_id.name

noteDescriptionhtml
oeeOee

Overall Equipment Effectiveness, based on the last month

float
computed
oee_targetOEE Target

Overall Effective Efficiency Target in percentage

float
order_idsOrdersone2many

inverse: workcenter_id

performancePerformance

Performance over the last month

integer
computed
productive_timeProductive Time

Productive hours over the last month

float
computed
resource_calendar_idResource Calendarmany2one
routing_line_idsRouting Linesone2many

inverse: workcenter_id

sequenceSequence

Gives the sequence order when displaying a list of work centers.

integer
required
tag_idsTagmany2many
time_efficiencyTime Efficiencyfloat

related: resource_id.time_efficiency

time_idsTime Logsone2many

inverse: workcenter_id

time_startSetup Timefloat
time_stopCleanup Timefloat
workcenter_loadWork Center Loadfloat
computed
working_stateWorkcenter Statusselection
computed, stored

Values: normal (Normal), blocked (Blocked), done (In Progress)

workorder_blocked_countTotal Pending Ordersinteger
computed
workorder_count# Work Ordersinteger
computed
workorder_late_countTotal Late Ordersinteger
computed
workorder_progress_countTotal Running Ordersinteger
computed
workorder_ready_count# To Do Work Ordersinteger
computed
analytic_distributionAnalytic Distributionjson
computed, stored

inherited from analytic.mixin

analytic_precisionAnalytic Precisioninteger

inherited from analytic.mixin

company_idCompanymany2one

related: resource_id.company_id

inherited from resource.mixin

distribution_analytic_account_idsDistribution Analytic Accountmany2many
computed

inherited from analytic.mixin

has_messageHas Messageboolean
computed

inherited from mail.thread

message_attachment_countAttachment Countinteger
computed

inherited from mail.thread

message_follower_idsFollowersone2many

inverse: res_id

inherited from mail.thread

message_has_errorMessage Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_has_error_counterNumber of errors

Number of messages with delivery error

integer
computed

inherited from mail.thread

message_has_sms_errorSMS Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_idsMessagesone2many

inverse: res_id

inherited from mail.thread

message_is_followerIs Followerboolean
computed

inherited from mail.thread

message_needactionAction Needed

If checked, new messages require your attention.

boolean
computed

inherited from mail.thread

message_needaction_counterNumber of Actions

Number of messages requiring action

integer
computed

inherited from mail.thread

message_partner_idsFollowers (Partners)many2many
computed

inherited from mail.thread

rating_idsRatingsone2many

inverse: res_id

inherited from mail.thread

resource_idResourcemany2one
required

inherited from resource.mixin

tzTimezone

This field is used in order to define in which timezone the resources will work.

selection

related: resource_id.tz

inherited from resource.mixin

website_message_idsWebsite Messages

Website communication history

one2many

inverse: res_id

inherited from mail.thread

create_dateCreated ondatetime
read-onlyautomatic
create_uidCreated bymany2one
read-onlyautomatic
display_nameDisplay Namechar
read-onlycomputedautomatic
idIDinteger
read-onlyautomatic
write_dateLast Updated ondatetime
read-onlyautomatic
write_uidLast Updated bymany2one
read-onlyautomatic

Relations

Models linked from this model

Fields of other models pointing here

Reading this model through the API

Odoo 19 JSON-2 API call reading the first five records with real fields of the model. Replace the instance, database and API key with your own.

curl
curl -X POST "https://your-instance.odoo.com/json/2/mrp.workcenter/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["name","currency_id","sequence","expense_account_id","resource_calendar_id"],"limit":5}'
Python (requests)
import requests

BASE_URL = "https://your-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "your-db"}

res = requests.post(
    f"{BASE_URL}/mrp.workcenter/search_read",
    headers=headers,
    json={"domain": [], "fields": ["name","currency_id","sequence","expense_account_id","resource_calendar_id"], "limit": 5},
)
res.raise_for_status()
print(res.json())
  • External API access requires Odoo's Custom plan.
  • XML-RPC and JSON-RPC will be removed in Odoo 22 (fall 2028): use JSON-2.
  • The access rights and record rules of the key's user apply.

Cite this tool

Writing a tutorial, internal documentation or a forum answer? Copy this link to send your readers to the up-to-date reference.

<a href="https://aidoo.ai/en/outils/explorateur-modeles-odoo/mrp-workcenter">mrp.workcenter (Odoo 19.0)</a>

Sources

Data verified on September 23, 2026 · Odoo 19.0 Community

Have an Odoo project, or want to put your ERP to work with AI? Let's talk

Implementation, custom module development, connecting Claude or ChatGPT to your data: tell us about your context and we will reply within 24 business hours.