MRP Production Request

mrp_production_request
REPOSITORY
REPOSITORYOCA/manufacture
GIT
GIThttps://github.com/OCA/manufacture.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/manufacture/tree/13.0/mrp_production_request
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSPedro M. Baeza, mreficent, Lois Rilo, Yann Papouin, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Chandresh Thakkar
WEBSITE
WEBSITEhttps://github.com/OCA/manufacture
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:15
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_available_unreserved
odoo/odoo:
    - mrp
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - stock
    - barcodes
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
mrp_production_form_view mrp.production.form - mrp_production_request mrp.production xpath Inherits mrp.mrp_production_form_view
mrp_production_request_create_mo_view mrp.production.request.create.mo.form mrp.production.request.create.mo form New
view_mrp_production_request_form mrp.production.request.form mrp.production.request form New
view_mrp_production_request_search mrp.production.request.search mrp.production.request search New
view_mrp_production_request_tree mrp.production.request.tree mrp.production.request tree New
view_template_property_form product.template.form - mrp_production_request product.template field Inherits stock.view_template_property_form
Models touched (8)

New fields (1)
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' copy=False readonly=True string='Manufacturing Request'
Public methods (0)

No public methods.

New fields (28)
  • assigned_to Many2one → res.users
    comodel_name='res.users' domain=<expr> readonly=True states={'draft': [('readonly', False)]} string='Approver' track_visibility='onchange'
  • bom_id Many2one → mrp.bom
    comodel_name='mrp.bom' readonly=True required=True states={'draft': [('readonly', False)]} string='Bill of Materials'
  • category_uom_id Many2one
    related='product_uom_id.category_id'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • date_planned_finished Datetime
    copy=False default=fields.Datetime.now index=True states={'confirmed': [('readonly', False)]} args: 'Deadline End'
  • date_planned_start Datetime
    copy=False default=fields.Datetime.now index=True required=True states={'confirmed': [('readonly', False)]} args: 'Deadline Start'
  • description Text
    args: 'Description'
  • done_qty Float
    compute='_compute_manufactured_qty' digits='Product Unit of Measure' help='Sum of the quantities in all done Manufacturing Orders.' readonly=True store=True string='Quantity Done'
  • location_dest_id Many2one → stock.location
    comodel_name='stock.location' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Finished Products Location'
  • location_src_id Many2one → stock.location
    comodel_name='stock.location' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Raw Materials Location'
  • manufactured_qty Float
    compute='_compute_manufactured_qty' digits='Product Unit of Measure' help='Sum of the quantities in Manufacturing Orders (in any state).' readonly=True store=True string='Quantity in Manufacturing Orders'
  • move_dest_ids One2many → stock.move
    comodel_name='stock.move' inverse_name='created_mrp_production_request_id' string='Stock Movements of Produced Goods'
  • mrp_production_count Integer
    compute='_compute_mrp_production_count' string="MO's Count"
  • mrp_production_ids One2many → mrp.production
    comodel_name='mrp.production' inverse_name='mrp_production_request_id' readonly=True string='Manufacturing Orders'
  • name Char
    default='/' readonly=True required=True states={'draft': [('readonly', False)]}
  • orderpoint_id Many2one → stock.warehouse.orderpoint
    comodel_name='stock.warehouse.orderpoint' string='Orderpoint'
  • origin Char
    readonly=True states={'draft': [('readonly', False)]} string='Source Document'
  • pending_qty Float
    compute='_compute_manufactured_qty' digits='Product Unit of Measure' help='Quantity pending to add to Manufacturing Orders to fulfill the Manufacturing Request requirement.' readonly=True store=True string='Pending Quantity'
  • picking_type_id Many2one → stock.picking.type
    comodel_name='stock.picking.type' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Picking Type'
  • procurement_group_id Many2one → procurement.group
    comodel_name='procurement.group' copy=False string='Procurement Group'
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', 'in', ['product', 'consu'])] readonly=True required=True states={'draft': [('readonly', False)]} string='Product' track_visibility='onchange'
  • product_qty Float
    default=1.0 digits='Product Unit of Measure' readonly=True required=True states={'draft': [('readonly', False)]} string='Required Quantity' track_visibility='onchange'
  • product_tmpl_id Many2one → product.template
    comodel_name='product.template' related='product_id.product_tmpl_id' string='Product Template'
  • product_uom_id Many2one → uom.uom
    comodel_name='uom.uom' domain="[('category_id', '=', category_uom_id)]" readonly=True states={'draft': [('readonly', False)]} string='Unit of Measure'
  • propagate Boolean
    help='If checked, when the previous move of the move (which was generated by a next procurement) is cancelled or split, the move generated by this move will too' args: 'Propagate cancel and split'
  • requested_by Many2one → res.users
    comodel_name='res.users' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Requested by' track_visibility='onchange'
  • routing_id Many2one → mrp.routing
    comodel_name='mrp.routing' help='The list of operations (list of work centers) to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production plannification.' on_delete='setnull' readonly=True states={'draft': [('readonly', False)]} string='Routing'
  • state Selection
    copy=False default='draft' index=True required=True selection=[('draft', 'Draft'), ('to_approve', 'To Be Approved'), ('approved', 'Approved'), ('done', 'Done'), ('cancel', 'Cancelled')] track_visibility='onchange'
Public methods (8)
  • action_view_mrp_productions(self)
  • button_approved(self)
  • button_cancel(self)
  • button_done(self)
  • button_draft(self)
  • button_to_approve(self)
  • create(self, vals)
    @api.model
    Add sequence if name is not defined and subscribe to the thread the user assigned to the request.
  • write(self, vals)

