| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/manufacture |
| GIT | |
| GIT | https://github.com/OCA/manufacture.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/manufacture/tree/19.0/mrp_multi_level |
| VERSION | |
| VERSION | 1.0.3 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| COMMITTERS | |
| COMMITTERS | Lois Rilo, JordiMForgeFlow, Weblate, OCA-git-bot, oca-ci, Hotdgo9 |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/manufacture |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:40:49 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/manufacture: - mrp_warehouse_calendar OCA/stock-logistics-warehouse: - stock_warehouse_calendar odoo/odoo: - mrp - product - base - base_setup - web - bus - web_tour - html_editor - uom - stock - barcodes_gs1_nomenclature - barcodes - digest - portal - http_routing - auth_signup - resource - purchase_stock - stock_account - account - onboarding - analytic - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module allows you to calculate, based in known inventory, demand, and supply, and based on parameters set at product variant level, the new procurements for each product. To do this, the calculation starts at top level of the bill of material and explodes this down to the lowest level. ## Key Features - MRP parameters set by product variant MRP area pairs. - Cron job to calculate the MRP demand. - Manually calculate the MRP demand. - Confirm the calculated MRP demand and create PO's, or MO's. - Able to see the products for which action is needed throught Planned Orders. - Integration with [Stock Demand Estimates](https://github.com/OCA/stock-logistics-warehouse/tree/12.0/stock_demand_estimate) system. Note: You need to install [mrp_multi_level_estimate module](https://github.com/OCA/manufacture/tree/12.0/mrp_multi_level_estimate). |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
mrp_area_form |
mrp.area.form | mrp.area | form | New |
mrp_area_list |
mrp.area.list | mrp.area | list | New |
mrp_inventory_form |
mrp.inventory.form | mrp.inventory | form | New |
mrp_inventory_list |
mrp.inventory.list | mrp.inventory | list | New |
mrp_inventory_search |
mrp.inventory.search | mrp.inventory | search | New |
mrp_move_view_form |
mrp.move.form | mrp.move | form | New |
mrp_move_view_list |
mrp.move.list | mrp.move | list | New |
mrp_planned_order_view_form |
mrp.planned.order.form | mrp.planned.order | form | New |
mrp_planned_order_view_list |
mrp.planned.order.list | mrp.planned.order | list | New |
mrp_planned_order_view_pivot |
mrp.planned.order.pivot | mrp.planned.order | pivot | New |
mrp_planned_order_view_search |
mrp.planned.order.search | mrp.planned.order | search | New |
product_mrp_area_form |
product.mrp.area.form | product.mrp.area | form | New |
product_mrp_area_list |
product.mrp.area.list | product.mrp.area | list | New |
product_mrp_area_search |
product.mrp.area.search | product.mrp.area | search | New |
product_template_only_form_view_mrp |
product.template.product.form.mrp | product.template | div | Inherits product.product_template_only_form_view |
view_location_form |
stock.location.form | stock.location | xpath | Inherits stock.view_location_form |
view_mrp_inventory_graph |
mrp.inventory.graph | mrp.inventory | graph | New |
view_mrp_inventory_pivot |
mrp.inventory.pivot | mrp.inventory | pivot | New |
view_mrp_inventory_procure_without_security |
mrp.inventory.procure.form - readonly qty | mrp.inventory.procure | field | Inherits view_mrp_inventory_procure_wizard |
view_mrp_inventory_procure_wizard |
mrp.inventory.procure.form | mrp.inventory.procure | form | New |
view_mrp_product_product_form |
view.product.mrp.area.product.form | product.product | div | Inherits product.product_normal_form_view |
view_run_mrp_multi_level_wizard |
Run MRP | mrp.multi.level | form | New |
active
Boolean
default=True
calendar_id
Many2one → resource.calendar
comodel_name='resource.calendar'
related='warehouse_id.calendar_id'
string='Working Hours'
company_id
Many2one → res.company
comodel_name='res.company'
related='warehouse_id.company_id'
store=True
location_id
Many2one → stock.location
comodel_name='stock.location'
required=True
string='Location'
name
Char
required=True
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
required=True
string='Warehouse'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
date
Date
demand_qty
Float
string='Demand'
final_on_hand_qty
Float
aggregator='avg'
string='Forecasted Inventory'
initial_on_hand_qty
Float
aggregator='avg'
string='Starting Inventory'
main_supplier_id
Many2one
readonly=True
related='product_mrp_area_id.main_supplier_id'
store=True
string='Main Supplier'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_planner_id
Many2one
readonly=True
related='product_mrp_area_id.mrp_planner_id'
store=True
order_release_date
Date
compute='_compute_order_release_date'
store=True
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='mrp_inventory_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product Parameters'
rfq_qty
Float
help='Quantity on Request for Quotation.\nThis quantity is included in the supply quantity but it is not confirmed yet.'
string='RfQ'
running_availability
Float
aggregator='avg'
help='Theoretical inventory level if all planned orders were released.'
string='Planned Availability'
supply_method
Selection
readonly=True
related='product_mrp_area_id.supply_method'
store=True
string='Supply Method'
supply_qty
Float
string='Supply'
to_procure
Float
compute='_compute_to_procure'
store=True
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
compute='_compute_uom_id'
string='Product UoM'
action_open_planned_orders(self)
action_open_rfqs(self)
item_ids
One2many → mrp.inventory.procure.item
comodel_name='mrp.inventory.procure.item'
inverse_name='wiz_id'
string='Items'
default_get(self, fields)
get_view(self, view_id=None, view_type='form', **options)
make_procurement(self)
date_planned
Date
required=True
string='Planned Date'
location_id
Many2one → stock.location
comodel_name='stock.location'
string='Location'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
string='Mrp Inventory'
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
qty
Float
string='Quantity'
supply_method
Selection
readonly=True
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
string='Unit of Measure'
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
string='Warehouse'
wiz_id
Many2one → mrp.inventory.procure
comodel_name='mrp.inventory.procure'
ondelete='cascade'
readonly=True
string='Wizard'
onchange_uom_id(self)
bom_id
Many2one → mrp.bom
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
current_date
Date
current_qty
Float
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_date
Date
string='MRP Date'
mrp_order_number
Char
string='Order Number'
mrp_origin
Selection
selection=[('mo', 'Manufacturing Order'), ('po', 'Purchase Order'), ('mv', 'Move'), ('fc', 'Forecast'), ('mrp', 'MRP')]
string='Origin'
mrp_qty
Float
string='MRP Quantity'
mrp_type
Selection
selection=[('s', 'Supply'), ('d', 'Demand')]
string='Type'
name
Char
string='Description'
origin
Char
string='Source Document'
parent_product_id
Many2one → product.product
comodel_name='product.product'
index=True
string='Parent Product'
planned_order_up_ids
Many2many → mrp.planned.order
column1='move_down_id'
column2='order_id'
comodel_name='mrp.planned.order'
relation='mrp_move_planned_order_rel'
string='Planned Orders UP'
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product MRP Area'
production_id
Many2one → mrp.production
comodel_name='mrp.production'
index=True
string='Manufacturing Order'
purchase_line_id
Many2one → purchase.order.line
comodel_name='purchase.order.line'
index=True
string='Purchase Order Line'
purchase_order_id
Many2one → purchase.order
comodel_name='purchase.order'
index=True
string='Purchase Order'
state
Selection
selection=[('draft', 'Draft'), ('assigned', 'Assigned'), ('confirmed', 'Confirmed'), ('waiting', 'Waiting'), ('partially_available', 'Partially Available'), ('ready', 'Ready'), ('sent', 'Sent'), ('to approve', 'To Approve'), ('approved', 'Approved')]
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
index=True
string='Stock Move'
No public methods.
mrp_area_ids
Many2many → mrp.area
comodel_name='mrp.area'
help='If empty, all areas will be computed.'
string='MRP Areas to run'
create_action(self, product_mrp_area_id, mrp_date, mrp_qty, name, values=None)
create_planned_order(self, product_mrp_area_id, mrp_qty, name, mrp_date_supply, mrp_action_date, values=None)
explode_action(self, product_mrp_area_id, mrp_action_date, name, qty, action, values=None)
run_mrp_multi_level(self)
should_build_time_phased_inventory(self, product_mrp_area)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
due_date
Date
help='Date in which the supply must have been completed.'
required=True
fixed
Boolean
default=True
mo_count
Integer
compute='_compute_mrp_production_count'
mrp_action
Selection
selection=[('manufacture', 'Manufacturing Order'), ('phantom', 'Kit'), ('buy', 'Purchase Order'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push'), ('none', 'None')]
string='Action'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
readonly=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
ondelete='set null'
string='Associated MRP Inventory'
mrp_move_down_ids
Many2many → mrp.move
column1='order_id'
column2='move_down_id'
comodel_name='mrp.move'
relation='mrp_move_planned_order_rel'
string='MRP Move DOWN'
mrp_planner_id
Many2one
readonly=True
related='product_mrp_area_id.mrp_planner_id'
store=True
mrp_production_ids
One2many → mrp.production
string='Manufacturing Orders'
args: 'mrp.production', 'planned_order_id'
mrp_qty
Float
string='Quantity'
name
Char
string='Description'
order_release_date
Date
help='Order release date planned by MRP.'
required=True
string='Release Date'
origin
Char
string='Source Document'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product MRP Area'
qty_released
Float
readonly=True
action_open_linked_mrp_production(self)
action_toggle_fixed(self)
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
index=True
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
comodel_name='res.company'
related='mrp_area_id.warehouse_id.company_id'
store=True
distribution_lead_time
Float
location_id
Many2one
related='mrp_area_id.location_id'
location_proc_id
Many2one → stock.location
comodel_name='stock.location'
domain="[('location_id', 'child_of', location_id)]"
help="Set this if you need to procure from a different locationthan area's location."
string='Procure Location'
main_supplier_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_main_supplier'
index=True
store=True
string='Main Supplier'
main_supplierinfo_id
Many2one → product.supplierinfo
comodel_name='product.supplierinfo'
compute='_compute_main_supplier'
store=True
string='Supplier Info'
mrp_applicable
Boolean
string='MRP Applicable'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
required=True
mrp_exclude
Boolean
string='Exclude from MRP'
mrp_inspection_delay
Integer
string='Inspection Delay'
mrp_lead_time
Float
compute='_compute_mrp_lead_time'
string='Lead Time'
mrp_maximum_order_qty
Float
default=0.0
string='Maximum Order Qty'
mrp_minimum_order_qty
Float
default=0.0
string='Minimum Order Qty'
mrp_minimum_stock
Float
string='Safety Stock'
mrp_move_ids
One2many → mrp.move
comodel_name='mrp.move'
inverse_name='product_mrp_area_id'
readonly=True
mrp_nbr_days
Integer
default=0
help='Number of days to group demand for this product during the MRP run, in order to determine the quantity to order.'
string='Nbr. Days'
mrp_planner_id
Many2one → res.users
mrp_qty_multiple
Float
default=1.0
string='Qty Multiple'
mrp_transit_delay
Integer
default=0
string='Transit Delay'
mrp_verified
Boolean
help='Identifies that this product has been verified to be valid for the MRP.'
string='Verified for MRP'
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='product_mrp_area_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
ondelete='cascade'
required=True
string='Product'
product_tmpl_id
Many2one → product.template
comodel_name='product.template'
readonly=True
related='product_id.product_tmpl_id'
store=True
qty_available
Float
compute='_compute_qty_available'
string='Quantity Available'
supply_bom_id
Many2one → mrp.bom
comodel_name='mrp.bom'
compute='_compute_supply_method'
string='Supply BoM'
supply_method
Selection
compute='_compute_supply_method'
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('phantom', 'Kit'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
action_view_incoming_stock_moves(self)
action_view_outgoing_stock_moves(self)
action_view_stock_moves(self, domain)
update_min_qty_from_main_supplier(self)
llc
Integer
default=0
index=True
string='Low Level Code'
manufacturing_order_ids
One2many → mrp.production
comodel_name='mrp.production'
domain=[('state', '=', 'draft')]
inverse_name='product_id'
string='Manufacturing Orders'
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_id'
string='MRP Area parameters'
purchase_order_line_ids
One2many → purchase.order.line
comodel_name='purchase.order.line'
inverse_name='product_id'
string='Purchase Orders'
action_view_mrp_area_parameters(self)
write(self, values)
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_tmpl_id'
string='MRP Area parameters'
action_view_mrp_area_parameters(self)
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
action_view_mrp_area_location(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/manufacture |
| GIT | |
| GIT | https://github.com/OCA/manufacture.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/manufacture/tree/18.0/mrp_multi_level |
| VERSION | |
| VERSION | 1.4.2 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| COMMITTERS | |
| COMMITTERS | Lois Rilo, Miquel Raïch, AaronHForgeFlow, Weblate, OCA-git-bot, oca-ci, RicardCForgeFlow, LauraCForgeFlow, JasminSForgeFlow, Camille Morand |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/manufacture |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:14 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/manufacture: - mrp_warehouse_calendar OCA/stock-logistics-warehouse: - stock_warehouse_calendar odoo/odoo: - mrp - product - base - base_setup - web - bus - web_tour - html_editor - uom - stock - barcodes_gs1_nomenclature - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource - purchase_stock - stock_account - account - onboarding - analytic - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module allows you to calculate, based in known inventory, demand, and supply, and based on parameters set at product variant level, the new procurements for each product. To do this, the calculation starts at top level of the bill of material and explodes this down to the lowest level. ## Key Features - MRP parameters set by product variant MRP area pairs. - Cron job to calculate the MRP demand. - Manually calculate the MRP demand. - Confirm the calculated MRP demand and create PO's, or MO's. - Able to see the products for which action is needed throught Planned Orders. - Integration with [Stock Demand Estimates](https://github.com/OCA/stock-logistics-warehouse/tree/12.0/stock_demand_estimate) system. Note: You need to install [mrp_multi_level_estimate module](https://github.com/OCA/manufacture/tree/12.0/mrp_multi_level_estimate). |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
mrp_area_form |
mrp.area.form | mrp.area | form | New |
mrp_area_list |
mrp.area.list | mrp.area | list | New |
mrp_inventory_form |
mrp.inventory.form | mrp.inventory | form | New |
mrp_inventory_list |
mrp.inventory.list | mrp.inventory | list | New |
mrp_inventory_search |
mrp.inventory.search | mrp.inventory | search | New |
mrp_move_view_form |
mrp.move.form | mrp.move | form | New |
mrp_move_view_list |
mrp.move.list | mrp.move | list | New |
mrp_planned_order_view_form |
mrp.planned.order.form | mrp.planned.order | form | New |
mrp_planned_order_view_list |
mrp.planned.order.list | mrp.planned.order | list | New |
mrp_planned_order_view_pivot |
mrp.planned.order.pivot | mrp.planned.order | pivot | New |
mrp_planned_order_view_search |
mrp.planned.order.search | mrp.planned.order | search | New |
product_mrp_area_form |
product.mrp.area.form | product.mrp.area | form | New |
product_mrp_area_list |
product.mrp.area.list | product.mrp.area | list | New |
product_mrp_area_search |
product.mrp.area.search | product.mrp.area | search | New |
product_template_only_form_view_mrp |
product.template.product.form.mrp | product.template | div | Inherits product.product_template_only_form_view |
view_location_form |
stock.location.form | stock.location | xpath | Inherits stock.view_location_form |
view_mrp_inventory_graph |
mrp.inventory.graph | mrp.inventory | graph | New |
view_mrp_inventory_pivot |
mrp.inventory.pivot | mrp.inventory | pivot | New |
view_mrp_inventory_procure_without_security |
mrp.inventory.procure.form - readonly qty | mrp.inventory.procure | field | Inherits view_mrp_inventory_procure_wizard |
view_mrp_inventory_procure_wizard |
mrp.inventory.procure.form | mrp.inventory.procure | form | New |
view_mrp_product_product_form |
view.product.mrp.area.product.form | product.product | div | Inherits product.product_normal_form_view |
view_run_mrp_multi_level_wizard |
Run MRP | mrp.multi.level | form | New |
active
Boolean
default=True
calendar_id
Many2one → resource.calendar
comodel_name='resource.calendar'
related='warehouse_id.calendar_id'
string='Working Hours'
company_id
Many2one → res.company
comodel_name='res.company'
related='warehouse_id.company_id'
store=True
location_id
Many2one → stock.location
comodel_name='stock.location'
required=True
string='Location'
name
Char
required=True
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
required=True
string='Warehouse'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
date
Date
demand_qty
Float
string='Demand'
final_on_hand_qty
Float
aggregator='avg'
string='Forecasted Inventory'
initial_on_hand_qty
Float
aggregator='avg'
string='Starting Inventory'
main_supplier_id
Many2one
readonly=True
related='product_mrp_area_id.main_supplier_id'
store=True
string='Main Supplier'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_planner_id
Many2one
readonly=True
related='product_mrp_area_id.mrp_planner_id'
store=True
order_release_date
Date
compute='_compute_order_release_date'
store=True
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='mrp_inventory_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product Parameters'
rfq_qty
Float
help='Quantity on Request for Quotation.\nThis quantity is included in the supply quantity but it is not confirmed yet.'
string='RfQ'
running_availability
Float
aggregator='avg'
help='Theoretical inventory level if all planned orders were released.'
string='Planned Availability'
supply_method
Selection
readonly=True
related='product_mrp_area_id.supply_method'
store=True
string='Supply Method'
supply_qty
Float
string='Supply'
to_procure
Float
compute='_compute_to_procure'
store=True
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
compute='_compute_uom_id'
string='Product UoM'
action_open_planned_orders(self)
action_open_rfqs(self)
item_ids
One2many → mrp.inventory.procure.item
comodel_name='mrp.inventory.procure.item'
inverse_name='wiz_id'
string='Items'
default_get(self, fields)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
make_procurement(self)
date_planned
Date
required=True
string='Planned Date'
location_id
Many2one → stock.location
comodel_name='stock.location'
string='Location'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
string='Mrp Inventory'
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
qty
Float
string='Quantity'
supply_method
Selection
readonly=True
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
string='Unit of Measure'
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
string='Warehouse'
wiz_id
Many2one → mrp.inventory.procure
comodel_name='mrp.inventory.procure'
ondelete='cascade'
readonly=True
string='Wizard'
onchange_uom_id(self)
bom_id
Many2one → mrp.bom
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
current_date
Date
current_qty
Float
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_date
Date
string='MRP Date'
mrp_order_number
Char
string='Order Number'
mrp_origin
Selection
selection=[('mo', 'Manufacturing Order'), ('po', 'Purchase Order'), ('mv', 'Move'), ('fc', 'Forecast'), ('mrp', 'MRP')]
string='Origin'
mrp_qty
Float
string='MRP Quantity'
mrp_type
Selection
selection=[('s', 'Supply'), ('d', 'Demand')]
string='Type'
name
Char
string='Description'
origin
Char
string='Source Document'
parent_product_id
Many2one → product.product
comodel_name='product.product'
index=True
string='Parent Product'
planned_order_up_ids
Many2many → mrp.planned.order
column1='move_down_id'
column2='order_id'
comodel_name='mrp.planned.order'
relation='mrp_move_planned_order_rel'
string='Planned Orders UP'
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product MRP Area'
production_id
Many2one → mrp.production
comodel_name='mrp.production'
index=True
string='Manufacturing Order'
purchase_line_id
Many2one → purchase.order.line
comodel_name='purchase.order.line'
index=True
string='Purchase Order Line'
purchase_order_id
Many2one → purchase.order
comodel_name='purchase.order'
index=True
string='Purchase Order'
state
Selection
selection=[('draft', 'Draft'), ('assigned', 'Assigned'), ('confirmed', 'Confirmed'), ('waiting', 'Waiting'), ('partially_available', 'Partially Available'), ('ready', 'Ready'), ('sent', 'Sent'), ('to approve', 'To Approve'), ('approved', 'Approved')]
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
index=True
string='Stock Move'
No public methods.
mrp_area_ids
Many2many → mrp.area
comodel_name='mrp.area'
help='If empty, all areas will be computed.'
string='MRP Areas to run'
create_action(self, product_mrp_area_id, mrp_date, mrp_qty, name, values=None)
create_planned_order(self, product_mrp_area_id, mrp_qty, name, mrp_date_supply, mrp_action_date, values=None)
explode_action(self, product_mrp_area_id, mrp_action_date, name, qty, action, values=None)
run_mrp_multi_level(self)
should_build_time_phased_inventory(self, product_mrp_area)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
due_date
Date
help='Date in which the supply must have been completed.'
required=True
fixed
Boolean
default=True
mo_count
Integer
compute='_compute_mrp_production_count'
mrp_action
Selection
selection=[('manufacture', 'Manufacturing Order'), ('phantom', 'Kit'), ('buy', 'Purchase Order'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push'), ('none', 'None')]
string='Action'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
readonly=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
ondelete='set null'
string='Associated MRP Inventory'
mrp_move_down_ids
Many2many → mrp.move
column1='order_id'
column2='move_down_id'
comodel_name='mrp.move'
relation='mrp_move_planned_order_rel'
string='MRP Move DOWN'
mrp_planner_id
Many2one
readonly=True
related='product_mrp_area_id.mrp_planner_id'
store=True
mrp_production_ids
One2many → mrp.production
string='Manufacturing Orders'
args: 'mrp.production', 'planned_order_id'
mrp_qty
Float
string='Quantity'
name
Char
string='Description'
order_release_date
Date
help='Order release date planned by MRP.'
required=True
string='Release Date'
origin
Char
string='Source Document'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product MRP Area'
qty_released
Float
readonly=True
action_open_linked_mrp_production(self)
action_toggle_fixed(self)
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
index=True
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
comodel_name='res.company'
related='mrp_area_id.warehouse_id.company_id'
store=True
distribution_lead_time
Float
location_id
Many2one
related='mrp_area_id.location_id'
location_proc_id
Many2one → stock.location
comodel_name='stock.location'
domain="[('location_id', 'child_of', location_id)]"
help="Set this if you need to procure from a different locationthan area's location."
string='Procure Location'
main_supplier_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_main_supplier'
index=True
store=True
string='Main Supplier'
main_supplierinfo_id
Many2one → product.supplierinfo
comodel_name='product.supplierinfo'
compute='_compute_main_supplier'
store=True
string='Supplier Info'
mrp_applicable
Boolean
string='MRP Applicable'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
required=True
mrp_exclude
Boolean
string='Exclude from MRP'
mrp_inspection_delay
Integer
string='Inspection Delay'
mrp_lead_time
Float
compute='_compute_mrp_lead_time'
string='Lead Time'
mrp_maximum_order_qty
Float
default=0.0
string='Maximum Order Qty'
mrp_minimum_order_qty
Float
default=0.0
string='Minimum Order Qty'
mrp_minimum_stock
Float
string='Safety Stock'
mrp_move_ids
One2many → mrp.move
comodel_name='mrp.move'
inverse_name='product_mrp_area_id'
readonly=True
mrp_nbr_days
Integer
default=0
help='Number of days to group demand for this product during the MRP run, in order to determine the quantity to order.'
string='Nbr. Days'
mrp_planner_id
Many2one → res.users
mrp_qty_multiple
Float
default=1.0
string='Qty Multiple'
mrp_transit_delay
Integer
default=0
string='Transit Delay'
mrp_verified
Boolean
help='Identifies that this product has been verified to be valid for the MRP.'
string='Verified for MRP'
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='product_mrp_area_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
ondelete='cascade'
required=True
string='Product'
product_tmpl_id
Many2one → product.template
comodel_name='product.template'
readonly=True
related='product_id.product_tmpl_id'
store=True
qty_available
Float
compute='_compute_qty_available'
string='Quantity Available'
supply_bom_id
Many2one → mrp.bom
comodel_name='mrp.bom'
compute='_compute_supply_method'
string='Supply BoM'
supply_method
Selection
compute='_compute_supply_method'
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('phantom', 'Kit'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
action_view_incoming_stock_moves(self)
action_view_outgoing_stock_moves(self)
action_view_stock_moves(self, domain)
update_min_qty_from_main_supplier(self)
llc
Integer
default=0
index=True
string='Low Level Code'
manufacturing_order_ids
One2many → mrp.production
comodel_name='mrp.production'
domain=[('state', '=', 'draft')]
inverse_name='product_id'
string='Manufacturing Orders'
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_id'
string='MRP Area parameters'
purchase_order_line_ids
One2many → purchase.order.line
comodel_name='purchase.order.line'
inverse_name='product_id'
string='Purchase Orders'
action_view_mrp_area_parameters(self)
write(self, values)
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_tmpl_id'
string='MRP Area parameters'
action_view_mrp_area_parameters(self)
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
action_view_mrp_area_location(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/manufacture |
| GIT | |
| GIT | https://github.com/OCA/manufacture.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/manufacture/tree/17.0/mrp_multi_level |
| VERSION | |
| VERSION | 1.4.1 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Lois Rilo, JordiMForgeFlow, Weblate, OCA-git-bot, oca-ci, RicardCForgeFlow, LauraCForgeFlow, AlexPForgeFlow, JasminSForgeFlow |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/manufacture |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:07 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/manufacture: - mrp_warehouse_calendar OCA/stock-logistics-warehouse: - stock_warehouse_calendar odoo/odoo: - mrp - product - base - base_setup - web - bus - web_tour - uom - stock - barcodes_gs1_nomenclature - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource - purchase_stock - stock_account - account - onboarding - analytic - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module allows you to calculate, based in known inventory, demand, and supply, and based on parameters set at product variant level, the new procurements for each product. To do this, the calculation starts at top level of the bill of material and explodes this down to the lowest level. ## Key Features - MRP parameters set by product variant MRP area pairs. - Cron job to calculate the MRP demand. - Manually calculate the MRP demand. - Confirm the calculated MRP demand and create PO's, or MO's. - Able to see the products for which action is needed throught Planned Orders. - Integration with [Stock Demand Estimates](https://github.com/OCA/stock-logistics-warehouse/tree/12.0/stock_demand_estimate) system. Note: You need to install [mrp_multi_level_estimate module](https://github.com/OCA/manufacture/tree/12.0/mrp_multi_level_estimate). |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
mrp_area_form |
mrp.area.form | mrp.area | form | New |
mrp_area_tree |
mrp.area.tree | mrp.area | tree | New |
mrp_inventory_form |
mrp.inventory.form | mrp.inventory | form | New |
mrp_inventory_search |
mrp.inventory.search | mrp.inventory | search | New |
mrp_inventory_tree |
mrp.inventory.tree | mrp.inventory | tree | New |
mrp_move_view_form |
mrp.move.form | mrp.move | form | New |
mrp_move_view_tree |
mrp.move.tree | mrp.move | tree | New |
mrp_planned_order_view_form |
mrp.planned.order.form | mrp.planned.order | form | New |
mrp_planned_order_view_pivot |
mrp.planned.order.pivot | mrp.planned.order | pivot | New |
mrp_planned_order_view_search |
mrp.planned.order.search | mrp.planned.order | search | New |
mrp_planned_order_view_tree |
mrp.planned.order.tree | mrp.planned.order | tree | New |
product_mrp_area_form |
product.mrp.area.form | product.mrp.area | form | New |
product_mrp_area_search |
product.mrp.area.search | product.mrp.area | search | New |
product_mrp_area_tree |
product.mrp.area.tree | product.mrp.area | tree | New |
product_template_only_form_view_mrp |
product.template.product.form.mrp | product.template | div | Inherits product.product_template_only_form_view |
view_location_form |
stock.location.form | stock.location | xpath | Inherits stock.view_location_form |
view_mrp_inventory_graph |
mrp.inventory.graph | mrp.inventory | graph | New |
view_mrp_inventory_pivot |
mrp.inventory.pivot | mrp.inventory | pivot | New |
view_mrp_inventory_procure_without_security |
mrp.inventory.procure.form - readonly qty | mrp.inventory.procure | field | Inherits view_mrp_inventory_procure_wizard |
view_mrp_inventory_procure_wizard |
mrp.inventory.procure.form | mrp.inventory.procure | form | New |
view_mrp_product_product_form |
view.product.mrp.area.product.form | product.product | div | Inherits product.product_normal_form_view |
view_run_mrp_multi_level_wizard |
Run MRP | mrp.multi.level | form | New |
active
Boolean
default=True
calendar_id
Many2one → resource.calendar
comodel_name='resource.calendar'
related='warehouse_id.calendar_id'
string='Working Hours'
company_id
Many2one → res.company
comodel_name='res.company'
related='warehouse_id.company_id'
store=True
location_id
Many2one → stock.location
comodel_name='stock.location'
required=True
string='Location'
name
Char
required=True
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
required=True
string='Warehouse'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
date
Date
demand_qty
Float
string='Demand'
final_on_hand_qty
Float
group_operator='avg'
string='Forecasted Inventory'
initial_on_hand_qty
Float
group_operator='avg'
string='Starting Inventory'
main_supplier_id
Many2one
readonly=True
related='product_mrp_area_id.main_supplier_id'
store=True
string='Main Supplier'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_planner_id
Many2one
readonly=True
related='product_mrp_area_id.mrp_planner_id'
store=True
order_release_date
Date
compute='_compute_order_release_date'
store=True
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='mrp_inventory_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product Parameters'
rfq_qty
Float
help='Quantity on Request for Quotation.\nThis quantity is included in the supply quantity but it is not confirmed yet.'
string='RfQ'
running_availability
Float
group_operator='avg'
help='Theoretical inventory level if all planned orders were released.'
string='Planned Availability'
supply_method
Selection
readonly=True
related='product_mrp_area_id.supply_method'
store=True
string='Supply Method'
supply_qty
Float
string='Supply'
to_procure
Float
compute='_compute_to_procure'
store=True
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
compute='_compute_uom_id'
string='Product UoM'
action_open_planned_orders(self)
action_open_rfqs(self)
item_ids
One2many → mrp.inventory.procure.item
comodel_name='mrp.inventory.procure.item'
inverse_name='wiz_id'
string='Items'
default_get(self, fields)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
make_procurement(self)
date_planned
Date
required=True
string='Planned Date'
location_id
Many2one → stock.location
comodel_name='stock.location'
string='Location'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
string='Mrp Inventory'
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
qty
Float
string='Quantity'
supply_method
Selection
readonly=True
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
string='Unit of Measure'
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
string='Warehouse'
wiz_id
Many2one → mrp.inventory.procure
comodel_name='mrp.inventory.procure'
ondelete='cascade'
readonly=True
string='Wizard'
onchange_uom_id(self)
bom_id
Many2one → mrp.bom
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
current_date
Date
current_qty
Float
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_date
Date
string='MRP Date'
mrp_order_number
Char
string='Order Number'
mrp_origin
Selection
selection=[('mo', 'Manufacturing Order'), ('po', 'Purchase Order'), ('mv', 'Move'), ('fc', 'Forecast'), ('mrp', 'MRP')]
string='Origin'
mrp_qty
Float
string='MRP Quantity'
mrp_type
Selection
selection=[('s', 'Supply'), ('d', 'Demand')]
string='Type'
name
Char
string='Description'
origin
Char
string='Source Document'
parent_product_id
Many2one → product.product
comodel_name='product.product'
index=True
string='Parent Product'
planned_order_up_ids
Many2many → mrp.planned.order
column1='move_down_id'
column2='order_id'
comodel_name='mrp.planned.order'
relation='mrp_move_planned_order_rel'
string='Planned Orders UP'
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product MRP Area'
production_id
Many2one → mrp.production
comodel_name='mrp.production'
index=True
string='Manufacturing Order'
purchase_line_id
Many2one → purchase.order.line
comodel_name='purchase.order.line'
index=True
string='Purchase Order Line'
purchase_order_id
Many2one → purchase.order
comodel_name='purchase.order'
index=True
string='Purchase Order'
state
Selection
selection=[('draft', 'Draft'), ('assigned', 'Assigned'), ('confirmed', 'Confirmed'), ('waiting', 'Waiting'), ('partially_available', 'Partially Available'), ('ready', 'Ready'), ('sent', 'Sent'), ('to approve', 'To Approve'), ('approved', 'Approved')]
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
index=True
string='Stock Move'
No public methods.
mrp_area_ids
Many2many → mrp.area
comodel_name='mrp.area'
help='If empty, all areas will be computed.'
string='MRP Areas to run'
create_action(self, product_mrp_area_id, mrp_date, mrp_qty, name, values=None)
create_planned_order(self, product_mrp_area_id, mrp_qty, name, mrp_date_supply, mrp_action_date, values=None)
explode_action(self, product_mrp_area_id, mrp_action_date, name, qty, action, values=None)
run_mrp_multi_level(self)
should_build_time_phased_inventory(self, product_mrp_area)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
due_date
Date
help='Date in which the supply must have been completed.'
required=True
fixed
Boolean
default=True
mo_count
Integer
compute='_compute_mrp_production_count'
mrp_action
Selection
selection=[('manufacture', 'Manufacturing Order'), ('phantom', 'Kit'), ('buy', 'Purchase Order'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push'), ('none', 'None')]
string='Action'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
readonly=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
ondelete='set null'
string='Associated MRP Inventory'
mrp_move_down_ids
Many2many → mrp.move
column1='order_id'
column2='move_down_id'
comodel_name='mrp.move'
relation='mrp_move_planned_order_rel'
string='MRP Move DOWN'
mrp_planner_id
Many2one
readonly=True
related='product_mrp_area_id.mrp_planner_id'
store=True
mrp_production_ids
One2many → mrp.production
string='Manufacturing Orders'
args: 'mrp.production', 'planned_order_id'
mrp_qty
Float
string='Quantity'
name
Char
string='Description'
order_release_date
Date
help='Order release date planned by MRP.'
required=True
string='Release Date'
origin
Char
string='Source Document'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product MRP Area'
qty_released
Float
readonly=True
action_open_linked_mrp_production(self)
action_toggle_fixed(self)
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
index=True
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
comodel_name='res.company'
related='mrp_area_id.warehouse_id.company_id'
store=True
distribution_lead_time
Float
location_id
Many2one
related='mrp_area_id.location_id'
location_proc_id
Many2one → stock.location
comodel_name='stock.location'
domain="[('location_id', 'child_of', location_id)]"
help="Set this if you need to procure from a different locationthan area's location."
string='Procure Location'
main_supplier_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_main_supplier'
index=True
store=True
string='Main Supplier'
main_supplierinfo_id
Many2one → product.supplierinfo
comodel_name='product.supplierinfo'
compute='_compute_main_supplier'
store=True
string='Supplier Info'
mrp_applicable
Boolean
string='MRP Applicable'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
required=True
mrp_exclude
Boolean
string='Exclude from MRP'
mrp_inspection_delay
Integer
string='Inspection Delay'
mrp_lead_time
Float
compute='_compute_mrp_lead_time'
string='Lead Time'
mrp_maximum_order_qty
Float
default=0.0
string='Maximum Order Qty'
mrp_minimum_order_qty
Float
default=0.0
string='Minimum Order Qty'
mrp_minimum_stock
Float
string='Safety Stock'
mrp_move_ids
One2many → mrp.move
comodel_name='mrp.move'
inverse_name='product_mrp_area_id'
readonly=True
mrp_nbr_days
Integer
default=0
help='Number of days to group demand for this product during the MRP run, in order to determine the quantity to order.'
string='Nbr. Days'
mrp_planner_id
Many2one → res.users
mrp_qty_multiple
Float
default=1.0
string='Qty Multiple'
mrp_transit_delay
Integer
default=0
string='Transit Delay'
mrp_verified
Boolean
help='Identifies that this product has been verified to be valid for the MRP.'
string='Verified for MRP'
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='product_mrp_area_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
ondelete='cascade'
required=True
string='Product'
product_tmpl_id
Many2one → product.template
comodel_name='product.template'
readonly=True
related='product_id.product_tmpl_id'
store=True
qty_available
Float
compute='_compute_qty_available'
string='Quantity Available'
supply_bom_id
Many2one → mrp.bom
comodel_name='mrp.bom'
compute='_compute_supply_method'
string='Supply BoM'
supply_method
Selection
compute='_compute_supply_method'
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('phantom', 'Kit'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
action_view_incoming_stock_moves(self)
action_view_outgoing_stock_moves(self)
action_view_stock_moves(self, domain)
update_min_qty_from_main_supplier(self)
llc
Integer
default=0
index=True
string='Low Level Code'
manufacturing_order_ids
One2many → mrp.production
comodel_name='mrp.production'
domain=[('state', '=', 'draft')]
inverse_name='product_id'
string='Manufacturing Orders'
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_id'
string='MRP Area parameters'
purchase_order_line_ids
One2many → purchase.order.line
comodel_name='purchase.order.line'
inverse_name='product_id'
string='Purchase Orders'
action_view_mrp_area_parameters(self)
write(self, values)
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_tmpl_id'
string='MRP Area parameters'
action_view_mrp_area_parameters(self)
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
action_view_mrp_area_location(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/manufacture |
| GIT | |
| GIT | https://github.com/OCA/manufacture.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/manufacture/tree/16.0/mrp_multi_level |
| VERSION | |
| VERSION | 1.7.1 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| COMMITTERS | |
| COMMITTERS | Lois Rilo, Jordi Ballester Alomar, JordiMForgeFlow, Weblate, OCA-git-bot, oca-ci, Matt Taylor, BernatPForgeFlow, joan, RicardCForgeFlow, DavidJForgeFlow, LauraCForgeFlow, AlexPForgeFlow |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/manufacture |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:50 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/manufacture: - mrp_warehouse_calendar OCA/stock-logistics-warehouse: - stock_warehouse_calendar odoo/odoo: - mrp - product - base - base_setup - web - bus - web_tour - uom - stock - barcodes_gs1_nomenclature - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource - purchase_stock - stock_account - account - analytic - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
mrp_area_form |
mrp.area.form | mrp.area | form | New |
mrp_area_tree |
mrp.area.tree | mrp.area | tree | New |
mrp_inventory_form |
mrp.inventory.form | mrp.inventory | form | New |
mrp_inventory_search |
mrp.inventory.search | mrp.inventory | search | New |
mrp_inventory_tree |
mrp.inventory.tree | mrp.inventory | tree | New |
mrp_move_view_form |
mrp.move.form | mrp.move | form | New |
mrp_move_view_tree |
mrp.move.tree | mrp.move | tree | New |
mrp_planned_order_view_form |
mrp.planned.order.form | mrp.planned.order | form | New |
mrp_planned_order_view_pivot |
mrp.planned.order.pivot | mrp.planned.order | pivot | New |
mrp_planned_order_view_search |
mrp.planned.order.search | mrp.planned.order | search | New |
mrp_planned_order_view_tree |
mrp.planned.order.tree | mrp.planned.order | tree | New |
product_mrp_area_form |
product.mrp.area.form | product.mrp.area | form | New |
product_mrp_area_search |
product.mrp.area.search | product.mrp.area | search | New |
product_mrp_area_tree |
product.mrp.area.tree | product.mrp.area | tree | New |
product_template_only_form_view_mrp |
product.template.product.form.mrp | product.template | div | Inherits product.product_template_only_form_view |
view_location_form |
stock.location.form | stock.location | xpath | Inherits stock.view_location_form |
view_mrp_inventory_graph |
mrp.inventory.graph | mrp.inventory | graph | New |
view_mrp_inventory_pivot |
mrp.inventory.pivot | mrp.inventory | pivot | New |
view_mrp_inventory_procure_without_security |
mrp.inventory.procure.form - readonly qty | mrp.inventory.procure | field | Inherits view_mrp_inventory_procure_wizard |
view_mrp_inventory_procure_wizard |
mrp.inventory.procure.form | mrp.inventory.procure | form | New |
view_mrp_product_product_form |
view.product.mrp.area.product.form | product.product | div | Inherits product.product_normal_form_view |
view_run_mrp_multi_level_wizard |
Run MRP | mrp.multi.level | form | New |
active
Boolean
default=True
calendar_id
Many2one → resource.calendar
comodel_name='resource.calendar'
related='warehouse_id.calendar_id'
string='Working Hours'
company_id
Many2one → res.company
comodel_name='res.company'
related='warehouse_id.company_id'
store=True
location_id
Many2one → stock.location
comodel_name='stock.location'
required=True
string='Location'
name
Char
required=True
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
required=True
string='Warehouse'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
date
Date
demand_qty
Float
string='Demand'
final_on_hand_qty
Float
group_operator='avg'
string='Forecasted Inventory'
initial_on_hand_qty
Float
group_operator='avg'
string='Starting Inventory'
main_supplier_id
Many2one
readonly=True
related='product_mrp_area_id.main_supplier_id'
store=True
string='Main Supplier'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_planner_id
Many2one
readonly=True
related='product_mrp_area_id.mrp_planner_id'
store=True
order_release_date
Date
compute='_compute_order_release_date'
store=True
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='mrp_inventory_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product Parameters'
rfq_qty
Float
help='Quantity on Request for Quotation.\nThis quantity is included in the supply quantity but it is not confirmed yet.'
string='RfQ'
running_availability
Float
group_operator='avg'
help='Theoretical inventory level if all planned orders were released.'
string='Planned Availability'
supply_method
Selection
readonly=True
related='product_mrp_area_id.supply_method'
store=True
string='Supply Method'
supply_qty
Float
string='Supply'
to_procure
Float
compute='_compute_to_procure'
store=True
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
compute='_compute_uom_id'
string='Product UoM'
action_open_planned_orders(self)
action_open_rfqs(self)
item_ids
One2many → mrp.inventory.procure.item
comodel_name='mrp.inventory.procure.item'
inverse_name='wiz_id'
string='Items'
default_get(self, fields)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
make_procurement(self)
date_planned
Date
required=True
string='Planned Date'
location_id
Many2one → stock.location
comodel_name='stock.location'
string='Location'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
string='Mrp Inventory'
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
qty
Float
string='Quantity'
supply_method
Selection
readonly=True
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
string='Unit of Measure'
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
string='Warehouse'
wiz_id
Many2one → mrp.inventory.procure
comodel_name='mrp.inventory.procure'
ondelete='cascade'
readonly=True
string='Wizard'
onchange_uom_id(self)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
current_date
Date
current_qty
Float
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_date
Date
string='MRP Date'
mrp_order_number
Char
string='Order Number'
mrp_origin
Selection
selection=[('mo', 'Manufacturing Order'), ('po', 'Purchase Order'), ('mv', 'Move'), ('fc', 'Forecast'), ('mrp', 'MRP')]
string='Origin'
mrp_qty
Float
string='MRP Quantity'
mrp_type
Selection
selection=[('s', 'Supply'), ('d', 'Demand')]
string='Type'
name
Char
string='Description'
origin
Char
string='Source Document'
parent_product_id
Many2one → product.product
comodel_name='product.product'
index=True
string='Parent Product'
planned_order_up_ids
Many2many → mrp.planned.order
column1='move_down_id'
column2='order_id'
comodel_name='mrp.planned.order'
relation='mrp_move_planned_order_rel'
string='Planned Orders UP'
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product MRP Area'
production_id
Many2one → mrp.production
comodel_name='mrp.production'
index=True
string='Manufacturing Order'
purchase_line_id
Many2one → purchase.order.line
comodel_name='purchase.order.line'
index=True
string='Purchase Order Line'
purchase_order_id
Many2one → purchase.order
comodel_name='purchase.order'
index=True
string='Purchase Order'
state
Selection
selection=[('draft', 'Draft'), ('assigned', 'Assigned'), ('confirmed', 'Confirmed'), ('waiting', 'Waiting'), ('partially_available', 'Partially Available'), ('ready', 'Ready'), ('sent', 'Sent'), ('to approve', 'To Approve'), ('approved', 'Approved')]
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
index=True
string='Stock Move'
No public methods.
mrp_area_ids
Many2many → mrp.area
comodel_name='mrp.area'
help='If empty, all areas will be computed.'
string='MRP Areas to run'
create_action(self, product_mrp_area_id, mrp_date, mrp_qty, name, values=None)
create_planned_order(self, product_mrp_area_id, mrp_qty, name, mrp_date_supply, mrp_action_date, values=None)
explode_action(self, product_mrp_area_id, mrp_action_date, name, qty, action, values=None)
run_mrp_multi_level(self)
should_build_time_phased_inventory(self, product_mrp_area)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
due_date
Date
help='Date in which the supply must have been completed.'
required=True
fixed
Boolean
default=True
mo_count
Integer
compute='_compute_mrp_production_count'
mrp_action
Selection
selection=[('manufacture', 'Manufacturing Order'), ('phantom', 'Kit'), ('buy', 'Purchase Order'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push'), ('none', 'None')]
string='Action'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
readonly=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
ondelete='set null'
string='Associated MRP Inventory'
mrp_move_down_ids
Many2many → mrp.move
column1='order_id'
column2='move_down_id'
comodel_name='mrp.move'
relation='mrp_move_planned_order_rel'
string='MRP Move DOWN'
mrp_planner_id
Many2one
readonly=True
related='product_mrp_area_id.mrp_planner_id'
store=True
mrp_production_ids
One2many → mrp.production
string='Manufacturing Orders'
args: 'mrp.production', 'planned_order_id'
mrp_qty
Float
string='Quantity'
name
Char
string='Description'
order_release_date
Date
help='Order release date planned by MRP.'
required=True
string='Release Date'
origin
Char
string='Source Document'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product MRP Area'
qty_released
Float
readonly=True
action_open_linked_mrp_production(self)
action_toggle_fixed(self)
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
index=True
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
comodel_name='res.company'
related='mrp_area_id.warehouse_id.company_id'
store=True
distribution_lead_time
Float
location_id
Many2one
related='mrp_area_id.location_id'
location_proc_id
Many2one → stock.location
comodel_name='stock.location'
domain="[('location_id', 'child_of', location_id)]"
help="Set this if you need to procure from a different locationthan area's location."
string='Procure Location'
main_supplier_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_main_supplier'
index=True
store=True
string='Main Supplier'
main_supplierinfo_id
Many2one → product.supplierinfo
comodel_name='product.supplierinfo'
compute='_compute_main_supplier'
store=True
string='Supplier Info'
mrp_applicable
Boolean
string='MRP Applicable'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
required=True
mrp_exclude
Boolean
string='Exclude from MRP'
mrp_inspection_delay
Integer
string='Inspection Delay'
mrp_lead_time
Float
compute='_compute_mrp_lead_time'
string='Lead Time'
mrp_maximum_order_qty
Float
default=0.0
string='Maximum Order Qty'
mrp_minimum_order_qty
Float
default=0.0
string='Minimum Order Qty'
mrp_minimum_stock
Float
string='Safety Stock'
mrp_move_ids
One2many → mrp.move
comodel_name='mrp.move'
inverse_name='product_mrp_area_id'
readonly=True
mrp_nbr_days
Integer
default=0
help='Number of days to group demand for this product during the MRP run, in order to determine the quantity to order.'
string='Nbr. Days'
mrp_planner_id
Many2one → res.users
mrp_qty_multiple
Float
default=1.0
string='Qty Multiple'
mrp_transit_delay
Integer
default=0
string='Transit Delay'
mrp_verified
Boolean
help='Identifies that this product has been verified to be valid for the MRP.'
string='Verified for MRP'
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='product_mrp_area_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
ondelete='cascade'
required=True
string='Product'
product_tmpl_id
Many2one → product.template
comodel_name='product.template'
readonly=True
related='product_id.product_tmpl_id'
store=True
qty_available
Float
compute='_compute_qty_available'
string='Quantity Available'
supply_bom_id
Many2one → mrp.bom
comodel_name='mrp.bom'
compute='_compute_supply_method'
string='Supply BoM'
supply_method
Selection
compute='_compute_supply_method'
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('phantom', 'Kit'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
action_view_incoming_stock_moves(self)
action_view_outgoing_stock_moves(self)
action_view_stock_moves(self, domain)
name_get(self)
update_min_qty_from_main_supplier(self)
llc
Integer
default=0
index=True
string='Low Level Code'
manufacturing_order_ids
One2many → mrp.production
comodel_name='mrp.production'
domain=[('state', '=', 'draft')]
inverse_name='product_id'
string='Manufacturing Orders'
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_id'
string='MRP Area parameters'
purchase_order_line_ids
One2many → purchase.order.line
comodel_name='purchase.order.line'
inverse_name='product_id'
string='Purchase Orders'
action_view_mrp_area_parameters(self)
write(self, values)
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_tmpl_id'
string='MRP Area parameters'
action_view_mrp_area_parameters(self)
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
action_view_mrp_area_location(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/manufacture |
| GIT | |
| GIT | https://github.com/OCA/manufacture.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/manufacture/tree/15.0/mrp_multi_level |
| VERSION | |
| VERSION | 1.12.8 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| COMMITTERS | |
| COMMITTERS | Alexandre Fayolle, Lois Rilo, OCA Transbot, Miquel Raïch, JordiMForgeFlow, AaronHForgeFlow, Weblate, OCA-git-bot, oca-ci, BernatPForgeFlow, Bernat Puig Font, RicardCForgeFlow |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/manufacture |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:36 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/manufacture: - mrp_warehouse_calendar OCA/stock-logistics-warehouse: - stock_warehouse_calendar odoo/odoo: - mrp - product - base - base_setup - web - bus - web_tour - uom - stock - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource - purchase_stock - stock_account - account - analytic - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
mrp_area_form |
mrp.area.form | mrp.area | form | New |
mrp_area_tree |
mrp.area.tree | mrp.area | tree | New |
mrp_inventory_form |
mrp.inventory.form | mrp.inventory | form | New |
mrp_inventory_search |
mrp.inventory.search | mrp.inventory | search | New |
mrp_inventory_tree |
mrp.inventory.tree | mrp.inventory | tree | New |
mrp_move_view_form |
mrp.move.form | mrp.move | form | New |
mrp_move_view_tree |
mrp.move.tree | mrp.move | tree | New |
mrp_planned_order_view_form |
mrp.planned.order.form | mrp.planned.order | form | New |
mrp_planned_order_view_pivot |
mrp.planned.order.pivot | mrp.planned.order | pivot | New |
mrp_planned_order_view_search |
mrp.planned.order.search | mrp.planned.order | search | New |
mrp_planned_order_view_tree |
mrp.planned.order.tree | mrp.planned.order | tree | New |
product_mrp_area_form |
product.mrp.area.form | product.mrp.area | form | New |
product_mrp_area_search |
product.mrp.area.search | product.mrp.area | search | New |
product_mrp_area_tree |
product.mrp.area.tree | product.mrp.area | tree | New |
product_template_only_form_view_mrp |
product.template.product.form.mrp | product.template | div | Inherits product.product_template_only_form_view |
view_location_form |
stock.location.form | stock.location | field | Inherits stock.view_location_form |
view_location_search |
stock.location.search | stock.location | field | Inherits stock.view_location_search |
view_location_tree2 |
stock.location.tree | stock.location | field | Inherits stock.view_location_tree2 |
view_mrp_inventory_graph |
mrp.inventory.graph | mrp.inventory | graph | New |
view_mrp_inventory_pivot |
mrp.inventory.pivot | mrp.inventory | pivot | New |
view_mrp_inventory_procure_without_security |
mrp.inventory.procure.form - readonly qty | mrp.inventory.procure | field | Inherits view_mrp_inventory_procure_wizard |
view_mrp_inventory_procure_wizard |
mrp.inventory.procure.form | mrp.inventory.procure | form | New |
view_mrp_product_product_form |
view.product.mrp.area.product.form | product.product | div | Inherits product.product_normal_form_view |
view_run_mrp_multi_level_wizard |
Run MRP | mrp.multi.level | form | New |
active
Boolean
default=True
calendar_id
Many2one → resource.calendar
comodel_name='resource.calendar'
related='warehouse_id.calendar_id'
string='Working Hours'
company_id
Many2one → res.company
comodel_name='res.company'
related='warehouse_id.company_id'
store=True
location_id
Many2one → stock.location
comodel_name='stock.location'
required=True
string='Location'
name
Char
required=True
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
required=True
string='Warehouse'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
date
Date
demand_qty
Float
string='Demand'
final_on_hand_qty
Float
group_operator='avg'
string='Forecasted Inventory'
initial_on_hand_qty
Float
group_operator='avg'
string='Starting Inventory'
main_supplier_id
Many2one
readonly=True
related='product_mrp_area_id.main_supplier_id'
store=True
string='Main Supplier'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_planner_id
Many2one
readonly=True
related='product_mrp_area_id.mrp_planner_id'
store=True
order_release_date
Date
compute='_compute_order_release_date'
store=True
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='mrp_inventory_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product Parameters'
running_availability
Float
group_operator='avg'
help='Theoretical inventory level if all planned orders were released.'
string='Planned Availability'
supply_method
Selection
readonly=True
related='product_mrp_area_id.supply_method'
store=True
string='Supply Method'
supply_qty
Float
string='Supply'
to_procure
Float
compute='_compute_to_procure'
store=True
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
compute='_compute_uom_id'
string='Product UoM'
action_open_planned_orders(self)
item_ids
One2many → mrp.inventory.procure.item
comodel_name='mrp.inventory.procure.item'
inverse_name='wiz_id'
string='Items'
default_get(self, fields)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
make_procurement(self)
date_planned
Date
required=True
string='Planned Date'
location_id
Many2one → stock.location
comodel_name='stock.location'
string='Location'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
string='Mrp Inventory'
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
qty
Float
string='Quantity'
supply_method
Selection
readonly=True
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
string='Unit of Measure'
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
string='Warehouse'
wiz_id
Many2one → mrp.inventory.procure
comodel_name='mrp.inventory.procure'
ondelete='cascade'
readonly=True
string='Wizard'
onchange_uom_id(self)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
current_date
Date
current_qty
Float
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_date
Date
string='MRP Date'
mrp_order_number
Char
string='Order Number'
mrp_origin
Selection
selection=[('mo', 'Manufacturing Order'), ('po', 'Purchase Order'), ('mv', 'Move'), ('fc', 'Forecast'), ('mrp', 'MRP')]
string='Origin'
mrp_qty
Float
string='MRP Quantity'
mrp_type
Selection
selection=[('s', 'Supply'), ('d', 'Demand')]
string='Type'
name
Char
string='Description'
origin
Char
string='Source Document'
parent_product_id
Many2one → product.product
comodel_name='product.product'
index=True
string='Parent Product'
planned_order_up_ids
Many2many → mrp.planned.order
column1='move_down_id'
column2='order_id'
comodel_name='mrp.planned.order'
relation='mrp_move_planned_order_rel'
string='Planned Orders UP'
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product MRP Area'
production_id
Many2one → mrp.production
comodel_name='mrp.production'
index=True
string='Manufacturing Order'
purchase_line_id
Many2one → purchase.order.line
comodel_name='purchase.order.line'
index=True
string='Purchase Order Line'
purchase_order_id
Many2one → purchase.order
comodel_name='purchase.order'
index=True
string='Purchase Order'
state
Selection
selection=[('draft', 'Draft'), ('assigned', 'Assigned'), ('confirmed', 'Confirmed'), ('waiting', 'Waiting'), ('partially_available', 'Partially Available'), ('ready', 'Ready'), ('sent', 'Sent'), ('to approve', 'To Approve'), ('approved', 'Approved')]
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
index=True
string='Stock Move'
No public methods.
mrp_area_ids
Many2many → mrp.area
comodel_name='mrp.area'
help='If empty, all areas will be computed.'
string='MRP Areas to run'
create_action(self, product_mrp_area_id, mrp_date, mrp_qty, name, values=None)
create_planned_order(self, product_mrp_area_id, mrp_qty, name, mrp_date_supply, mrp_action_date, values=None)
explode_action(self, product_mrp_area_id, mrp_action_date, name, qty, action, values=None)
run_mrp_multi_level(self)
should_build_time_phased_inventory(self, product_mrp_area)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
due_date
Date
help='Date in which the supply must have been completed.'
required=True
fixed
Boolean
default=True
mo_count
Integer
compute='_compute_mrp_production_count'
mrp_action
Selection
selection=[('manufacture', 'Manufacturing Order'), ('phantom', 'Kit'), ('buy', 'Purchase Order'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push'), ('none', 'None')]
string='Action'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
readonly=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
ondelete='set null'
string='Associated MRP Inventory'
mrp_move_down_ids
Many2many → mrp.move
column1='order_id'
column2='move_down_id'
comodel_name='mrp.move'
relation='mrp_move_planned_order_rel'
string='MRP Move DOWN'
mrp_planner_id
Many2one
readonly=True
related='product_mrp_area_id.mrp_planner_id'
store=True
mrp_production_ids
One2many → mrp.production
string='Manufacturing Orders'
args: 'mrp.production', 'planned_order_id'
mrp_qty
Float
string='Quantity'
name
Char
string='Description'
order_release_date
Date
help='Order release date planned by MRP.'
required=True
string='Release Date'
origin
Char
string='Source Document'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product MRP Area'
qty_released
Float
readonly=True
action_open_linked_mrp_production(self)
action_toggle_fixed(self)
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
index=True
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
comodel_name='res.company'
related='mrp_area_id.warehouse_id.company_id'
store=True
distribution_lead_time
Float
location_id
Many2one
related='mrp_area_id.location_id'
location_proc_id
Many2one → stock.location
comodel_name='stock.location'
domain="[('location_id', 'child_of', location_id)]"
help="Set this if you need to procure from a different locationthan area's location."
string='Procure Location'
main_supplier_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_main_supplier'
index=True
store=True
string='Main Supplier'
main_supplierinfo_id
Many2one → product.supplierinfo
comodel_name='product.supplierinfo'
compute='_compute_main_supplier'
store=True
string='Supplier Info'
mrp_applicable
Boolean
string='MRP Applicable'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
required=True
mrp_exclude
Boolean
string='Exclude from MRP'
mrp_inspection_delay
Integer
string='Inspection Delay'
mrp_lead_time
Float
compute='_compute_mrp_lead_time'
string='Lead Time'
mrp_maximum_order_qty
Float
default=0.0
string='Maximum Order Qty'
mrp_minimum_order_qty
Float
default=0.0
string='Minimum Order Qty'
mrp_minimum_stock
Float
string='Safety Stock'
mrp_move_ids
One2many → mrp.move
comodel_name='mrp.move'
inverse_name='product_mrp_area_id'
readonly=True
mrp_nbr_days
Integer
default=0
help='Number of days to group demand for this product during the MRP run, in order to determine the quantity to order.'
string='Nbr. Days'
mrp_planner_id
Many2one → res.users
mrp_qty_multiple
Float
default=1.0
string='Qty Multiple'
mrp_transit_delay
Integer
default=0
string='Transit Delay'
mrp_verified
Boolean
help='Identifies that this product has been verified to be valid for the MRP.'
string='Verified for MRP'
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='product_mrp_area_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
ondelete='cascade'
required=True
string='Product'
product_tmpl_id
Many2one → product.template
comodel_name='product.template'
readonly=True
related='product_id.product_tmpl_id'
store=True
qty_available
Float
compute='_compute_qty_available'
string='Quantity Available'
supply_bom_id
Many2one → mrp.bom
comodel_name='mrp.bom'
compute='_compute_supply_method'
string='Supply BoM'
supply_method
Selection
compute='_compute_supply_method'
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('phantom', 'Kit'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
action_view_incoming_stock_moves(self)
action_view_outgoing_stock_moves(self)
action_view_stock_moves(self, domain)
name_get(self)
update_min_qty_from_main_supplier(self)
llc
Integer
default=0
index=True
string='Low Level Code'
manufacturing_order_ids
One2many → mrp.production
comodel_name='mrp.production'
domain=[('state', '=', 'draft')]
inverse_name='product_id'
string='Manufacturing Orders'
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_id'
string='MRP Area parameters'
purchase_order_line_ids
One2many → purchase.order.line
comodel_name='purchase.order.line'
inverse_name='product_id'
string='Purchase Orders'
action_view_mrp_area_parameters(self)
write(self, values)
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_tmpl_id'
string='MRP Area parameters'
action_view_mrp_area_parameters(self)
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
help='Requirements for a particular MRP area are combined for the purposes of procurement by the MRP.'
string='MRP Area'
No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/manufacture |
| GIT | |
| GIT | https://github.com/OCA/manufacture.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/manufacture/tree/14.0/mrp_multi_level |
| VERSION | |
| VERSION | 1.15.0 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| COMMITTERS | |
| COMMITTERS | Lois Rilo, Jordi Ballester, OCA Transbot, Miquel Raïch, Sébastien Alix, oca-travis, Weblate, OCA-git-bot, oca-ci, davidborromeo, BernatPForgeFlow, Alessandro Uffreduzzi, Bernat Puig Font, oca-git-bot |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/manufacture |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:41:03 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/manufacture: - mrp_warehouse_calendar OCA/stock-logistics-warehouse: - stock_warehouse_calendar odoo/odoo: - mrp - product - base - base_setup - web - bus - web_tour - uom - stock - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource - purchase_stock - stock_account - account - analytic - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
mrp_area_form |
mrp.area.form | mrp.area | form | New |
mrp_area_tree |
mrp.area.tree | mrp.area | tree | New |
mrp_inventory_form |
mrp.inventory.form | mrp.inventory | form | New |
mrp_inventory_search |
mrp.inventory.search | mrp.inventory | search | New |
mrp_inventory_tree |
mrp.inventory.tree | mrp.inventory | tree | New |
mrp_move_view_form |
mrp.move.form | mrp.move | form | New |
mrp_move_view_tree |
mrp.move.tree | mrp.move | tree | New |
mrp_planned_order_view_form |
mrp.planned.order.form | mrp.planned.order | form | New |
mrp_planned_order_view_pivot |
mrp.planned.order.pivot | mrp.planned.order | pivot | New |
mrp_planned_order_view_search |
mrp.planned.order.search | mrp.planned.order | search | New |
mrp_planned_order_view_tree |
mrp.planned.order.tree | mrp.planned.order | tree | New |
product_mrp_area_form |
product.mrp.area.form | product.mrp.area | form | New |
product_mrp_area_search |
product.mrp.area.search | product.mrp.area | search | New |
product_mrp_area_tree |
product.mrp.area.tree | product.mrp.area | tree | New |
product_template_only_form_view_mrp |
product.template.product.form.mrp | product.template | div | Inherits product.product_template_only_form_view |
view_location_form |
stock.location.form | stock.location | field | Inherits stock.view_location_form |
view_location_search |
stock.location.search | stock.location | field | Inherits stock.view_location_search |
view_location_tree2 |
stock.location.tree | stock.location | field | Inherits stock.view_location_tree2 |
view_mrp_inventory_graph |
mrp.inventory.graph | mrp.inventory | graph | New |
view_mrp_inventory_pivot |
mrp.inventory.pivot | mrp.inventory | pivot | New |
view_mrp_inventory_procure_without_security |
mrp.inventory.procure.form - readonly qty | mrp.inventory.procure | field | Inherits view_mrp_inventory_procure_wizard |
view_mrp_inventory_procure_wizard |
mrp.inventory.procure.form | mrp.inventory.procure | form | New |
view_mrp_product_product_form |
view.product.mrp.area.product.form | product.product | div | Inherits product.product_normal_form_view |
view_run_mrp_multi_level_wizard |
Run MRP | mrp.multi.level | form | New |
active
Boolean
default=True
calendar_id
Many2one → resource.calendar
comodel_name='resource.calendar'
related='warehouse_id.calendar_id'
string='Working Hours'
company_id
Many2one → res.company
comodel_name='res.company'
related='warehouse_id.company_id'
store=True
location_id
Many2one → stock.location
comodel_name='stock.location'
required=True
string='Location'
name
Char
required=True
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
required=True
string='Warehouse'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
date
Date
string='Date'
demand_qty
Float
string='Demand'
final_on_hand_qty
Float
group_operator='avg'
string='Forecasted Inventory'
initial_on_hand_qty
Float
group_operator='avg'
string='Starting Inventory'
main_supplier_id
Many2one
readonly=True
related='product_mrp_area_id.main_supplier_id'
store=True
string='Main Supplier'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_planner_id
Many2one
readonly=True
related='product_mrp_area_id.mrp_planner_id'
store=True
order_release_date
Date
compute='_compute_order_release_date'
store=True
string='Order Release Date'
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='mrp_inventory_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product Parameters'
running_availability
Float
group_operator='avg'
help='Theoretical inventory level if all planned orders were released.'
string='Planned Availability'
supply_method
Selection
readonly=True
related='product_mrp_area_id.supply_method'
store=True
string='Supply Method'
supply_qty
Float
string='Supply'
to_procure
Float
compute='_compute_to_procure'
store=True
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
compute='_compute_uom_id'
string='Product UoM'
action_open_planned_orders(self)
item_ids
One2many → mrp.inventory.procure.item
comodel_name='mrp.inventory.procure.item'
inverse_name='wiz_id'
string='Items'
default_get(self, fields)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
make_procurement(self)
date_planned
Date
required=True
string='Planned Date'
location_id
Many2one → stock.location
comodel_name='stock.location'
string='Location'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
string='Mrp Inventory'
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
qty
Float
string='Quantity'
supply_method
Selection
readonly=True
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
string='Supply Method'
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
string='Unit of Measure'
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
string='Warehouse'
wiz_id
Many2one → mrp.inventory.procure
comodel_name='mrp.inventory.procure'
ondelete='cascade'
readonly=True
string='Wizard'
onchange_uom_id(self)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
current_date
Date
string='Current Date'
current_qty
Float
string='Current Qty'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_date
Date
string='MRP Date'
mrp_order_number
Char
string='Order Number'
mrp_origin
Selection
selection=[('mo', 'Manufacturing Order'), ('po', 'Purchase Order'), ('mv', 'Move'), ('fc', 'Forecast'), ('mrp', 'MRP')]
string='Origin'
mrp_qty
Float
string='MRP Quantity'
mrp_type
Selection
selection=[('s', 'Supply'), ('d', 'Demand')]
string='Type'
name
Char
string='Description'
origin
Char
string='Source Document'
parent_product_id
Many2one → product.product
comodel_name='product.product'
index=True
string='Parent Product'
planned_order_up_ids
Many2many → mrp.planned.order
column1='move_down_id'
column2='order_id'
comodel_name='mrp.planned.order'
relation='mrp_move_planned_order_rel'
string='Planned Orders UP'
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product MRP Area'
production_id
Many2one → mrp.production
comodel_name='mrp.production'
index=True
string='Manufacturing Order'
purchase_line_id
Many2one → purchase.order.line
comodel_name='purchase.order.line'
index=True
string='Purchase Order Line'
purchase_order_id
Many2one → purchase.order
comodel_name='purchase.order'
index=True
string='Purchase Order'
state
Selection
selection=[('draft', 'Draft'), ('assigned', 'Assigned'), ('confirmed', 'Confirmed'), ('waiting', 'Waiting'), ('partially_available', 'Partially Available'), ('ready', 'Ready'), ('sent', 'Sent'), ('to approve', 'To Approve'), ('approved', 'Approved')]
string='State'
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
index=True
string='Stock Move'
No public methods.
mrp_area_ids
Many2many → mrp.area
comodel_name='mrp.area'
help='If empty, all areas will be computed.'
string='MRP Areas to run'
create_action(self, product_mrp_area_id, mrp_date, mrp_qty, name, values=None)
create_planned_order(self, product_mrp_area_id, mrp_qty, name, mrp_date_supply, mrp_action_date, values=None)
explode_action(self, product_mrp_area_id, mrp_action_date, name, qty, action, values=None)
run_mrp_multi_level(self)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
due_date
Date
help='Date in which the supply must have been completed.'
required=True
string='Due Date'
fixed
Boolean
default=True
mo_count
Integer
compute='_compute_mrp_production_count'
mrp_action
Selection
selection=[('manufacture', 'Manufacturing Order'), ('buy', 'Purchase Order'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push'), ('none', 'None')]
string='Action'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
readonly=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
ondelete='set null'
string='Associated MRP Inventory'
mrp_move_down_ids
Many2many → mrp.move
column1='order_id'
column2='move_down_id'
comodel_name='mrp.move'
relation='mrp_move_planned_order_rel'
string='MRP Move DOWN'
mrp_planner_id
Many2one
readonly=True
related='product_mrp_area_id.mrp_planner_id'
store=True
mrp_production_ids
One2many → mrp.production
string='Manufacturing Orders'
args: 'mrp.production', 'planned_order_id'
mrp_qty
Float
string='Quantity'
name
Char
string='Description'
order_release_date
Date
help='Order release date planned by MRP.'
required=True
string='Release Date'
origin
Char
string='Source Document'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
ondelete='cascade'
required=True
string='Product MRP Area'
qty_released
Float
readonly=True
action_open_linked_mrp_production(self)
action_toggle_fixed(self)
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
comodel_name='res.company'
related='mrp_area_id.warehouse_id.company_id'
store=True
distribution_lead_time
Float
location_id
Many2one
related='mrp_area_id.location_id'
location_proc_id
Many2one → stock.location
comodel_name='stock.location'
domain="[('location_id', 'child_of', location_id)]"
help="Set this if you need to procure from a different locationthan area's location."
string='Procure Location'
main_supplier_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_main_supplier'
index=True
store=True
string='Main Supplier'
main_supplierinfo_id
Many2one → product.supplierinfo
comodel_name='product.supplierinfo'
compute='_compute_main_supplier'
store=True
string='Supplier Info'
mrp_applicable
Boolean
string='MRP Applicable'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
required=True
mrp_exclude
Boolean
string='Exclude from MRP'
mrp_inspection_delay
Integer
string='Inspection Delay'
mrp_lead_time
Float
compute='_compute_mrp_lead_time'
string='Lead Time'
mrp_maximum_order_qty
Float
default=0.0
string='Maximum Order Qty'
mrp_minimum_order_qty
Float
default=0.0
string='Minimum Order Qty'
mrp_minimum_stock
Float
string='Safety Stock'
mrp_move_ids
One2many → mrp.move
comodel_name='mrp.move'
inverse_name='product_mrp_area_id'
readonly=True
mrp_nbr_days
Integer
default=0
help='Number of days to group demand for this product during the MRP run, in order to determine the quantity to order.'
string='Nbr. Days'
mrp_planner_id
Many2one → res.users
mrp_qty_multiple
Float
default=1.0
string='Qty Multiple'
mrp_transit_delay
Integer
default=0
string='Transit Delay'
mrp_verified
Boolean
help='Identifies that this product has been verified to be valid for the MRP.'
string='Verified for MRP'
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='product_mrp_area_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
required=True
string='Product'
product_tmpl_id
Many2one → product.template
comodel_name='product.template'
readonly=True
related='product_id.product_tmpl_id'
store=True
qty_available
Float
compute='_compute_qty_available'
string='Quantity Available'
supply_method
Selection
compute='_compute_supply_method'
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('phantom', 'Kit'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
string='Supply Method'
action_view_incoming_stock_moves(self)
action_view_outgoing_stock_moves(self)
action_view_stock_moves(self, domain)
name_get(self)
update_min_qty_from_main_supplier(self)
llc
Integer
default=0
index=True
string='Low Level Code'
manufacturing_order_ids
One2many → mrp.production
comodel_name='mrp.production'
domain=[('state', '=', 'draft')]
inverse_name='product_id'
string='Manufacturing Orders'
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_id'
string='MRP Area parameters'
purchase_order_line_ids
One2many → purchase.order.line
comodel_name='purchase.order.line'
inverse_name='product_id'
string='Purchase Orders'
action_view_mrp_area_parameters(self)
write(self, values)
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_tmpl_id'
string='MRP Area parameters'
action_view_mrp_area_parameters(self)
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
help='Requirements for a particular MRP area are combined for the purposes of procurement by the MRP.'
string='MRP Area'
No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/manufacture |
| GIT | |
| GIT | https://github.com/OCA/manufacture.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/manufacture/tree/13.0/mrp_multi_level |
| VERSION | |
| VERSION | 1.16.1 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Lois Rilo, Jordi Ballester Alomar, OCA Transbot, Miquel Raïch, AaronHForgeFlow, ahenriquez, oca-travis, Weblate, OCA-git-bot, oca-ci, hveficent, Héctor Villarreal Ortega, BernatPForgeFlow, Bernat Puig Font, HviorForgeFlow, NuriaXForgeFlow |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/manufacture |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:15 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/manufacture: - mrp_warehouse_calendar OCA/stock-logistics-warehouse: - stock_warehouse_calendar odoo/odoo: - mrp - product - base - base_setup - web - bus - web_tour - uom - stock - barcodes - resource - purchase_stock - stock_account - account - analytic - portal - web_editor - http_routing - auth_signup - digest - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
mrp_area_form |
mrp.area.form | mrp.area | form | New |
mrp_area_tree |
mrp.area.tree | mrp.area | tree | New |
mrp_inventory_form |
mrp.inventory.form | mrp.inventory | form | New |
mrp_inventory_search |
mrp.inventory.search | mrp.inventory | search | New |
mrp_inventory_tree |
mrp.inventory.tree | mrp.inventory | tree | New |
mrp_move_view_form |
mrp.move.form | mrp.move | form | New |
mrp_move_view_tree |
mrp.move.tree | mrp.move | tree | New |
mrp_planned_order_view_form |
mrp.planned.order.form | mrp.planned.order | form | New |
mrp_planned_order_view_pivot |
mrp.planned.order.pivot | mrp.planned.order | pivot | New |
mrp_planned_order_view_search |
mrp.planned.order.search | mrp.planned.order | search | New |
mrp_planned_order_view_tree |
mrp.planned.order.tree | mrp.planned.order | tree | New |
product_mrp_area_form |
product.mrp.area.form | product.mrp.area | form | New |
product_mrp_area_search |
product.mrp.area.search | product.mrp.area | search | New |
product_mrp_area_tree |
product.mrp.area.tree | product.mrp.area | tree | New |
product_template_only_form_view_mrp |
product.template.product.form.mrp | product.template | div | Inherits product.product_template_only_form_view |
view_location_form |
stock.location.form | stock.location | field | Inherits stock.view_location_form |
view_location_search |
stock.location.search | stock.location | field | Inherits stock.view_location_search |
view_location_tree2 |
stock.location.tree | stock.location | field | Inherits stock.view_location_tree2 |
view_mrp_inventory_graph |
mrp.inventory.graph | mrp.inventory | graph | New |
view_mrp_inventory_pivot |
mrp.inventory.pivot | mrp.inventory | pivot | New |
view_mrp_inventory_procure_without_security |
mrp.inventory.procure.form - readonly qty | mrp.inventory.procure | field | Inherits view_mrp_inventory_procure_wizard |
view_mrp_inventory_procure_wizard |
mrp.inventory.procure.form | mrp.inventory.procure | form | New |
view_mrp_product_product_form |
view.product.mrp.area.product.form | product.product | div | Inherits product.product_normal_form_view |
view_run_mrp_multi_level_wizard |
Run MRP | mrp.multi.level | form | New |
active
Boolean
default=True
calendar_id
Many2one → resource.calendar
comodel_name='resource.calendar'
related='warehouse_id.calendar_id'
string='Working Hours'
company_id
Many2one → res.company
comodel_name='res.company'
related='warehouse_id.company_id'
store=True
location_id
Many2one → stock.location
comodel_name='stock.location'
required=True
string='Location'
name
Char
required=True
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
required=True
string='Warehouse'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
date
Date
string='Date'
demand_qty
Float
string='Demand'
final_on_hand_qty
Float
group_operator='avg'
string='Forecasted Inventory'
initial_on_hand_qty
Float
group_operator='avg'
string='Starting Inventory'
main_supplier_id
Many2one
readonly=True
related='product_mrp_area_id.main_supplier_id'
store=True
string='Main Supplier'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_planner_id
Many2one
readonly=True
related='product_mrp_area_id.mrp_planner_id'
store=True
order_release_date
Date
compute='_compute_order_release_date'
store=True
string='Order Release Date'
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='mrp_inventory_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
required=True
string='Product Parameters'
running_availability
Float
group_operator='avg'
help='Theoretical inventory level if all planned orders were released.'
string='Planned Availability'
supply_method
Selection
readonly=True
related='product_mrp_area_id.supply_method'
store=True
string='Supply Method'
supply_qty
Float
string='Supply'
to_procure
Float
compute='_compute_to_procure'
store=True
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
compute='_compute_uom_id'
string='Product UoM'
action_open_planned_orders(self)
item_ids
One2many → mrp.inventory.procure.item
comodel_name='mrp.inventory.procure.item'
inverse_name='wiz_id'
string='Items'
default_get(self, fields)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
make_procurement(self)
date_planned
Date
required=True
string='Planned Date'
location_id
Many2one → stock.location
comodel_name='stock.location'
string='Location'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
string='Mrp Inventory'
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
qty
Float
string='Quantity'
supply_method
Selection
readonly=True
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
string='Supply Method'
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
string='Unit of Measure'
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
string='Warehouse'
wiz_id
Many2one → mrp.inventory.procure
comodel_name='mrp.inventory.procure'
ondelete='cascade'
readonly=True
string='Wizard'
onchange_uom_id(self)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
current_date
Date
string='Current Date'
current_qty
Float
string='Current Qty'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_date
Date
string='MRP Date'
mrp_order_number
Char
string='Order Number'
mrp_origin
Selection
selection=[('mo', 'Manufacturing Order'), ('po', 'Purchase Order'), ('mv', 'Move'), ('fc', 'Forecast'), ('mrp', 'MRP')]
string='Origin'
mrp_qty
Float
string='MRP Quantity'
mrp_type
Selection
selection=[('s', 'Supply'), ('d', 'Demand')]
string='Type'
name
Char
string='Description'
origin
Char
string='Source Document'
parent_product_id
Many2one → product.product
comodel_name='product.product'
index=True
string='Parent Product'
planned_order_up_ids
Many2many → mrp.planned.order
column1='move_down_id'
column2='order_id'
comodel_name='mrp.planned.order'
relation='mrp_move_planned_order_rel'
string='Planned Orders UP'
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
required=True
string='Product MRP Area'
production_id
Many2one → mrp.production
comodel_name='mrp.production'
index=True
string='Manufacturing Order'
purchase_line_id
Many2one → purchase.order.line
comodel_name='purchase.order.line'
index=True
string='Purchase Order Line'
purchase_order_id
Many2one → purchase.order
comodel_name='purchase.order'
index=True
string='Purchase Order'
state
Selection
selection=[('draft', 'Draft'), ('assigned', 'Assigned'), ('confirmed', 'Confirmed'), ('waiting', 'Waiting'), ('partially_available', 'Partially Available'), ('ready', 'Ready'), ('sent', 'Sent'), ('to approve', 'To Approve'), ('approved', 'Approved')]
string='State'
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
index=True
string='Stock Move'
No public methods.
mrp_area_ids
Many2many → mrp.area
comodel_name='mrp.area'
help='If empty, all areas will be computed.'
string='MRP Areas to run'
create_action(self, product_mrp_area_id, mrp_date, mrp_qty, name, values=None)
create_planned_order(self, product_mrp_area_id, mrp_qty, name, mrp_date_supply, mrp_action_date, values=None)
explode_action(self, product_mrp_area_id, mrp_action_date, name, qty, action, values=None)
run_mrp_multi_level(self)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
due_date
Date
help='Date in which the supply must have been completed.'
required=True
string='Due Date'
fixed
Boolean
default=True
mo_count
Integer
compute='_compute_mrp_production_count'
mrp_action
Selection
selection=[('manufacture', 'Manufacturing Order'), ('buy', 'Purchase Order'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push'), ('none', 'None')]
string='Action'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
readonly=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
ondelete='set null'
string='Associated MRP Inventory'
mrp_move_down_ids
Many2many → mrp.move
column1='order_id'
column2='move_down_id'
comodel_name='mrp.move'
relation='mrp_move_planned_order_rel'
string='MRP Move DOWN'
mrp_planner_id
Many2one
readonly=True
related='product_mrp_area_id.mrp_planner_id'
store=True
mrp_production_ids
One2many → mrp.production
string='Manufacturing Orders'
args: 'mrp.production', 'planned_order_id'
mrp_qty
Float
string='Quantity'
name
Char
string='Description'
order_release_date
Date
help='Order release date planned by MRP.'
required=True
string='Release Date'
origin
Char
string='Source Document'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
required=True
string='Product MRP Area'
qty_released
Float
readonly=True
action_open_linked_mrp_production(self)
action_toggle_fixed(self)
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
comodel_name='res.company'
related='mrp_area_id.warehouse_id.company_id'
store=True
location_id
Many2one
related='mrp_area_id.location_id'
location_proc_id
Many2one → stock.location
comodel_name='stock.location'
domain="[('location_id', 'child_of', location_id)]"
help="Set this if you need to procure from a different locationthan area's location."
string='Procure Location'
main_supplier_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_main_supplier'
index=True
store=True
string='Main Supplier'
main_supplierinfo_id
Many2one → product.supplierinfo
comodel_name='product.supplierinfo'
compute='_compute_main_supplier'
store=True
string='Supplier Info'
mrp_applicable
Boolean
string='MRP Applicable'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
required=True
mrp_exclude
Boolean
string='Exclude from MRP'
mrp_inspection_delay
Integer
string='Inspection Delay'
mrp_lead_time
Float
compute='_compute_mrp_lead_time'
string='Lead Time'
mrp_maximum_order_qty
Float
default=0.0
string='Maximum Order Qty'
mrp_minimum_order_qty
Float
default=0.0
string='Minimum Order Qty'
mrp_minimum_stock
Float
string='Safety Stock'
mrp_move_ids
One2many → mrp.move
comodel_name='mrp.move'
inverse_name='product_mrp_area_id'
readonly=True
mrp_nbr_days
Integer
default=0
help='Number of days to group demand for this product during the MRP run, in order to determine the quantity to order.'
string='Nbr. Days'
mrp_planner_id
Many2one → res.users
mrp_qty_multiple
Float
default=1.0
string='Qty Multiple'
mrp_transit_delay
Integer
default=0
string='Transit Delay'
mrp_verified
Boolean
help='Identifies that this product has been verified to be valid for the MRP.'
string='Verified for MRP'
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='product_mrp_area_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
required=True
string='Product'
product_tmpl_id
Many2one → product.template
comodel_name='product.template'
readonly=True
related='product_id.product_tmpl_id'
store=True
qty_available
Float
compute='_compute_qty_available'
string='Quantity Available'
supply_method
Selection
compute='_compute_supply_method'
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('phantom', 'Kit'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
string='Supply Method'
action_view_incoming_stock_moves(self)
action_view_outgoing_stock_moves(self)
action_view_stock_moves(self, domain)
name_get(self)
update_min_qty_from_main_supplier(self)
llc
Integer
default=0
index=True
string='Low Level Code'
manufacturing_order_ids
One2many → mrp.production
comodel_name='mrp.production'
domain=[('state', '=', 'draft')]
inverse_name='product_id'
string='Manufacturing Orders'
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_id'
string='MRP Area parameters'
purchase_order_line_ids
One2many → purchase.order.line
comodel_name='purchase.order.line'
inverse_name='product_id'
string='Purchase Orders'
action_view_mrp_area_parameters(self)
write(self, values)
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_tmpl_id'
string='MRP Area parameters'
action_view_mrp_area_parameters(self)
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
help='Requirements for a particular MRP area are combined for the purposes of procurement by the MRP.'
string='MRP Area'
No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/manufacture |
| GIT | |
| GIT | https://github.com/OCA/manufacture.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/manufacture/tree/12.0/mrp_multi_level |
| VERSION | |
| VERSION | 2.4.1 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow, Ucamco |
| COMMITTERS | |
| COMMITTERS | Holger Brunn, Lois Rilo, OCA Transbot, AaronHForgeFlow, oca-travis, Weblate, OCA-git-bot, hveficent, Matt Taylor, Núria Martín Xifré, Bernat Puig Font, HviorForgeFlow |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/manufacture |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:20 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/manufacture: - mrp_warehouse_calendar OCA/stock-logistics-warehouse: - stock_warehouse_calendar odoo/odoo: - mrp - product - base - decimal_precision - base_setup - web - bus - web_tour - uom - stock - barcodes - resource - purchase_stock - stock_account - account - analytic - portal - http_routing - digest - purchase |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
mrp_area_form |
mrp.area.form | mrp.area | form | New |
mrp_area_tree |
mrp.area.tree | mrp.area | tree | New |
mrp_inventory_form |
mrp.inventory.form | mrp.inventory | form | New |
mrp_inventory_search |
mrp.inventory.search | mrp.inventory | search | New |
mrp_inventory_tree |
mrp.inventory.tree | mrp.inventory | tree | New |
mrp_planned_order_view_form |
mrp.planned.order.form | mrp.planned.order | form | New |
mrp_planned_order_view_pivot |
mrp.planned.order.pivot | mrp.planned.order | pivot | New |
mrp_planned_order_view_search |
mrp.planned.order.search | mrp.planned.order | search | New |
mrp_planned_order_view_tree |
mrp.planned.order.tree | mrp.planned.order | tree | New |
product_mrp_area_form |
product.mrp.area.form | product.mrp.area | form | New |
product_mrp_area_search |
product.mrp.area.search | product.mrp.area | search | New |
product_mrp_area_tree |
product.mrp.area.tree | product.mrp.area | tree | New |
product_template_only_form_view_mrp |
product.template.product.form.mrp | product.template | div | Inherits product.product_template_only_form_view |
view_location_form |
stock.location.form | stock.location | field | Inherits stock.view_location_form |
view_location_search |
stock.location.search | stock.location | field | Inherits stock.view_location_search |
view_location_tree2 |
stock.location.tree | stock.location | field | Inherits stock.view_location_tree2 |
view_mrp_inventory_graph |
mrp.inventory.graph | mrp.inventory | graph | New |
view_mrp_inventory_pivot |
mrp.inventory.pivot | mrp.inventory | pivot | New |
view_mrp_inventory_procure_without_security |
mrp.inventory.procure.form - readonly qty | mrp.inventory.procure | field | Inherits view_mrp_inventory_procure_wizard |
view_mrp_inventory_procure_wizard |
mrp.inventory.procure.form | mrp.inventory.procure | form | New |
view_mrp_product_product_form |
view.product.mrp.area.product.form | product.product | div | Inherits product.product_normal_form_view |
view_run_mrp_multi_level_wizard |
Run MRP | mrp.multi.level | form | New |
active
Boolean
default=True
calendar_id
Many2one → resource.calendar
comodel_name='resource.calendar'
related='warehouse_id.calendar_id'
string='Working Hours'
company_id
Many2one → res.company
comodel_name='res.company'
related='warehouse_id.company_id'
store=True
location_id
Many2one → stock.location
comodel_name='stock.location'
required=True
string='Location'
name
Char
required=True
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
required=True
string='Warehouse'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
date
Date
string='Date'
demand_qty
Float
string='Demand'
final_on_hand_qty
Float
string='Forecasted Inventory'
initial_on_hand_qty
Float
string='Starting Inventory'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
order_release_date
Date
compute='_compute_order_release_date'
store=True
string='Order Release Date'
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='mrp_inventory_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
required=True
string='Product Parameters'
running_availability
Float
help='Theoretical inventory level if all planned orderswere released.'
string='Planned Availability'
supply_method
Selection
readonly=True
related='product_mrp_area_id.supply_method'
store=True
string='Supply Method'
supply_qty
Float
string='Supply'
to_procure
Float
compute='_compute_to_procure'
store=True
string='To procure'
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
compute='_compute_uom_id'
string='Product UoM'
No public methods.
item_ids
One2many → mrp.inventory.procure.item
comodel_name='mrp.inventory.procure.item'
inverse_name='wiz_id'
string='Items'
default_get(self, fields)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
make_procurement(self)
date_planned
Date
required=True
string='Planned Date'
location_id
Many2one → stock.location
comodel_name='stock.location'
string='Location'
location_id
Many2one → stock.location
comodel_name='stock.location'
string='Location'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
string='Mrp Inventory'
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
qty
Float
string='Quantity'
supply_method
Selection
readonly=True
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
string='Supply Method'
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
string='Unit of Measure'
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
string='Warehouse'
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
string='Warehouse'
wiz_id
Many2one → mrp.inventory.procure
comodel_name='mrp.inventory.procure'
ondelete='cascade'
readonly=True
string='Wizard'
onchange_uom_id(self)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
current_date
Date
string='Current Date'
current_qty
Float
string='Current Qty'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_date
Date
string='MRP Date'
mrp_order_number
Char
string='Order Number'
mrp_origin
Selection
selection=[('mo', 'Manufacturing Order'), ('po', 'Purchase Order'), ('mv', 'Move'), ('fc', 'Forecast'), ('mrp', 'MRP')]
string='Origin'
mrp_qty
Float
string='MRP Quantity'
mrp_type
Selection
selection=[('s', 'Supply'), ('d', 'Demand')]
string='Type'
name
Char
string='Description'
parent_product_id
Many2one → product.product
comodel_name='product.product'
index=True
string='Parent Product'
planned_order_up_ids
Many2many → mrp.planned.order
column1='move_down_id'
column2='order_id'
comodel_name='mrp.planned.order'
relation='mrp_move_planned_order_rel'
string='Planned Orders UP'
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
required=True
string='Product MRP Area'
production_id
Many2one → mrp.production
comodel_name='mrp.production'
index=True
string='Manufacturing Order'
purchase_line_id
Many2one → purchase.order.line
comodel_name='purchase.order.line'
index=True
string='Purchase Order Line'
purchase_order_id
Many2one → purchase.order
comodel_name='purchase.order'
index=True
string='Purchase Order'
state
Selection
selection=[('draft', 'Draft'), ('assigned', 'Assigned'), ('confirmed', 'Confirmed'), ('waiting', 'Waiting'), ('partially_available', 'Partially Available'), ('ready', 'Ready'), ('sent', 'Sent'), ('to approve', 'To Approve'), ('approved', 'Approved')]
string='State'
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
index=True
string='Stock Move'
No public methods.
mrp_area_ids
Many2many → mrp.area
comodel_name='mrp.area'
help='If empty, all areas will be computed.'
string='MRP Areas to run'
create_action(self, product_mrp_area_id, mrp_date, mrp_qty, name, values=None)
create_planned_order(self, product_mrp_area_id, mrp_qty, name, mrp_date_supply, mrp_action_date, values=None)
explode_action(self, product_mrp_area_id, mrp_action_date, name, qty, action)
run_mrp_multi_level(self)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
due_date
Date
help='Date in which the supply must have been completed.'
required=True
string='Due Date'
fixed
Boolean
default=True
mo_count
Integer
compute='_compute_mrp_production_count'
mrp_action
Selection
selection=[('manufacture', 'Manufacturing Order'), ('buy', 'Purchase Order'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push'), ('none', 'None')]
string='Action'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
readonly=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
ondelete='set null'
string='Associated MRP Inventory'
mrp_move_down_ids
Many2many → mrp.move
column1='order_id'
column2='move_down_id'
comodel_name='mrp.move'
relation='mrp_move_planned_order_rel'
string='MRP Move DOWN'
mrp_production_ids
One2many → mrp.production
string='Manufacturing Orders'
args: 'mrp.production', 'planned_order_id'
mrp_qty
Float
string='Quantity'
name
Char
string='Description'
order_release_date
Date
help='Order release date planned by MRP.'
required=True
string='Release Date'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
required=True
string='Product MRP Area'
qty_released
Float
readonly=True
action_open_linked_mrp_production(self)
action_toggle_fixed(self)
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
comodel_name='res.company'
related='mrp_area_id.warehouse_id.company_id'
store=True
location_id
Many2one
related='mrp_area_id.location_id'
location_proc_id
Many2one → stock.location
comodel_name='stock.location'
domain="[('location_id', 'child_of', location_id)]"
help="Set this if you need to procure from a different locationthan area's location."
string='Procure Location'
main_supplier_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_main_supplier'
compute_sudo=True
index=True
store=True
string='Main Supplier'
main_supplierinfo_id
Many2one → product.supplierinfo
comodel_name='product.supplierinfo'
compute='_compute_main_supplier'
compute_sudo=True
store=True
string='Supplier Info'
mrp_applicable
Boolean
string='MRP Applicable'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
required=True
mrp_exclude
Boolean
string='Exclude from MRP'
mrp_inspection_delay
Integer
string='Inspection Delay'
mrp_lead_time
Float
compute='_compute_mrp_lead_time'
string='Lead Time'
mrp_maximum_order_qty
Float
default=0.0
string='Maximum Order Qty'
mrp_minimum_order_qty
Float
default=0.0
string='Minimum Order Qty'
mrp_minimum_stock
Float
string='Safety Stock'
mrp_move_ids
One2many → mrp.move
comodel_name='mrp.move'
inverse_name='product_mrp_area_id'
readonly=True
mrp_nbr_days
Integer
default=0
help='Number of days to group demand for this product during the MRP run, in order to determine the quantity to order.'
string='Nbr. Days'
mrp_qty_multiple
Float
default=1.0
string='Qty Multiple'
mrp_transit_delay
Integer
default=0
string='Transit Delay'
mrp_verified
Boolean
help='Identifies that this product has been verified to be valid for the MRP.'
string='Verified for MRP'
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='product_mrp_area_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
required=True
string='Product'
product_tmpl_id
Many2one → product.template
comodel_name='product.template'
compute_sudo=True
readonly=True
related='product_id.product_tmpl_id'
store=True
qty_available
Float
compute='_compute_qty_available'
string='Quantity Available'
supply_method
Selection
compute='_compute_supply_method'
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('phantom', 'Kit'), ('pull', 'Pull From'), ('push', 'Push To'), ('pull_push', 'Pull & Push')]
string='Supply Method'
name_get(self)
update_min_qty_from_main_supplier(self)
llc
Integer
default=0
index=True
string='Low Level Code'
manufacturing_order_ids
One2many → mrp.production
comodel_name='mrp.production'
domain=[('state', '=', 'draft')]
inverse_name='product_id'
string='Manufacturing Orders'
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_id'
string='MRP Area parameters'
purchase_order_line_ids
One2many → purchase.order.line
comodel_name='purchase.order.line'
inverse_name='product_id'
string='Purchase Orders'
action_view_mrp_area_parameters(self)
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_tmpl_id'
string='MRP Area parameters'
action_view_mrp_area_parameters(self)
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
help='Requirements for a particular MRP area are combined for the purposes of procurement by the MRP.'
string='MRP Area'
No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/manufacture |
| GIT | |
| GIT | https://github.com/OCA/manufacture.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/manufacture/tree/11.0/mrp_multi_level |
| VERSION | |
| VERSION | 3.3.0 |
| CATEGORY | |
| CATEGORY | Manufacturing |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Eficent, Ucamco |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Eficent, Ucamco |
| COMMITTERS | |
| COMMITTERS | GitHub, Lois Rilo, Jordi Ballester Alomar, OCA Transbot, AaronHForgeFlow, oca-travis, Weblate, OCA-git-bot, OCA Git Bot |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/manufacture |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:23:59 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/manufacture: - mrp_warehouse_calendar OCA/server-ux: - date_range OCA/stock-logistics-warehouse: - stock_demand_estimate - stock_warehouse_calendar OCA/web: - web_widget_x2many_2d_matrix odoo/odoo: - mrp - product - base - decimal_precision - base_setup - web - bus - web_tour - stock - barcodes - web_planner - resource - purchase - stock_account - account - analytic - portal - http_routing |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
mrp_area_form |
mrp.area.form | mrp.area | form | New |
mrp_area_tree |
mrp.area.tree | mrp.area | tree | New |
mrp_inventory_form |
mrp.inventory.form | mrp.inventory | form | New |
mrp_inventory_search |
mrp.inventory.search | mrp.inventory | search | New |
mrp_inventory_tree |
mrp.inventory.tree | mrp.inventory | tree | New |
product_mrp_area_form |
product.mrp.area.form | product.mrp.area | form | New |
product_mrp_area_search |
product.mrp.area.search | product.mrp.area | search | New |
product_mrp_area_tree |
product.mrp.area.tree | product.mrp.area | tree | New |
product_template_only_form_view_mrp |
product.template.product.form.mrp | product.template | div | Inherits product.product_template_only_form_view |
view_location_form |
stock.location.form | stock.location | field | Inherits stock.view_location_form |
view_location_search |
stock.location.search | stock.location | field | Inherits stock.view_location_search |
view_location_tree2 |
stock.location.tree | stock.location | field | Inherits stock.view_location_tree2 |
view_mrp_inventory_graph |
mrp.inventory.graph | mrp.inventory | graph | New |
view_mrp_inventory_pivot |
mrp.inventory.pivot | mrp.inventory | pivot | New |
view_mrp_inventory_procure_without_security |
mrp.inventory.procure.form - readonly qty | mrp.inventory.procure | field | Inherits view_mrp_inventory_procure_wizard |
view_mrp_inventory_procure_wizard |
mrp.inventory.procure.form | mrp.inventory.procure | form | New |
view_mrp_product_product_form |
view.product.mrp.area.product.form | product.product | div | Inherits product.product_normal_form_view |
view_run_mrp_multi_level_wizard |
Run MRP | mrp.multi.level | form | New |
active
Boolean
default=True
calendar_id
Many2one → resource.calendar
comodel_name='resource.calendar'
related='warehouse_id.calendar_id'
string='Working Hours'
company_id
Many2one → res.company
comodel_name='res.company'
related='warehouse_id.company_id'
store=True
location_id
Many2one → stock.location
comodel_name='stock.location'
required=True
string='Location'
name
Char
required=True
tz
Selection
default=<expr>
help='This field is used in order to define in which timezone the MRP Area will work.'
required=True
string='Timezone'
args: _tz_get
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
required=True
string='Warehouse'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
date
Date
string='Date'
demand_qty
Float
string='Demand'
final_on_hand_qty
Float
string='Forecasted Inventory'
initial_on_hand_qty
Float
string='Starting Inventory'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
order_release_date
Date
compute='_compute_order_release_date'
store=True
string='Order Release Date'
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='mrp_inventory_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
required=True
string='Product Parameters'
running_availability
Float
help='Theoretical inventory level if all planned orderswere released.'
string='Planned Availability'
supply_qty
Float
string='Supply'
to_procure
Float
compute='_compute_to_procure'
store=True
string='To procure'
uom_id
Many2one → product.uom
comodel_name='product.uom'
compute='_compute_uom_id'
string='Product UoM'
No public methods.
item_ids
One2many → mrp.inventory.procure.item
comodel_name='mrp.inventory.procure.item'
inverse_name='wiz_id'
string='Items'
default_get(self, fields)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
make_procurement(self)
date_planned
Date
required=False
string='Planned Date'
location_id
Many2one → stock.location
comodel_name='stock.location'
string='Location'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
string='Mrp Inventory'
planned_order_id
Many2one → mrp.planned.order
comodel_name='mrp.planned.order'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
qty
Float
string='Quantity'
uom_id
Many2one → product.uom
comodel_name='product.uom'
string='Unit of Measure'
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
string='Warehouse'
wiz_id
Many2one → mrp.inventory.procure
comodel_name='mrp.inventory.procure'
ondelete='cascade'
readonly=True
string='Wizard'
onchange_uom_id(self)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
current_date
Date
string='Current Date'
current_qty
Float
string='Current Qty'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_date
Date
string='MRP Date'
mrp_order_number
Char
string='Order Number'
mrp_origin
Selection
selection=[('mo', 'Manufacturing Order'), ('po', 'Purchase Order'), ('mv', 'Move'), ('fc', 'Forecast'), ('mrp', 'MRP')]
string='Origin'
mrp_qty
Float
string='MRP Quantity'
mrp_type
Selection
selection=[('s', 'Supply'), ('d', 'Demand')]
string='Type'
name
Char
string='Description'
parent_product_id
Many2one → product.product
comodel_name='product.product'
index=True
string='Parent Product'
planned_order_up_ids
Many2many → mrp.planned.order
column1='move_down_id'
column2='order_id'
comodel_name='mrp.planned.order'
relation='mrp_move_planned_order_rel'
string='Planned Orders UP'
product_id
Many2one → product.product
comodel_name='product.product'
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
required=True
string='Product'
production_id
Many2one → mrp.production
comodel_name='mrp.production'
index=True
string='Manufacturing Order'
purchase_line_id
Many2one → purchase.order.line
comodel_name='purchase.order.line'
index=True
string='Purchase Order Line'
purchase_order_id
Many2one → purchase.order
comodel_name='purchase.order'
index=True
string='Purchase Order'
state
Selection
selection=[('draft', 'Draft'), ('assigned', 'Assigned'), ('confirmed', 'Confirmed'), ('waiting', 'Waiting'), ('partially_available', 'Partially Available'), ('ready', 'Ready'), ('sent', 'Sent'), ('to approve', 'To Approve'), ('approved', 'Approved')]
string='State'
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
index=True
string='Stock Move'
No public methods.
mrp_area_ids
Many2many → mrp.area
comodel_name='mrp.area'
help='If empty, all areas will be computed.'
string='MRP Areas to run'
create_action(self, product_mrp_area_id, mrp_date, mrp_qty, name, values=None)
create_planned_order(self, product_mrp_area_id, mrp_qty, name, mrp_date_supply, mrp_action_date, values=None)
explode_action(self, product_mrp_area_id, mrp_action_date, name, qty, action)
run_mrp_multi_level(self)
company_id
Many2one → res.company
comodel_name='res.company'
related='product_mrp_area_id.mrp_area_id.warehouse_id.company_id'
store=True
due_date
Date
help='Date in which the supply must have been completed.'
string='Due Date'
fixed
Boolean
mrp_action
Selection
selection=[('manufacture', 'Manufacturing Order'), ('buy', 'Purchase Order'), ('move', 'Transfer'), ('none', 'None')]
string='Action'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
index=True
readonly=True
related='product_mrp_area_id.mrp_area_id'
store=True
string='MRP Area'
mrp_inventory_id
Many2one → mrp.inventory
comodel_name='mrp.inventory'
ondelete='set null'
string='Associated MRP Inventory'
mrp_move_down_ids
Many2many → mrp.move
column1='order_id'
column2='move_down_id'
comodel_name='mrp.move'
relation='mrp_move_planned_order_rel'
string='MRP Move DOWN'
mrp_qty
Float
string='Quantity'
name
Char
string='Description'
order_release_date
Date
help='Order release date planned by MRP.'
string='Release Date'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='product_mrp_area_id.product_id'
store=True
product_mrp_area_id
Many2one → product.mrp.area
comodel_name='product.mrp.area'
index=True
required=True
string='Product'
qty_released
Float
No public methods.
active
Boolean
default=True
company_id
Many2one → res.company
comodel_name='res.company'
related='mrp_area_id.warehouse_id.company_id'
store=True
group_estimate_days
Integer
default=1
string='Group Days of Estimates'
location_id
Many2one
related='mrp_area_id.location_id'
location_proc_id
Many2one → stock.location
comodel_name='stock.location'
domain="[('location_id', 'child_of', location_id)]"
help="Set this if you need to procure from a different locationthan area's location."
string='Procure Location'
main_supplier_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_main_supplier'
compute_sudo=True
index=True
store=True
string='Main Supplier'
main_supplierinfo_id
Many2one → product.supplierinfo
comodel_name='product.supplierinfo'
compute='_compute_main_supplier'
compute_sudo=True
store=True
string='Supplier Info'
mrp_applicable
Boolean
string='MRP Applicable'
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
required=True
mrp_exclude
Boolean
string='Exclude from MRP'
mrp_inspection_delay
Integer
string='Inspection Delay'
mrp_lead_time
Float
compute='_compute_mrp_lead_time'
string='Lead Time'
mrp_maximum_order_qty
Float
default=0.0
string='Maximum Order Qty'
mrp_minimum_order_qty
Float
default=0.0
string='Minimum Order Qty'
mrp_minimum_stock
Float
string='Safety Stock'
mrp_move_ids
One2many → mrp.move
comodel_name='mrp.move'
inverse_name='product_mrp_area_id'
readonly=True
mrp_nbr_days
Integer
default=0
help='Number of days to group demand for this product during the MRP run, in order to determine the quantity to order.'
string='Nbr. Days'
mrp_qty_multiple
Float
default=1.0
string='Qty Multiple'
mrp_transit_delay
Integer
default=0
string='Transit Delay'
mrp_verified
Boolean
help='Identifies that this product has been verified to be valid for the MRP.'
string='Verified for MRP'
planned_order_ids
One2many → mrp.planned.order
comodel_name='mrp.planned.order'
inverse_name='product_mrp_area_id'
readonly=True
product_id
Many2one → product.product
comodel_name='product.product'
required=True
string='Product'
product_tmpl_id
Many2one → product.template
comodel_name='product.template'
compute_sudo=True
readonly=True
related='product_id.product_tmpl_id'
store=True
qty_available
Float
compute='_compute_qty_available'
string='Quantity Available'
supply_method
Selection
compute='_compute_supply_method'
selection=[('buy', 'Buy'), ('none', 'Undefined'), ('manufacture', 'Produce'), ('move', 'Transfer')]
string='Supply Method'
name_get(self)
llc
Integer
default=0
string='Low Level Code'
manufacturing_order_ids
One2many → mrp.production
comodel_name='mrp.production'
domain=[('state', '=', 'draft')]
inverse_name='product_id'
string='Manufacturing Orders'
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_id'
string='MRP Area parameters'
purchase_order_line_ids
One2many → purchase.order.line
comodel_name='purchase.order.line'
inverse_name='product_id'
string='Purchase Orders'
action_view_mrp_area_parameters(self)
mrp_area_count
Integer
compute='_compute_mrp_area_count'
readonly=True
string='MRP Area Parameter Count'
mrp_area_ids
One2many → product.mrp.area
comodel_name='product.mrp.area'
inverse_name='product_tmpl_id'
string='MRP Area parameters'
action_view_mrp_area_parameters(self)
mrp_area_id
Many2one → mrp.area
comodel_name='mrp.area'
help='Requirements for a particular MRP area are combined for the purposes of procurement by the MRP.'
string='MRP Area'
No public methods.