mrp.production: fields, relations and API
The mrp.production model ("Manufacturing Order") is a persistent model declared by the Manufacturing module, then extended by 9 other modules. It exposes 125 fields, 95 of them declared directly on the model; 24 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.production- Label
- Manufacturing Order
- Type
- Persistent (models.Model)
- SQL table
mrp_production- Origin module
- Manufacturing (
mrp) - Extended by
- mrp_account, mrp_product_expiry, mrp_repair, mrp_subcontracting, mrp_subcontracting_account, purchase_mrp, project_mrp, project_mrp_account, sale_mrp
- Default order (_order)
priority desc, date_start asc,id- Inherits from (mixins)
- mail.threadmail.activity.mixinproduct.catalog.mixin
Model fields
95 own fields, 24 inherited from mixins and 6 automatic ORM fields. Click a name to get a direct link to that field.
125 of 125 fields shown
| Technical name | Label | Type | Details |
|---|---|---|---|
| all_move_ids | All Move | one2many | inverse: |
| all_move_raw_ids | All Move Raw | one2many | inverse: |
| allow_workorder_dependencies | Allow Work Order Dependencies | boolean | |
| allowed_uom_ids | Allowed Uom | many2many→ uom.uom | computed |
| backorder_sequence | Backorder Sequence Backorder sequence, if equals to 0 means there is not related backorder | integer | |
| bom_id | Bill of Material Bills of Materials, also called recipes, are used to autocomplete components and work order instructions. | many2one→ mrp.bom | computed, stored |
| bom_product_ids | Bom Product List of Products used in the BoM, used to filter the list of products in the subcontracting portal view | many2many | computed added by MRP Subcontracting ( |
| company_id | Company | many2one | required |
| components_availability | Component Status Latest component availability status for this MO. If green, then the MO's readiness status is ready, as per BOM configuration. | char | computed |
| components_availability_state | Components Availability State | selection | computed Values: |
| consumption | Consumption | selection | requiredread-only Values: |
| date_deadline | Deadline Informative date allowing to define when the manufacturing order should be processed at the latest to fulfill delivery on time. | datetime | computed, stored |
| date_finished | End Date you expect to finish production or actual date you finished production. | datetime | computed, stored |
| date_start | Start Date you plan to start production or date you actually started production. | datetime | required |
| delay_alert_date | Delay Alert Date | datetime | computed |
| delivery_count | Delivery Orders | integer | computed |
| duration | Real Duration Total real duration (in minutes) | float | computed |
| duration_expected | Expected Duration Total expected duration (in minutes) | float | computed |
| extra_cost | Extra Unit Cost | float | added by Accounting - MRP ( |
| finished_move_line_ids | Finished Product | one2many | computed |
| forecasted_issue | Forecasted Issue | boolean | computed |
| has_analytic_account | Has Analytic Account | boolean | computed added by MRP Account Project ( |
| incoming_picking | Incoming Picking | many2one | related: added by MRP Subcontracting ( |
| is_delayed | Is Delayed | boolean | computed |
| is_locked | Is Locked | boolean | |
| is_outdated_bom | Outdated BoM The BoM has been updated since creation of the MO | boolean | |
| is_planned | Its Operations are Planned | boolean | computed, stored |
| json_popover | JSON data for the popover widget | char | computed |
| location_dest_id | Finished Products Location Location where the system will stock the finished products. | many2one | requiredcomputed, stored |
| location_final_id | Final Location from procurement | many2one | |
| location_src_id | Components Location Location where the system will look for components. | many2one | requiredcomputed, stored |
| lot_producing_ids | Lot/Serial Number | many2many | |
| move_byproduct_ids | Move Byproduct | one2many | computed |
| move_dest_ids | Stock Movements of Produced Goods | one2many | inverse: |
| move_finished_ids | Finished Products | one2many | computed, stored inverse: |
| move_line_raw_ids | Detail Component | one2many | computed added by MRP Subcontracting ( |
| move_raw_ids | Components | one2many | computed, stored inverse: |
| mrp_production_backorder_count | Count of linked backorder | integer | computed |
| mrp_production_child_count | Number of generated MO | integer | computed |
| mrp_production_source_count | Number of source MO | integer | computed |
| name | Reference | char | read-only |
| never_product_template_attribute_value_ids | Never attribute values | many2many | |
| orderpoint_id | Orderpoint | many2one | |
| origin | Source Reference of the document that generated this production order request. | char | |
| picking_ids | Picking associated to this manufacturing order | many2many | computed |
| picking_type_id | Operation Type | many2one | requiredcomputed, stored |
| priority | Priority Components will be reserved first for the MO with the highest priorities. | selection | Values: |
| product_description_variants | Custom Description | char | |
| product_id | Product | many2one | requiredcomputed, stored |
| product_qty | Quantity To Produce | float | requiredcomputed, stored |
| product_tmpl_id | Product Template | many2one | related: |
| product_tracking | Product Tracking | selection | related: |
| product_uom_id | Unit | many2one→ uom.uom | requiredcomputed, stored |
| product_uom_qty | Total Quantity | float | computed, stored |
| product_variant_attributes | Product Variant Attributes | many2many | related: |
| production_capacity | Production Capacity Quantity that can be produced with the current stock of components | float | computed |
| production_group_id | Production Group | many2one | |
| production_location_id | Production Location | many2one | computed, stored |
| project_id | Project | many2one | computed, stored added by MRP Project ( |
| propagate_cancel | Propagate cancel and split If checked, when the previous move of the move (which was generated by a next procurement) is cancelled or split, the move generated by this move will too | boolean | |
| purchase_order_count | Count of generated PO | integer | computed added by Purchase and MRP Management ( |
| qty_produced | Quantity Produced | float | computed |
| qty_producing | Quantity Producing | float | |
| reference_ids | References | many2many | |
| repair_count | Count of source repairs | integer | computed added by Mrp Repairs ( |
| reservation_state | MO Readiness Manufacturing readiness for this MO, as per bill of material configuration: * Ready: The material is available to start the production. * Waiting: The material is not available to start the production. | selection | read-onlycomputed, stored Values: |
| reserve_visible | Allowed to Reserve Production Technical field to check when we can reserve quantities | boolean | computed |
| sale_line_id | Origin sale order line | many2one | added by Sales and MRP Management ( |
| sale_order_count | Count of Source SO | integer | computed added by Sales and MRP Management ( |
| scrap_count | Scrap Move | integer | computed |
| scrap_ids | Scraps | one2many | inverse: |
| search_date_category | Date Category | selection | read-only Values: |
| serial_numbers_count | Count of serial numbers | integer | computed |
| show_allocation | Show Allocation Technical Field used to decide whether the button "Allocation" should be displayed. | boolean | computed |
| show_final_lots | Show Final Lots | boolean | computed |
| show_generate_bom | Show Generate BOM | boolean | computed |
| show_lock | Show Lock/unlock buttons | boolean | computed |
| show_lot_ids | Display the serial number shortcut on the moves | boolean | computed |
| show_produce | Show Produce Technical field to check if produce button can be shown | boolean | computed |
| show_produce_all | Show Produce All Technical field to check if produce all button can be shown | boolean | computed |
| show_valuation | Show Valuation | boolean | computed added by Accounting - MRP ( |
| state | State * Draft: The MO is not confirmed yet. * Confirmed: The MO is confirmed, the stock rules and the reordering of the components are trigerred. * In Progress: The production has started (on the MO or on the WO). * To Close: The production is done, the MO has to be closed. * Done: The MO is closed, the stock moves are posted. * Cancelled: The MO has been cancelled, can't be confirmed anymore. | selection | read-onlycomputed, stored Values: |
| subcontracting_has_been_recorded | Has been recorded? | boolean | added by MRP Subcontracting ( |
| subcontractor_id | Subcontractor Used to restrict access to the portal user through Record Rules | many2one | added by MRP Subcontracting ( |
| unbuild_count | Number of Unbuilds | integer | computed |
| unbuild_ids | Unbuilds | one2many | inverse: |
| unreserve_visible | Allowed to Unreserve Production Technical field to check when we can unreserve | boolean | computed |
| use_create_components_lots | Use Create Components Lots | boolean | related: |
| user_id | Responsible | many2one | |
| valid_product_template_attribute_line_ids | Valid Product Template Attribute Line | many2many | related: |
| warehouse_id | Warehouse | many2one | related: |
| wip_move_count | WIP Journal Entry Count | integer | computed added by Accounting - MRP ( |
| wip_move_ids | Wip Move | many2many | added by Accounting - MRP ( |
| workcenter_id | Workcenter | many2one | |
| workorder_ids | Work Orders | one2many | computed, stored inverse: |
| activity_calendar_event_id | Next Activity Calendar Event | many2one | computed inherited from mail.activity.mixin |
| activity_date_deadline | Next Activity Deadline | date | read-onlycomputed inherited from mail.activity.mixin |
| activity_exception_decoration | Activity Exception Decoration Type of the exception activity on record. | selection | computed Values: inherited from mail.activity.mixin |
| activity_exception_icon | Icon Icon to indicate an exception activity. | char | computed inherited from mail.activity.mixin |
| activity_ids | Activities | one2many | inverse: inherited from mail.activity.mixin |
| activity_state | Activity State Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities. | selection | computed Values: inherited from mail.activity.mixin |
| activity_summary | Next Activity Summary | char | related: inherited from mail.activity.mixin |
| activity_type_icon | Activity Type Icon | char | related: inherited from mail.activity.mixin |
| activity_type_id | Next Activity Type | many2one | related: inherited from mail.activity.mixin |
| activity_user_id | Responsible User | many2one | read-onlycomputed inherited from mail.activity.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 |
| my_activity_date_deadline | My Activity Deadline | date | read-onlycomputed inherited from mail.activity.mixin |
| rating_ids | Ratings | one2many | inverse: inherited from mail.thread |
| 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.move: wip_move_ids
- mrp.bom: bom_id
- mrp.production.group: production_group_id
- mrp.unbuild: unbuild_ids
- mrp.workcenter: workcenter_id
- mrp.workorder: workorder_ids
- product.product: bom_product_ids, product_id
- product.template: product_tmpl_id
- product.template.attribute.line: valid_product_template_attribute_line_ids
- product.template.attribute.value: never_product_template_attribute_value_ids, product_variant_attributes
- project.project: project_id
- res.company: company_id
- res.partner: subcontractor_id
- res.users: user_id
- sale.order.line: sale_line_id
- stock.location: location_dest_id, location_final_id, location_src_id, production_location_id
- stock.lot: lot_producing_ids
- stock.move: all_move_ids, all_move_raw_ids, move_byproduct_ids, move_dest_ids, move_finished_ids, move_raw_ids
- stock.move.line: finished_move_line_ids, move_line_raw_ids
- stock.picking: incoming_picking, picking_ids
- stock.picking.type: picking_type_id
- stock.reference: reference_ids
- stock.scrap: scrap_ids
- stock.warehouse: warehouse_id
- stock.warehouse.orderpoint: orderpoint_id
- uom.uom: allowed_uom_ids, product_uom_id
Fields of other models pointing here
- account.analytic.account: production_ids
- account.move: wip_production_ids
- change.production.qty: mo_id
- expiry.picking.confirmation: production_ids
- mrp.account.wip.accounting: mo_ids
- mrp.consumption.warning: mrp_production_ids
- mrp.consumption.warning.line: mrp_production_id
- mrp.production.backorder: mrp_production_ids
- mrp.production.backorder.line: mrp_production_id
- mrp.production.serials: production_id
- mrp.production.split: production_id
- mrp.unbuild: mo_id
- mrp.workcenter.productivity: production_id
- mrp.workorder: production_id
- picking.label.type: production_ids
- res.partner: production_ids
- sale.order: mrp_production_ids
- stock.landed.cost: mrp_production_ids
- stock.move: created_production_id, production_id, raw_material_production_id
- stock.move.line: production_id
- stock.reference: production_ids
- stock.scrap: production_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.production/search_read" \
-H "Authorization: bearer $ODOO_API_KEY" \
-H "X-Odoo-Database: your-db" \
-H "Content-Type: application/json" \
-d '{"domain":[],"fields":["name","company_id","consumption","date_start","location_dest_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.production/search_read",
headers=headers,
json={"domain": [], "fields": ["name","company_id","consumption","date_start","location_dest_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-production">mrp.production (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.