New fields (8)
  • bom_id Many2one
    readonly=True related='mrp_production_request_id.bom_id'
  • date_planned_finished Datetime
    required=True string='Deadline End'
  • date_planned_start Datetime
    required=True string='Deadline Start'
  • mo_qty Float
    digits='Product Unit of Measure' string='Quantity'
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' readonly=True
  • pending_qty Float
    digits='Product Unit of Measure' related='mrp_production_request_id.pending_qty'
  • product_line_ids One2many → mrp.production.request.create.mo.line
    comodel_name='mrp.production.request.create.mo.line' inverse_name='mrp_production_request_create_mo_id' readonly=True string='Products needed'
  • product_uom_id Many2one
    related='mrp_production_request_id.product_uom_id'
Public methods (3)
  • compute_product_line_ids(self)
  • create_mo(self)
  • default_get(self, fields)
    @api.model

New fields (7)
  • available_qty Float
    compute='_compute_available_qty' digits='Product Unit of Measure' string='Quantity Available'
  • bottle_neck_factor Float
    compute='_compute_bottle_neck_factor'
  • location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • mrp_production_request_create_mo_id Many2one → mrp.production.request.create.mo
    comodel_name='mrp.production.request.create.mo'
  • product_id Many2one → product.product
    comodel_name='product.product' required=True string='Product'
  • product_qty Float
    digits='Product Unit of Measure' required=True string='Quantity Required'
  • product_uom_id Many2one → uom.uom
    comodel_name='uom.uom' required=True string='UoM'
Public methods (0)

No public methods.

New fields (1)
  • mrp_production_request Boolean
    help='Check this box to generate manufacturing request instead of generating manufacturing orders from procurement.' string='Manufacturing Request'
Public methods (0)

No public methods.

New fields (1)
  • created_mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' string='Created Production Request'
Public methods (1)
  • create(self, vals)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/manufacture
GIT
GIThttps://github.com/OCA/manufacture.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/manufacture/tree/12.0/mrp_production_request
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent
COMMITTERS
COMMITTERSLois Rilo, Yann Papouin, OCA Transbot, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/manufacture
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_available_unreserved
odoo/odoo:
    - mrp
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - stock
    - barcodes
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
mrp_production_form_view mrp.production.form - mrp_production_request mrp.production field Inherits mrp.mrp_production_form_view
mrp_production_request_create_mo_view mrp.production.request.create.mo.form mrp.production.request.create.mo form New
view_mrp_production_request_form mrp.production.request.form mrp.production.request form New
view_mrp_production_request_search mrp.production.request.search mrp.production.request search New
view_mrp_production_request_tree mrp.production.request.tree mrp.production.request tree New
view_template_property_form product.template.form - mrp_production_request product.template field Inherits stock.view_template_property_form
Models touched (8)

New fields (1)
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' copy=False readonly=True string='Manufacturing Request'
Public methods (0)

No public methods.

New fields (28)
  • assigned_to Many2one → res.users
    comodel_name='res.users' domain=<expr> readonly=True states={'draft': [('readonly', False)]} string='Approver' track_visibility='onchange'
  • bom_id Many2one → mrp.bom
    comodel_name='mrp.bom' readonly=True required=True states={'draft': [('readonly', False)]} string='Bill of Materials'
  • category_uom_id Many2one
    related='product_uom_id.category_id'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • date_planned_finished Datetime
    copy=False default=fields.Datetime.now index=True states={'confirmed': [('readonly', False)]} args: 'Deadline End'
  • date_planned_start Datetime
    copy=False default=fields.Datetime.now index=True oldname='date_planned' required=True states={'confirmed': [('readonly', False)]} args: 'Deadline Start'
  • description Text
    args: 'Description'
  • done_qty Float
    compute='_compute_manufactured_qty' digits=dp.get_precision('Product Unit of Measure') help='Sum of the quantities in all done Manufacturing Orders.' readonly=True store=True string='Quantity Done'
  • location_dest_id Many2one → stock.location
    comodel_name='stock.location' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Finished Products Location'
  • location_src_id Many2one → stock.location
    comodel_name='stock.location' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Raw Materials Location'
  • manufactured_qty Float
    compute='_compute_manufactured_qty' digits=dp.get_precision('Product Unit of Measure') help='Sum of the quantities in Manufacturing Orders (in any state).' readonly=True store=True string='Quantity in Manufacturing Orders'
  • move_dest_ids One2many → stock.move
    comodel_name='stock.move' inverse_name='created_mrp_production_request_id' string='Stock Movements of Produced Goods'
  • mrp_production_count Integer
    compute='_compute_mrp_production_count' string="MO's Count"
  • mrp_production_ids One2many → mrp.production
    comodel_name='mrp.production' inverse_name='mrp_production_request_id' readonly=True string='Manufacturing Orders'
  • name Char
    default='/' readonly=True required=True states={'draft': [('readonly', False)]}
  • orderpoint_id Many2one → stock.warehouse.orderpoint
    comodel_name='stock.warehouse.orderpoint' string='Orderpoint'
  • origin Char
    readonly=True states={'draft': [('readonly', False)]} string='Source Document'
  • pending_qty Float
    compute='_compute_manufactured_qty' digits=dp.get_precision('Product Unit of Measure') help='Quantity pending to add to Manufacturing Orders to fulfill the Manufacturing Request requirement.' readonly=True store=True string='Pending Quantity'
  • picking_type_id Many2one → stock.picking.type
    comodel_name='stock.picking.type' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Picking Type'
  • procurement_group_id Many2one → procurement.group
    comodel_name='procurement.group' copy=False string='Procurement Group'
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', 'in', ['product', 'consu'])] readonly=True required=True states={'draft': [('readonly', False)]} string='Product' track_visibility='onchange'
  • product_qty Float
    default=1.0 digits=dp.get_precision('Product Unit of Measure') readonly=True required=True states={'draft': [('readonly', False)]} string='Required Quantity' track_visibility='onchange'
  • product_tmpl_id Many2one → product.template
    comodel_name='product.template' related='product_id.product_tmpl_id' string='Product Template'
  • product_uom_id Many2one → uom.uom
    comodel_name='uom.uom' domain="[('category_id', '=', category_uom_id)]" readonly=True states={'draft': [('readonly', False)]} string='Unit of Measure'
  • propagate Boolean
    help='If checked, when the previous move of the move (which was generated by a next procurement) is cancelled or split, the move generated by this move will too' args: 'Propagate cancel and split'
  • requested_by Many2one → res.users
    comodel_name='res.users' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Requested by' track_visibility='onchange'
  • routing_id Many2one → mrp.routing
    comodel_name='mrp.routing' help='The list of operations (list of work centers) to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production plannification.' on_delete='setnull' readonly=True states={'draft': [('readonly', False)]} string='Routing'
  • state Selection
    copy=False default='draft' index=True required=True selection=[('draft', 'Draft'), ('to_approve', 'To Be Approved'), ('approved', 'Approved'), ('done', 'Done'), ('cancel', 'Cancelled')] track_visibility='onchange'
