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 name | Label | Type | Details |
|---|---|---|---|
| active | Active | boolean | related: |
| alternative_workcenter_ids | Alternative Workcenters Alternative workcenters that can be substituted to this one in order to dispatch production | many2many | |
| blocked_time | Blocked Time Blocked hours over the last month | float | computed |
| capacity_ids | Product Capacities Specific number of pieces that can be produced in parallel per product. | one2many | inverse: |
| code | Code | char | |
| color | Color | integer | |
| costs_hour | Cost per hour Hourly processing cost. | float | |
| costs_hour_account_ids | Costs Hour Account | many2many | computed, stored added by Accounting - MRP ( |
| currency_id | Currency | many2one | requiredread-only related: |
| expense_account_id | Expense 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 ( |
| has_routing_lines | Has Routing Lines Technical field for workcenter views | boolean | computed |
| kanban_dashboard_graph | Kanban Dashboard Graph | text | computed |
| name | Work Center | char | related: |
| note | Description | html | |
| oee | Oee Overall Equipment Effectiveness, based on the last month | float | computed |
| oee_target | OEE Target Overall Effective Efficiency Target in percentage | float | |
| order_ids | Orders | one2many | inverse: |
| performance | Performance Performance over the last month | integer | computed |
| productive_time | Productive Time Productive hours over the last month | float | computed |
| resource_calendar_id | Resource Calendar | many2one | |
| routing_line_ids | Routing Lines | one2many | inverse: |
| sequence | Sequence Gives the sequence order when displaying a list of work centers. | integer | required |
| tag_ids | Tag | many2many | |
| time_efficiency | Time Efficiency | float | related: |
| time_ids | Time Logs | one2many | inverse: |
| time_start | Setup Time | float | |
| time_stop | Cleanup Time | float | |
| workcenter_load | Work Center Load | float | computed |
| working_state | Workcenter Status | selection | computed, stored Values: |
| workorder_blocked_count | Total Pending Orders | integer | computed |
| workorder_count | # Work Orders | integer | computed |
| workorder_late_count | Total Late Orders | integer | computed |
| workorder_progress_count | Total Running Orders | integer | computed |
| workorder_ready_count | # To Do Work Orders | integer | computed |
| analytic_distribution | Analytic Distribution | json | computed, stored inherited from analytic.mixin |
| analytic_precision | Analytic Precision | integer | inherited from analytic.mixin |
| company_id | Company | many2one | related: inherited from resource.mixin |
| distribution_analytic_account_ids | Distribution Analytic Account | many2many | computed inherited from analytic.mixin |
| has_message | Has Message | boolean | computed inherited from mail.thread |
| message_attachment_count | Attachment Count | integer | computed inherited from mail.thread |
| message_follower_ids | Followers | one2many | inverse: inherited from mail.thread |
| message_has_error | Message Delivery error If checked, some messages have a delivery error. | boolean | computed inherited from mail.thread |
| message_has_error_counter | Number of errors Number of messages with delivery error | integer | computed inherited from mail.thread |
| message_has_sms_error | SMS Delivery error If checked, some messages have a delivery error. | boolean | computed inherited from mail.thread |
| message_ids | Messages | one2many | inverse: inherited from mail.thread |
| message_is_follower | Is Follower | boolean | computed inherited from mail.thread |
| message_needaction | Action Needed If checked, new messages require your attention. | boolean | computed inherited from mail.thread |
| message_needaction_counter | Number of Actions Number of messages requiring action | integer | computed inherited from mail.thread |
| message_partner_ids | Followers (Partners) | many2many | computed inherited from mail.thread |
| rating_ids | Ratings | one2many | inverse: inherited from mail.thread |
| resource_id | Resource | many2one | required inherited from resource.mixin |
| tz | Timezone This field is used in order to define in which timezone the resources will work. | selection | related: inherited from resource.mixin |
| website_message_ids | Website Messages Website communication history | one2many | inverse: inherited from mail.thread |
| create_date | Created on | datetime | read-onlyautomatic |
| create_uid | Created by | many2one | read-onlyautomatic |
| display_name | Display Name | char | read-onlycomputedautomatic |
| id | ID | integer | read-onlyautomatic |
| write_date | Last Updated on | datetime | read-onlyautomatic |
| write_uid | Last Updated by | many2one | read-onlyautomatic |
Relations
Models linked from this model
- account.account: expense_account_id
- account.analytic.account: costs_hour_account_ids
- mrp.routing.workcenter: routing_line_ids
- mrp.workcenter: alternative_workcenter_ids
- mrp.workcenter.capacity: capacity_ids
- mrp.workcenter.productivity: time_ids
- mrp.workcenter.tag: tag_ids
- mrp.workorder: order_ids
- res.currency: currency_id
- resource.calendar: resource_calendar_id
Fields of other models pointing here
- account.analytic.account: workcenter_ids
- mrp.production: workcenter_id
- mrp.routing.workcenter: workcenter_id
- mrp.workcenter: alternative_workcenter_ids
- mrp.workcenter.capacity: workcenter_id
- mrp.workcenter.productivity: workcenter_id
- mrp.workorder: workcenter_id
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 -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}'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.