Public methods (8)
  • action_view_mrp_productions(self)
    @api.multi
  • button_approved(self)
    @api.multi
  • button_cancel(self)
    @api.multi
  • button_done(self)
    @api.multi
  • button_draft(self)
    @api.multi
  • button_to_approve(self)
    @api.multi
  • create(self, vals)
    @api.model
    Add sequence if name is not defined and subscribe to the thread the user assigned to the request.
  • write(self, vals)
    @api.multi

New fields (8)
  • bom_id Many2one
    readonly=True related='mrp_production_request_id.bom_id'
  • date_planned_finished Datetime
    required=True string='Deadline End'
  • date_planned_start Datetime
    required=True string='Deadline Start'
  • mo_qty Float
    digits=dp.get_precision('Product Unit of Measure') string='Quantity'
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' readonly=True
  • pending_qty Float
    digits=dp.get_precision('Product Unit of Measure') related='mrp_production_request_id.pending_qty'
  • product_line_ids One2many → mrp.production.request.create.mo.line
    comodel_name='mrp.production.request.create.mo.line' inverse_name='mrp_production_request_create_mo_id' readonly=True string='Products needed'
  • product_uom_id Many2one
    related='mrp_production_request_id.product_uom_id'
Public methods (3)
  • compute_product_line_ids(self)
    @api.multi
  • create_mo(self)
    @api.multi
  • default_get(self, fields)
    @api.model

New fields (7)
  • available_qty Float
    compute='_compute_available_qty' digits=dp.get_precision('Product Unit of Measure') string='Quantity Available'
  • bottle_neck_factor Float
    compute='_compute_bottle_neck_factor'
  • location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • mrp_production_request_create_mo_id Many2one → mrp.production.request.create.mo
    comodel_name='mrp.production.request.create.mo'
  • product_id Many2one → product.product
    comodel_name='product.product' required=True string='Product'
  • product_qty Float
    digits=dp.get_precision('Product Unit of Measure') required=True string='Quantity Required'
  • product_uom_id Many2one → uom.uom
    comodel_name='uom.uom' required=True string='UoM'
Public methods (0)

No public methods.

New fields (1)
  • mrp_production_request Boolean
    help='Check this box to generate manufacturing request instead of generating manufacturing orders from procurement.' string='Manufacturing Request'
Public methods (0)

No public methods.

New fields (1)
  • created_mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' string='Created Production Request'
Public methods (1)
  • create(self, vals)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/manufacture
GIT
GIThttps://github.com/OCA/manufacture.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/manufacture/tree/11.0/mrp_production_request
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent
COMMITTERS
COMMITTERSLois Rilo, OCA Transbot, oca-travis, Weblate, OCA-git-bot, hveficent
WEBSITE
WEBSITEhttps://github.com/OCA/manufacture
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:59
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_available_unreserved
odoo/odoo:
    - mrp
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - stock
    - barcodes
    - web_planner
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
mrp_production_form_view mrp.production.form - mrp_production_request mrp.production field Inherits mrp.mrp_production_form_view
mrp_production_request_create_mo_view mrp.production.request.create.mo.form mrp.production.request.create.mo form New
view_mrp_production_request_form mrp.production.request.form mrp.production.request form New
view_mrp_production_request_search mrp.production.request.search mrp.production.request search New
view_mrp_production_request_tree mrp.production.request.tree mrp.production.request tree New
view_template_property_form product.template.form - mrp_production_request product.template field Inherits stock.view_template_property_form
Models touched (8)

New fields (1)
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' copy=False readonly=True string='Manufacturing Request'
Public methods (0)

No public methods.

New fields (28)
  • assigned_to Many2one → res.users
    comodel_name='res.users' domain=<expr> readonly=True states={'draft': [('readonly', False)]} string='Approver' track_visibility='onchange'
  • bom_id Many2one → mrp.bom
    comodel_name='mrp.bom' readonly=True required=True states={'draft': [('readonly', False)]} string='Bill of Materials'
  • category_uom_id Many2one
    related='product_uom_id.category_id'
  • company_id Many2one → res.company
    comodel_name='res.company' default=_company_get required=True string='Company'
  • date_planned_finished Datetime
    copy=False default=fields.Datetime.now index=True states={'confirmed': [('readonly', False)]} args: 'Deadline End'
  • date_planned_start Datetime
    copy=False default=fields.Datetime.now index=True oldname='date_planned' required=True states={'confirmed': [('readonly', False)]} args: 'Deadline Start'
  • description Text
    args: 'Description'
  • done_qty Float
    compute='_compute_manufactured_qty' digits=dp.get_precision('Product Unit of Measure') help='Sum of the quantities in all done Manufacturing Orders.' readonly=True store=True string='Quantity Done'
  • location_dest_id Many2one → stock.location
    comodel_name='stock.location' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Finished Products Location'
  • location_src_id Many2one → stock.location
    comodel_name='stock.location' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Raw Materials Location'
  • manufactured_qty Float
    compute='_compute_manufactured_qty' digits=dp.get_precision('Product Unit of Measure') help='Sum of the quantities in Manufacturing Orders (in any state).' readonly=True store=True string='Quantity in Manufacturing Orders'
  • move_dest_ids One2many → stock.move
    comodel_name='stock.move' inverse_name='created_mrp_production_request_id' string='Stock Movements of Produced Goods'
  • mrp_production_count Integer
    compute='_compute_mrp_production_count' string="MO's Count"
  • mrp_production_ids One2many → mrp.production
    comodel_name='mrp.production' inverse_name='mrp_production_request_id' readonly=True string='Manufacturing Orders'
  • name Char
    default='/' readonly=True required=True states={'draft': [('readonly', False)]}
  • orderpoint_id Many2one → stock.warehouse.orderpoint
    comodel_name='stock.warehouse.orderpoint' string='Orderpoint'
  • origin Char
    readonly=True states={'draft': [('readonly', False)]} string='Source Document'
  • pending_qty Float
    compute='_compute_manufactured_qty' digits=dp.get_precision('Product Unit of Measure') help='Quantity pending to add to Manufacturing Orders to fulfill the Manufacturing Request requirement.' readonly=True store=True string='Pending Quantity'
  • picking_type_id Many2one → stock.picking.type
    comodel_name='stock.picking.type' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Picking Type'
  • procurement_group_id Many2one → procurement.group
    comodel_name='procurement.group' copy=False string='Procurement Group'
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', 'in', ['product', 'consu'])] readonly=True required=True states={'draft': [('readonly', False)]} string='Product' track_visibility='onchange'
  • product_qty Float
    default=1.0 digits=dp.get_precision('Product Unit of Measure') readonly=True required=True states={'draft': [('readonly', False)]} string='Required Quantity' track_visibility='onchange'
  • product_tmpl_id Many2one → product.template
    comodel_name='product.template' related='product_id.product_tmpl_id' string='Product Template'
  • product_uom_id Many2one → product.uom
    comodel_name='product.uom' domain="[('category_id', '=', category_uom_id)]" readonly=True states={'draft': [('readonly', False)]} string='Unit of Measure'
  • propagate Boolean
    help='If checked, when the previous move of the move (which was generated by a next procurement) is cancelled or split, the move generated by this move will too' args: 'Propagate cancel and split'
  • requested_by Many2one → res.users
    comodel_name='res.users' default=_get_default_requested_by readonly=True required=True states={'draft': [('readonly', False)]} string='Requested by' track_visibility='onchange'
  • routing_id Many2one → mrp.routing
    comodel_name='mrp.routing' help='The list of operations (list of work centers) to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production plannification.' on_delete='setnull' readonly=True states={'draft': [('readonly', False)]} string='Routing'
  • state Selection
    copy=False default='draft' index=True required=True selection=[('draft', 'Draft'), ('to_approve', 'To Be Approved'), ('approved', 'Approved'), ('done', 'Done'), ('cancel', 'Cancelled')] track_visibility='onchange'
Public methods (8)
  • action_view_mrp_productions(self)
    @api.multi
  • button_approved(self)
    @api.multi
  • button_cancel(self)
    @api.multi
  • button_done(self)
    @api.multi
  • button_draft(self)
    @api.multi
  • button_to_approve(self)
    @api.multi
  • create(self, vals)
    @api.model
    Add sequence if name is not defined and subscribe to the thread the user assigned to the request.
  • write(self, vals)
    @api.multi

New fields (6)
  • bom_id Many2one
    readonly=True related='mrp_production_request_id.bom_id'
  • mo_qty Float
    digits=dp.get_precision('Product Unit of Measure') string='Quantity'
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' readonly=True
  • pending_qty Float
    digits=dp.get_precision('Product Unit of Measure') related='mrp_production_request_id.pending_qty'
  • product_line_ids One2many → mrp.production.request.create.mo.line
    comodel_name='mrp.production.request.create.mo.line' inverse_name='mrp_production_request_create_mo_id' readonly=True string='Products needed'
  • product_uom_id Many2one
    related='mrp_production_request_id.product_uom_id'
Public methods (3)
  • compute_product_line_ids(self)
    @api.multi
  • create_mo(self)
    @api.multi
  • default_get(self, fields)
    @api.model

New fields (7)
  • available_qty Float
    compute=_compute_available_qty digits=dp.get_precision('Product Unit of Measure') string='Quantity Available'
  • bottle_neck_factor Float
    compute=_compute_bottle_neck_factor
  • location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • mrp_production_request_create_mo_id Many2one → mrp.production.request.create.mo
    comodel_name='mrp.production.request.create.mo'
  • product_id Many2one → product.product
    comodel_name='product.product' required=True string='Product'
  • product_qty Float
    digits=dp.get_precision('Product Unit of Measure') required=True string='Quantity Required'
  • product_uom_id Many2one → product.uom
    comodel_name='product.uom' required=True string='UoM'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • mrp_production_request Boolean
    default=False help='Check this box to generate manufacturing request instead of generating manufacturing orders from procurement.' string='Manufacturing Request'
Public methods (0)

No public methods.

New fields (1)
  • created_mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' string='Created Production Request'
Public methods (1)
  • create(self, vals)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/manufacture
GIT
GIThttps://github.com/OCA/manufacture.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/manufacture/tree/10.0/mrp_production_request
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent
COMMITTERS
COMMITTERSLois Rilo, Jordi Ballester Alomar, OCA Transbot, Florian da Costa, oca-travis, Weblate
WEBSITE
WEBSITEhttps://github.com/OCA/manufacture
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:58
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_available_unreserved
odoo/odoo:
    - mrp
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - report
    - stock
    - procurement
    - barcodes
    - web_planner
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
mrp_production_form_view mrp.production.form - mrp_production_request mrp.production field Inherits mrp.mrp_production_form_view
mrp_production_request_create_mo_view mrp.production.request.create.mo.form mrp.production.request.create.mo form New
procurement_form_view procurement.order.form - mrp_production_request procurement.order xpath Inherits procurement.procurement_form_view
view_mrp_production_request_form mrp.production.request.form mrp.production.request form New
view_mrp_production_request_search mrp.production.request.search mrp.production.request search New
view_mrp_production_request_tree mrp.production.request.tree mrp.production.request tree New
view_template_property_form product.template.form - mrp_production_request product.template field Inherits stock.view_template_property_form
Models touched (7)

New fields (1)
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' copy=False readonly=True string='Manufacturing Request'
Public methods (0)

No public methods.

New fields (28)
  • assigned_to Many2one → res.users
    comodel_name='res.users' readonly=True states={'draft': [('readonly', False)]} string='Approver' track_visibility='onchange'
  • bom_id Many2one → mrp.bom
    comodel_name='mrp.bom' readonly=True required=True states={'draft': [('readonly', False)]} string='Bill of Materials'
  • category_uom_id Many2one
    related='product_uom_id.category_id'
  • company_id Many2one → res.company
    comodel_name='res.company' default=_company_get required=True string='Company'
  • date_planned_finished Datetime
    copy=False default=fields.Datetime.now index=True states={'confirmed': [('readonly', False)]} args: 'Deadline End'
  • date_planned_start Datetime
    copy=False default=fields.Datetime.now index=True oldname='date_planned' required=True states={'confirmed': [('readonly', False)]} args: 'Deadline Start'
  • description Text
    args: 'Description'
  • done_qty Float
    compute=_compute_manufactured_qty digits=dp.get_precision('Product Unit of Measure') help='Sum of the quantities in all done Manufacturing Orders.' readonly=True store=True string='Quantity Done'
  • location_dest_id Many2one → stock.location
    comodel_name='stock.location' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Finished Products Location'
  • location_src_id Many2one → stock.location
    comodel_name='stock.location' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Raw Materials Location'
  • manufactured_qty Float
    compute=_compute_manufactured_qty digits=dp.get_precision('Product Unit of Measure') help='Sum of the quantities in Manufacturing Orders (in any state).' readonly=True store=True string='Quantity in Manufacturing Orders'
  • mrp_production_ids One2many → mrp.production
    comodel_name='mrp.production' inverse_name='mrp_production_request_id' readonly=True string='Manufacturing Orders'
  • name Char
    default='/' readonly=True required=True states={'draft': [('readonly', False)]}
  • origin Char
    readonly=True states={'draft': [('readonly', False)]} string='Source Document'
  • pending_qty Float
    compute=_compute_manufactured_qty digits=dp.get_precision('Product Unit of Measure') help='Quantity pending to add to Manufacturing Orders to fulfill the Manufacturing Request requirement.' readonly=True store=True string='Pending Quantity'
  • picking_type_id Many2one → stock.picking.type
    comodel_name='stock.picking.type' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Picking Type'
  • procurement_group_id Many2one → procurement.group
    comodel_name='procurement.group' copy=False string='Procurement Group'
  • procurement_id Many2one → procurement.order
    comodel_name='procurement.order' readonly=True string='Procurement Order'
  • procurement_ids One2many → procurement.order
    comodel_name='procurement.order' inverse_name='mrp_production_request_id' string='Related Procurements'
  • procurement_state Selection
    readonly=True related='procurement_id.state' store=True string='Procurement State'
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', 'in', ['product', 'consu'])] readonly=True required=True states={'draft': [('readonly', False)]} string='Product' track_visibility='onchange'
  • product_qty Float
    digits=dp.get_precision('Product Unit of Measure') readonly=True required=True states={'draft': [('readonly', False)]} string='Required Quantity' track_visibility='onchange'
  • product_tmpl_id Many2one → product.template
    comodel_name='product.template' related='product_id.product_tmpl_id' string='Product Template'
  • product_uom_id Many2one → product.uom
    comodel_name='product.uom' domain="[('category_id', '=', category_uom_id)]" readonly=True states={'draft': [('readonly', False)]} string='Unit of Measure'
  • propagate Boolean
    help='If checked, when the previous move of the move (which was generated by a next procurement) is cancelled or split, the move generated by this move will too' args: 'Propagate cancel and split'
  • requested_by Many2one → res.users
    comodel_name='res.users' default=_get_default_requested_by readonly=True required=True states={'draft': [('readonly', False)]} string='Requested by' track_visibility='onchange'
  • routing_id Many2one → mrp.routing
    comodel_name='mrp.routing' help='The list of operations (list of work centers) to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production plannification.' on_delete='setnull' readonly=True states={'draft': [('readonly', False)]} string='Routing'
  • state Selection
    copy=False default='draft' index=True required=True selection=[('draft', 'Draft'), ('to_approve', 'To Be Approved'), ('approved', 'Approved'), ('done', 'Done'), ('cancel', 'Cancelled')] track_visibility='onchange'
Public methods (7)
  • button_approved(self)
    @api.multi
  • button_cancel(self)
    @api.multi
  • button_done(self)
    @api.multi
  • button_draft(self)
    @api.multi
  • button_to_approve(self)
    @api.multi
  • create(self, vals)
    @api.model
    Add sequence if name is not defined and subscribe to the thread the user assigned to the request.
  • write(self, vals)
    @api.multi

New fields (6)
  • bom_id Many2one
    readonly=True related='mrp_production_request_id.bom_id'
  • mo_qty Float
    digits=dp.get_precision('Product Unit of Measure') string='Quantity'
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' readonly=True
  • pending_qty Float
    digits=dp.get_precision('Product Unit of Measure') related='mrp_production_request_id.pending_qty'
  • product_line_ids One2many → mrp.production.request.create.mo.line
    comodel_name='mrp.production.request.create.mo.line' inverse_name='mrp_production_request_create_mo_id' readonly=True string='Products needed'
  • product_uom_id Many2one
    related='mrp_production_request_id.product_uom_id'
Public methods (3)
  • compute_product_line_ids(self)
    @api.multi
  • create_mo(self)
    @api.multi
  • default_get(self, fields)
    @api.model

New fields (7)
  • available_qty Float
    compute=_compute_available_qty digits=dp.get_precision('Product Unit of Measure') string='Quantity Available'
  • bottle_neck_factor Float
    compute=_compute_bottle_neck_factor
  • location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • mrp_production_request_create_mo_id Many2one → mrp.production.request.create.mo
    comodel_name='mrp.production.request.create.mo'
  • product_id Many2one → product.product
    comodel_name='product.product' required=True string='Product'
  • product_qty Float
    digits=dp.get_precision('Product Unit of Measure') required=True string='Quantity Required'
  • product_uom_id Many2one → product.uom
    comodel_name='product.uom' required=True string='UoM'
Public methods (0)

No public methods.

New fields (1)
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' copy=False string='Manufacturing Request'
Public methods (1)
  • propagate_cancels(self)
    @api.multi

New fields (1)
  • mrp_production_request Boolean
    default=False help='Check this box to generate manufacturing request instead of generating manufacturing orders from procurement.' string='Manufacturing Request'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create(self, vals)
    @api.model
REPOSITORY
REPOSITORYOCA/manufacture
GIT
GIThttps://github.com/OCA/manufacture.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/manufacture/tree/9.0/mrp_production_request
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, Weblate, lreficent
WEBSITE
WEBSITEhttps://github.com/OCA/manufacture
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_available_unreserved
odoo/odoo:
    - mrp
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - report
    - procurement
    - stock_account
    - stock
    - barcodes
    - web_planner
    - account
    - analytic
    - web_tip
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
mrp_production_form_view mrp.production.form - mrp_production_request mrp.production field Inherits mrp.mrp_production_form_view
mrp_production_request_create_mo_view mrp.production.request.create.mo.form mrp.production.request.create.mo form New
procurement_form_view procurement.order.form - mrp_production_request procurement.order xpath Inherits procurement.procurement_form_view
view_mrp_production_request_form mrp.production.request.form mrp.production.request form New
view_mrp_production_request_search mrp.production.request.search mrp.production.request search New
view_mrp_production_request_tree mrp.production.request.tree mrp.production.request tree New
view_template_property_form product.template.form - mrp_production_request product.template field Inherits stock.view_template_property_form
Models touched (7)

New fields (1)
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' copy=False readonly=True string='Manufacturing Request'
Public methods (0)

No public methods.

New fields (23)
  • assigned_to Many2one → res.users
    comodel_name='res.users' readonly=True states={'draft': [('readonly', False)]} string='Approver' track_visibility='onchange'
  • bom_id Many2one → mrp.bom
    comodel_name='mrp.bom' readonly=True required=True states={'draft': [('readonly', False)]} string='Bill of Materials'
  • category_uom_id Many2one
    related='product_uom.category_id'
  • company_id Many2one → res.company
    comodel_name='res.company' default=_company_get required=True string='Company'
  • date_planned Date
    default=fields.Date.context_today required=True string='Planned Date' track_visibility='onchange'
  • description Text
    args: 'Description'
  • done_qty Float
    compute=_compute_manufactured_qty digits_compute=dp.get_precision('Product Unit of Measure') help='Sum of the quantities in all done Manufacturing Orders.' readonly=True store=True string='Quantity Done'
  • location_dest_id Many2one → stock.location
    comodel_name='stock.location' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Finished Products Location'
  • location_src_id Many2one → stock.location
    comodel_name='stock.location' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Raw Materials Location'
  • manufactured_qty Float
    compute=_compute_manufactured_qty digits_compute=dp.get_precision('Product Unit of Measure') help='Sum of the quantities in Manufacturing Orders (in any state).' readonly=True store=True string='Quantity in Manufacturing Orders'
  • mrp_production_ids One2many → mrp.production
    comodel_name='mrp.production' inverse_name='mrp_production_request_id' string='Manufacturing Orders'
  • name Char
    default='/' readonly=True required=True states={'draft': [('readonly', False)]}
  • origin Char
    readonly=True states={'draft': [('readonly', False)]} string='Source Document'
  • pending_qty Float
    compute=_compute_manufactured_qty digits_compute=dp.get_precision('Product Unit of Measure') help='Quantity pending to add to Manufacturing Orders to fulfill the Manufacturing Request requirement.' readonly=True store=True string='Pending Quantity'
  • procurement_id Many2one → procurement.order
    comodel_name='procurement.order' readonly=True string='Procurement Order'
  • procurement_state Selection
    readonly=True related='procurement_id.state' store=True string='Procurement State'
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', 'in', ['product', 'consu'])] readonly=True required=True states={'draft': [('readonly', False)]} string='Product' track_visibility='onchange'
  • product_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') readonly=True required=True states={'draft': [('readonly', False)]} string='Required Quantity' track_visibility='onchange'
  • product_tmpl_id Many2one → product.template
    comodel_name='product.template' related='product_id.product_tmpl_id' string='Product Template'
  • product_uom Many2one → product.uom
    comodel_name='product.uom' domain="[('category_id', '=', category_uom_id)]" readonly=True states={'draft': [('readonly', False)]} string='Unit of Measure'
  • requested_by Many2one → res.users
    comodel_name='res.users' default=_get_default_requested_by readonly=True required=True states={'draft': [('readonly', False)]} string='Requested by' track_visibility='onchange'
  • routing_id Many2one → mrp.routing
    comodel_name='mrp.routing' help='The list of operations (list of work centers) to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production plannification.' on_delete='setnull' readonly=True states={'draft': [('readonly', False)]} string='Routing'
  • state Selection
    copy=False default='draft' index=True required=True selection=[('draft', 'Draft'), ('to_approve', 'To Be Approved'), ('approved', 'Approved'), ('done', 'Done'), ('cancel', 'Cancelled')] track_visibility='onchange'
Public methods (7)
  • button_approved(self)
    @api.multi
  • button_cancel(self)
    @api.multi
  • button_done(self)
    @api.multi
  • button_draft(self)
    @api.multi
  • button_to_approve(self)
    @api.multi
  • create(self, vals)
    @api.model
    Add sequence if name is not defined and subscribe to the thread the user assigned to the request.
  • write(self, vals)
    @api.multi

New fields (6)
  • bom_id Many2one
    readonly=True related='mrp_production_request_id.bom_id'
  • mo_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') string='Quantity'
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' readonly=True
  • pending_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') related='mrp_production_request_id.pending_qty'
  • product_line_ids One2many → mrp.production.request.create.mo.line
    comodel_name='mrp.production.request.create.mo.line' inverse_name='mrp_production_request_create_mo_id' readonly=True string='Products needed'
  • product_uom Many2one
    related='mrp_production_request_id.product_uom'
Public methods (2)
  • compute_product_line_ids(self)
    @api.multi
  • create_mo(self)
    @api.multi

New fields (7)
  • available_qty Float
    compute=_compute_available_qty digits_compute=dp.get_precision('Product Unit of Measure') string='Quantity Available'
  • bottle_neck_factor Float
    compute=_compute_bottle_neck_factor
  • location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • mrp_production_request_create_mo_id Many2one → mrp.production.request.create.mo
    comodel_name='mrp.production.request.create.mo'
  • product_id Many2one → product.product
    comodel_name='product.product' required=True string='Product'
  • product_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') required=True string='Quantity Required'
  • product_uom Many2one → product.uom
    comodel_name='product.uom' required=True string='UoM'
Public methods (0)

No public methods.

New fields (1)
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' copy=False string='Manufacturing Request'
Public methods (1)
  • propagate_cancels(self)
    @api.multi

New fields (1)
  • mrp_production_request Boolean
    default=False help='Check this box to generate manufacturing request instead of generating manufacturing orders from procurement.' string='Manufacturing Request'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create(self, vals)
    @api.model
REPOSITORY
REPOSITORYOCA/manufacture
GIT
GIThttps://github.com/OCA/manufacture.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/manufacture/tree/8.0/mrp_production_request
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent
COMMITTERS
COMMITTERSoca-travis, Weblate, Andhitia Rama, mike
WEBSITE
WEBSITEhttps://github.com/OCA/manufacture
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/manufacture:
    - mrp_hook
OCA/stock-logistics-warehouse:
    - stock_available_unreserved
odoo/odoo:
    - mrp
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - report
    - procurement
    - stock_account
    - stock
    - board
    - web_kanban_gauge
    - web_kanban_sparkline
    - account
    - analytic
    - edi
    - email_template
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
mrp_production_form_view mrp.production.form - mrp_production_request mrp.production field Inherits mrp.mrp_production_form_view
mrp_production_request_create_mo_view mrp.production.request.create.mo.form mrp.production.request.create.mo form New
procurement_form_view procurement.order.form - mrp_production_request procurement.order xpath Inherits procurement.procurement_form_view
view_mrp_production_request_form mrp.production.request.form mrp.production.request form New
view_mrp_production_request_search mrp.production.request.search mrp.production.request search New
view_mrp_production_request_tree mrp.production.request.tree mrp.production.request tree New
view_template_property_form product.template.form - mrp_production_request product.template field Inherits stock.view_template_property_form
Models touched (7)

New fields (1)
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' copy=False readonly=True string='Manufacturing Request'
Public methods (0)

No public methods.

New fields (23)
  • assigned_to Many2one → res.users
    comodel_name='res.users' readonly=True states={'draft': [('readonly', False)]} string='Approver' track_visibility='onchange'
  • bom_id Many2one → mrp.bom
    comodel_name='mrp.bom' readonly=True required=True states={'draft': [('readonly', False)]} string='Bill of Materials'
  • category_uom_id Many2one
    related='product_uom.category_id'
  • company_id Many2one → res.company
    comodel_name='res.company' default=_company_get required=True string='Company'
  • date_planned Date
    default=fields.Date.context_today required=True string='Planned Date' track_visibility='onchange'
  • description Text
    args: 'Description'
  • done_qty Float
    compute=_compute_manufactured_qty digits_compute=dp.get_precision('Product Unit of Measure') help='Sum of the quantities in all done Manufacturing Orders.' readonly=True store=True string='Quantity Done'
  • location_dest_id Many2one → stock.location
    comodel_name='stock.location' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Finished Products Location'
  • location_src_id Many2one → stock.location
    comodel_name='stock.location' default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Raw Materials Location'
  • manufactured_qty Float
    compute=_compute_manufactured_qty digits_compute=dp.get_precision('Product Unit of Measure') help='Sum of the quantities in Manufacturing Orders (in any state).' readonly=True store=True string='Quantity in Manufacturing Orders'
  • mrp_production_ids One2many → mrp.production
    comodel_name='mrp.production' inverse_name='mrp_production_request_id' string='Manufacturing Orders'
  • name Char
    default='/' readonly=True required=True states={'draft': [('readonly', False)]}
  • origin Char
    readonly=True states={'draft': [('readonly', False)]} string='Source Document'
  • pending_qty Float
    compute=_compute_manufactured_qty digits_compute=dp.get_precision('Product Unit of Measure') help='Quantity pending to add to Manufacturing Orders to fulfill the Manufacturing Request requirement.' readonly=True store=True string='Pending Quantity'
  • procurement_id Many2one → procurement.order
    comodel_name='procurement.order' readonly=True string='Procurement Order'
  • procurement_state Selection
    readonly=True related='procurement_id.state' store=True string='Procurement State'
  • product_id Many2one → product.product
    comodel_name='product.product' domain=[('type', 'in', ['product', 'consu'])] readonly=True required=True states={'draft': [('readonly', False)]} string='Product' track_visibility='onchange'
  • product_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') readonly=True required=True states={'draft': [('readonly', False)]} string='Required Quantity' track_visibility='onchange'
  • product_tmpl_id Many2one → product.template
    comodel_name='product.template' related='product_id.product_tmpl_id' string='Product Template'
  • product_uom Many2one → product.uom
    comodel_name='product.uom' domain="[('category_id', '=', category_uom_id)]" readonly=True states={'draft': [('readonly', False)]} string='Unit of Measure'
  • requested_by Many2one → res.users
    comodel_name='res.users' default=_get_default_requested_by readonly=True required=True states={'draft': [('readonly', False)]} string='Requested by' track_visibility='onchange'
  • routing_id Many2one → mrp.routing
    comodel_name='mrp.routing' help='The list of operations (list of work centers) to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production plannification.' on_delete='setnull' readonly=True states={'draft': [('readonly', False)]} string='Routing'
  • state Selection
    copy=False default='draft' index=True required=True selection=[('draft', 'Draft'), ('to_approve', 'To Be Approved'), ('approved', 'Approved'), ('done', 'Done'), ('cancel', 'Cancelled')] track_visibility='onchange'
Public methods (7)
  • button_approved(self)
    @api.multi
  • button_cancel(self)
    @api.multi
  • button_done(self)
    @api.multi
  • button_draft(self)
    @api.multi
  • button_to_approve(self)
    @api.multi
  • create(self, vals)
    @api.model
    Add sequence if name is not defined and subscribe to the thread the user assigned to the request.
  • write(self, vals)
    @api.multi

New fields (6)
  • bom_id Many2one
    readonly=True related='mrp_production_request_id.bom_id'
  • mo_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') string='Quantity'
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' readonly=True
  • pending_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') related='mrp_production_request_id.pending_qty'
  • product_line_ids One2many → mrp.production.request.create.mo.line
    comodel_name='mrp.production.request.create.mo.line' inverse_name='mrp_production_request_create_mo_id' readonly=True string='Products needed'
  • product_uom Many2one
    related='mrp_production_request_id.product_uom'
Public methods (2)
  • compute_product_line_ids(self)
    @api.multi
  • create_mo(self)
    @api.multi

New fields (7)
  • available_qty Float
    compute=_compute_available_qty digits_compute=dp.get_precision('Product Unit of Measure') string='Quantity Available'
  • bottle_neck_factor Float
    compute=_compute_bottle_neck_factor
  • location_id Many2one → stock.location
    comodel_name='stock.location' required=True
  • mrp_production_request_create_mo_id Many2one → mrp.production.request.create.mo
    comodel_name='mrp.production.request.create.mo'
  • product_id Many2one → product.product
    comodel_name='product.product' required=True string='Product'
  • product_qty Float
    digits_compute=dp.get_precision('Product Unit of Measure') required=True string='Quantity Required'
  • product_uom Many2one → product.uom
    comodel_name='product.uom' required=True string='UoM'
Public methods (0)

No public methods.

New fields (1)
  • mrp_production_request_id Many2one → mrp.production.request
    comodel_name='mrp.production.request' copy=False string='Manufacturing Request'
Public methods (1)
  • propagate_cancel(self, procurement)
    @api.model

New fields (1)
  • mrp_production_request Boolean
    default=False help='Check this box to generate manufacturing request instead of generating manufacturing orders from procurement.' string='Manufacturing Request'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create(self, vals)
    @api.model
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/manufacture
PULL REQUEST
PULL REQUEST[18.0][MIG] mrp_production_request (#1552)