MRP Subcontracting

mrp_subcontracting
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/mrp_subcontracting
VERSION
VERSION 0.1
CATEGORY
CATEGORYSupply Chain/Manufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Aaron Bohy, Jorge Pinna Puissant, Arnold Moyaux, Julien Castiaux, Victor Feyens, William Henrotin, svs-odoo, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, William Braeckman, Romain Estievenart, JF Aubert, luvi, clesgow, Djamel Touati, Pieter Claeys (clpi), Dylan Kiss (dyki), Paweł Fertyk, Ethan Vincent, lase@odoo.com, Quentin Wolfs, kcv-odoo, mega, nihp-odoo, Agustin Castro Bugallo, Stéphane Diez, dhha-odoo, kawkb, David Van Droogenbroeck (DROD), Mohammad Abdulmoneim (abdu), djameltouati, Bastien PIERRE, MaximeNoirhomme, Vincent Sevestre, plha-odoo, Krzysztof Magusiak (krma), Omar (OSAH), Lulu Grimalkin (lugr), temo-odoo, Lancelot Semal, Quentin Colla (qucol), ABE-Mark45, Waleed Elgamal, sako-odoo, Sanket Tank(stan)
WEBSITE
WEBSITEhttps://www.odoo.com/app/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mrp
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - uom
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (26)
XML IDNameModelTypeStatus
mrp_bom_form_view mrp.bom.form.view mrp.bom xpath Inherits mrp.mrp_bom_form_view
mrp_production_subcontracting_filter mrp.production.subcontracting.select mrp.production xpath Inherits mrp.view_mrp_production_filter
mrp_production_subcontracting_form_view mrp.production.subcontracting.form.view mrp.production xpath Inherits mrp.mrp_production_form_view
mrp_production_subcontracting_portal_form_view mrp.production.subcontracting.portal.form.view mrp.production xpath Inherits mrp_production_subcontracting_form_view
mrp_production_subcontracting_tree_view mrp.production.subcontracting.list mrp.production xpath Inherits mrp.mrp_production_tree_view
mrp_subcontracting_move_form_view mrp.subcontracting.move.form.view stock.move form New
mrp_subcontracting_move_tree_view mrp.subcontracting.move.list.view stock.move list New
mrp_subcontracting_portal_move_form_view mrp.subcontracting.portal.move.form.view stock.move xpath Inherits mrp_subcontracting_move_form_view
mrp_subcontracting_portal_stock_move_line_tree_view mrp.subcontracting.portal.stock.move.line.list.view stock.move.line xpath Inherits mrp_subcontracting_stock_move_line_tree_view
mrp_subcontracting_stock_move_line_tree_view mrp.subcontracting.stock.move.line.list.view stock.move.line list New
mrp_subcontracting_view_stock_move_line_operation_tree mrp.subcontracting.stock.move.line.operations.list stock.move.line xpath Inherits stock.view_stock_move_line_operation_tree
mrp_subcontracting_view_stock_move_operations mrp.subcontracting.stock.move.operations.form stock.move xpath Inherits stock.view_stock_move_operations
portal_my_home_menu_production Portal layout : production menu entries ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_my_home_productions Productions ir.ui.view qweb Inherits portal.portal_my_home
portal_my_productions My Productions ir.ui.view qweb New
product_supplierinfo_subcontractor_tree_view product.supplierinfo.subcontractor.list.view product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
quant_subcontracting_search_view stock.quant.subcontracting.search stock.quant xpath Inherits stock.quant_search_view
stock_picking_form_view stock.picking.form.view stock.picking xpath Inherits stock.view_picking_form
subcontracting Subcontracting Portal View ir.ui.view qweb New
subcontracting_portal Subcontracting View in Portal ir.ui.view qweb New
subcontracting_portal_embed Subcontracting Portal ir.ui.view qweb New
subcontracting_portal_production_form_view subcontracting.portal.production.view.form stock.picking form New
view_move_search stock.move.search stock.move xpath Inherits stock.view_move_search
view_partner_mrp_subcontracting_filter res.partner.select.inherit res.partner xpath Inherits base.view_res_partner_filter
view_partner_mrp_subcontracting_form res.partner.mrp_subcontracting.property.form.inherit res.partner xpath Inherits stock.view_partner_stock_form
view_warehouse_inherit_mrp_subcontracting Stock Warehouse Inherit Subcontracting stock.warehouse xpath Inherits mrp.view_warehouse_inherit_mrp
Models touched (19)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • subcontractor_ids Many2many → res.partner
    check_company=True string='Subcontractors' args: 'res.partner', 'mrp_bom_subcontractor'
  • type Selection
    ondelete={'subcontract': <expr>} selection_add=[('subcontract', 'Subcontracting')]
Public methods (0)

No public methods.

New fields (5)
  • bom_product_ids Many2many → product.product
    compute='_compute_bom_product_ids' help='List of Products used in the BoM, used to filter the list of products in the subcontracting portal view' args: 'product.product'
  • incoming_picking Many2one
    related='move_finished_ids.move_dest_ids.picking_id'
  • move_line_raw_ids One2many → stock.move.line
    compute='_compute_move_line_raw_ids' inverse='_inverse_move_line_raw_ids' readonly=False string='Detail Component' args: 'stock.move.line'
  • subcontracting_has_been_recorded Boolean
    copy=False args: 'Has been recorded?'
  • subcontractor_id Many2one → res.partner
    help='Used to restrict access to the portal user through Record Rules' string='Subcontractor' args: 'res.partner'
Public methods (4)
  • action_merge(self)
  • action_split_subcontracting(self)
  • pre_button_mark_done(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • button_unbuild(self)

New fields (0)

No new fields.

Public methods (1)
  • action_apply(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • is_subcontractor Boolean
    compute='_compute_is_subcontractor' help='Choose a vendor of type subcontractor if you want to subcontract the product' args: 'Subcontracted'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • subcontracting_location_id Many2one → stock.location
    args: 'stock.location'
Public methods (0)

No public methods.

New fields (5)
  • bom_ids Many2many → mrp.bom
    compute='_compute_bom_ids' string='BoMs for which the Partner is one of the subcontractors' args: 'mrp.bom'
  • is_subcontractor Boolean
    compute='_compute_is_subcontractor' search='_search_is_subcontractor' store=False string='Subcontractor'
  • picking_ids Many2many → stock.picking
    compute='_compute_picking_ids' string='Stock Pickings for which the Partner is the subcontractor' args: 'stock.picking'
  • production_ids Many2many → mrp.production
    compute='_compute_production_ids' string='MRP Productions for which the Partner is the subcontractor' args: 'mrp.production'
  • property_stock_subcontractor Many2one → stock.location
    company_dependent=True help='The stock location used as source and destination when sending goods to this contact during a subcontracting process.' string='Subcontractor Location' args: 'stock.location'
Public methods (0)

No public methods.

New fields (1)
  • subcontractor_ids One2many → res.partner
    args: 'res.partner', 'property_stock_subcontractor'
Public methods (1)
  • is_subcontract(self)

New fields (2)
  • is_subcontract Boolean
    args: 'The move is a subcontract receipt'
  • show_subcontracting_details_visible Boolean
    compute='_compute_show_subcontracting_details_visible'
Public methods (5)
  • action_show_details(self)
    Open the produce wizard in order to register tracked components for subcontracted product. Otherwise use standard behavior.
  • action_show_subcontract_details(self, lot_id=None)
    Display moves raw for subcontracted product self.
  • copy_data(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)
    If the initial demand is updated then also update the linked subcontract order to the new quantity.

New fields (0)

No new fields.

Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)

New fields (1)
  • show_subcontracting_details_visible Boolean
    compute='_compute_show_subcontracting_details_visible'
Public methods (1)
  • action_show_subcontract_details(self)

New fields (1)
  • is_subcontract Boolean
    search='_search_is_subcontract' store=False
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • subcontracting_mto_pull_id Many2one → stock.rule
    copy=False args: 'stock.rule', 'Subcontracting MTO Rule'
  • subcontracting_pull_id Many2one → stock.rule
    copy=False args: 'stock.rule', 'Subcontracting MTS Rule'
  • subcontracting_resupply_type_id Many2one → stock.picking.type
    copy=False domain=[('code', '=', 'internal')] args: 'stock.picking.type', 'Subcontracting Resupply Operation Type'
  • subcontracting_route_id Many2one → stock.route
    copy=False ondelete='restrict' args: 'stock.route', 'Resupply Subcontractor'
  • subcontracting_to_resupply Boolean
    default=True args: 'Resupply Subcontractors'
  • subcontracting_type_id Many2one → stock.picking.type
    copy=False domain=[('code', '=', 'mrp_operation')] args: 'stock.picking.type', 'Subcontracting Operation Type'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • get_rules_dict(self)
  • write(self, vals)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/mrp_subcontracting
VERSION
VERSION 0.1
CATEGORY
CATEGORYManufacturing/Manufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Xavier Morel, Aaron Bohy, Yannick Tivisse, qsm-odoo, Odoo Online, Arnold Moyaux, William Henrotin, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Pierre Paridans, snd, William Braeckman, Romain Estievenart, David (dafr), JF Aubert, yhu-odoo, Krzysztof Magusiak, Vincent Larcin, Adrien Widart (awt), clesgow, Djamel Touati, Pieter Claeys (clpi), Dylan Kiss (dyki), Michael (mcm), Chong Wang (cwg), Paweł Fertyk, Andrzej(pian), Ethan Vincent, lase@odoo.com, Aurelien MARIE (auma), Maryam Kia, suth-odoo, Julien Carion (juca), mega, Agustin Castro Bugallo, Chrysanthe (chgo), Louis (wil), aamo-odoo, Stéphane Diez, Mohammad Abdulmoneim, Mathias Mathy (MAMA), Pierre Pulinckx (PIPU), Jitendra Prajapat, David Van Droogenbroeck (DROD), djameltouati, Pierre Pulinckx (pipu), Pierre Pulinckx, Bastien PIERRE, MaximeNoirhomme, plha-odoo, Omar (OSAH), joseph, vlst-odoo, temo-odoo, ABE-Mark45
WEBSITE
WEBSITEhttps://www.odoo.com/app/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mrp
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - uom
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (27)
XML IDNameModelTypeStatus
mrp_bom_form_view mrp.bom.form.view mrp.bom xpath Inherits mrp.mrp_bom_form_view
mrp_production_subcontracting_filter mrp.production.subcontracting.select mrp.production xpath Inherits mrp.view_mrp_production_filter
mrp_production_subcontracting_form_view mrp.production.subcontracting.form.view mrp.production xpath Inherits mrp.mrp_production_form_view
mrp_production_subcontracting_portal_form_view mrp.production.subcontracting.portal.form.view mrp.production xpath Inherits mrp_production_subcontracting_form_view
mrp_production_subcontracting_tree_view mrp.production.subcontracting.list mrp.production xpath Inherits mrp.mrp_production_tree_view
mrp_subcontracting_move_form_view mrp.subcontracting.move.form.view stock.move form New
mrp_subcontracting_move_tree_view mrp.subcontracting.move.list.view stock.move list New
mrp_subcontracting_portal_move_form_view mrp.subcontracting.portal.move.form.view stock.move xpath Inherits mrp_subcontracting_move_form_view
mrp_subcontracting_portal_stock_move_line_tree_view mrp.subcontracting.portal.stock.move.line.list.view stock.move.line xpath Inherits mrp_subcontracting_stock_move_line_tree_view
mrp_subcontracting_stock_move_line_tree_view mrp.subcontracting.stock.move.line.list.view stock.move.line list New
mrp_subcontracting_view_stock_move_line_operation_tree mrp.subcontracting.stock.move.line.operations.list stock.move.line xpath Inherits stock.view_stock_move_line_operation_tree
mrp_subcontracting_view_stock_move_operations mrp.subcontracting.stock.move.operations.form stock.move xpath Inherits stock.view_stock_move_operations
portal_my_home_menu_production Portal layout : production menu entries ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_my_home_productions Productions ir.ui.view qweb Inherits portal.portal_my_home
portal_my_productions My Productions ir.ui.view qweb New
product_supplierinfo_subcontractor_tree_view product.supplierinfo.subcontractor.list.view product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
quant_subcontracting_search_view stock.quant.subcontracting.search stock.quant xpath Inherits stock.quant_search_view
stock_picking_form_view stock.picking.form.view stock.picking xpath Inherits stock.view_picking_form
subcontracting Subcontracting Portal View ir.ui.view qweb New
subcontracting_portal Subcontracting View in Portal ir.ui.view qweb New
subcontracting_portal_embed Subcontracting Portal ir.ui.view qweb New
subcontracting_portal_production_form_view subcontracting.portal.production.view.form stock.picking form New
view_location_form stock.location.form stock.location xpath Inherits stock.view_location_form
view_move_search stock.move.search stock.move xpath Inherits stock.view_move_search
view_partner_mrp_subcontracting_filter res.partner.select.inherit res.partner xpath Inherits base.view_res_partner_filter
view_partner_mrp_subcontracting_form res.partner.mrp_subcontracting.property.form.inherit res.partner xpath Inherits stock.view_partner_stock_form
view_warehouse_inherit_mrp_subcontracting Stock Warehouse Inherit Subcontracting stock.warehouse xpath Inherits mrp.view_warehouse_inherit_mrp
Models touched (20)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • subcontractor_ids Many2many → res.partner
    check_company=True string='Subcontractors' args: 'res.partner', 'mrp_bom_subcontractor'
  • type Selection
    ondelete={'subcontract': <expr>} selection_add=[('subcontract', 'Subcontracting')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • action_cancel(self)
  • action_confirm(self)

New fields (5)
  • bom_product_ids Many2many → product.product
    compute='_compute_bom_product_ids' help='List of Products used in the BoM, used to filter the list of products in the subcontracting portal view' args: 'product.product'
  • incoming_picking Many2one
    related='move_finished_ids.move_dest_ids.picking_id'
  • move_line_raw_ids One2many → stock.move.line
    compute='_compute_move_line_raw_ids' inverse='_inverse_move_line_raw_ids' readonly=False string='Detail Component' args: 'stock.move.line'
  • subcontracting_has_been_recorded Boolean
    copy=False args: 'Has been recorded?'
  • subcontractor_id Many2one → res.partner
    help='Used to restrict access to the portal user through Record Rules' string='Subcontractor' args: 'res.partner'
Public methods (4)
  • action_merge(self)
  • pre_button_mark_done(self)
  • subcontracting_record_component(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • button_unbuild(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • is_subcontractor Boolean
    compute='_compute_is_subcontractor' help='Choose a vendor of type subcontractor if you want to subcontract the product' args: 'Subcontracted'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • subcontracting_location_id Many2one → stock.location
    args: 'stock.location'
Public methods (0)

No public methods.

New fields (5)
  • bom_ids Many2many → mrp.bom
    compute='_compute_bom_ids' string='BoMs for which the Partner is one of the subcontractors' args: 'mrp.bom'
  • is_subcontractor Boolean
    compute='_compute_is_subcontractor' search='_search_is_subcontractor' store=False string='Subcontractor'
  • picking_ids Many2many → stock.picking
    compute='_compute_picking_ids' string='Stock Pickings for which the Partner is the subcontractor' args: 'stock.picking'
  • production_ids Many2many → mrp.production
    compute='_compute_production_ids' string='MRP Productions for which the Partner is the subcontractor' args: 'mrp.production'
  • property_stock_subcontractor Many2one → stock.location
    company_dependent=True help='The stock location used as source and destination when sending goods to this contact during a subcontracting process.' string='Subcontractor Location' args: 'stock.location'
Public methods (0)

No public methods.

New fields (2)
  • is_subcontracting_location Boolean
    help='Check this box to create a new dedicated subcontracting location for this company. Note that standard subcontracting routes will be adapted so as to take these into account automatically.' args: 'Is a Subcontracting Location?'
  • subcontractor_ids One2many → res.partner
    args: 'res.partner', 'property_stock_subcontractor'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (2)
  • is_subcontract Boolean
    args: 'The move is a subcontract receipt'
  • show_subcontracting_details_visible Boolean
    compute='_compute_show_subcontracting_details_visible'
Public methods (5)
  • action_show_details(self)
    Open the produce wizard in order to register tracked components for subcontracted product. Otherwise use standard behavior.
  • action_show_subcontract_details(self)
    Display moves raw for subcontracted product self.
  • copy_data(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)
    If the initial demand is updated then also update the linked subcontract order to the new quantity.

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)

New fields (2)
  • display_action_record_components Selection
    compute='_compute_display_action_record_components' args: [('hide', 'Hide'), ('facultative', 'Facultative'), ('mandatory', 'Mandatory')]
  • move_line_ids_without_package One2many
    domain=['&', '|', ('location_dest_id.usage', '!=', 'production'), ('move_id.picking_code', '!=', 'outgoing'), '|', ('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]
Public methods (1)
  • action_record_components(self)

New fields (1)
  • is_subcontract Boolean
    search='_search_is_subcontract' store=False
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • subcontracting_mto_pull_id Many2one → stock.rule
    copy=False args: 'stock.rule', 'Subcontracting MTO Rule'
  • subcontracting_pull_id Many2one → stock.rule
    copy=False args: 'stock.rule', 'Subcontracting MTS Rule'
  • subcontracting_resupply_type_id Many2one → stock.picking.type
    copy=False domain=[('code', '=', 'internal')] args: 'stock.picking.type', 'Subcontracting Resupply Operation Type'
  • subcontracting_route_id Many2one → stock.route
    copy=False ondelete='restrict' args: 'stock.route', 'Resupply Subcontractor'
  • subcontracting_to_resupply Boolean
    default=True args: 'Resupply Subcontractors'
  • subcontracting_type_id Many2one → stock.picking.type
    copy=False domain=[('code', '=', 'mrp_operation')] args: 'stock.picking.type', 'Subcontracting Operation Type'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • get_rules_dict(self)
  • write(self, vals)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/mrp_subcontracting
VERSION
VERSION 0.1
CATEGORY
CATEGORYManufacturing/Manufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Denis Ledoux, Xavier Morel, Nicolas Martinelli, Géry Debongnie, Aaron Bohy, GitHub, Yannick Tivisse, Odoo Online, Jorge Pinna Puissant, Arnold Moyaux, Adrien Dieudonné, William Henrotin, Joseph Caburnay, Anh Thao Pham (pta), svs-odoo, Samuel Degueldre, Touati Djamel (otd), Tiffany Chang (tic), Rémy Voet (ryv), Pierre Rousseau, Gorash, Pierre Paridans, William Braeckman, Romain Estievenart, David (dafr), JF Aubert, yhu-odoo, niyasraphy, Louis Wicket (wil), Adrien Widart (awt), clesgow, Pieter Claeys (clpi), Dylan Kiss (dyki), arsi, kir-odoo, FrancoisGe, Michael (mcm), Martin Maes, Paweł Fertyk, Khushi Vakil, Andrzej(pian), Ethan Vincent, lase@odoo.com, Aurelien MARIE (auma), suth-odoo, Julien Carion (juca), mega, Agustin Castro Bugallo, Chrysanthe (chgo), Louis (wil), aamo-odoo, David Van Droogenbroeck (DROD), djameltouati, Pierre Pulinckx (pipu), Bastien PIERRE, MaximeNoirhomme, Omar (OSAH), ABE-Mark45, Amr Elkhatieb, Vraj Panchal
WEBSITE
WEBSITEhttps://www.odoo.com/app/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mrp
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (29)
XML IDNameModelTypeStatus
mrp_bom_form_view mrp.bom.form.view mrp.bom xpath Inherits mrp.mrp_bom_form_view
mrp_production_subcontracting_filter mrp.production.subcontracting.select mrp.production xpath Inherits mrp.view_mrp_production_filter
mrp_production_subcontracting_form_view mrp.production.subcontracting.form.view mrp.production xpath Inherits mrp.mrp_production_form_view
mrp_production_subcontracting_portal_form_view mrp.production.subcontracting.portal.form.view mrp.production xpath Inherits mrp_production_subcontracting_form_view
mrp_production_subcontracting_tree_view mrp.production.subcontracting.tree mrp.production xpath Inherits mrp.mrp_production_tree_view
mrp_subcontracting_move_form_view mrp.subcontracting.move.form.view stock.move form New
mrp_subcontracting_move_tree_view mrp.subcontracting.move.tree.view stock.move tree New
mrp_subcontracting_portal_move_form_view mrp.subcontracting.portal.move.form.view stock.move xpath Inherits mrp_subcontracting_move_form_view
mrp_subcontracting_portal_stock_move_line_tree_view mrp.subcontracting.portal.stock.move.line.tree.view stock.move.line xpath Inherits mrp_subcontracting_stock_move_line_tree_view
mrp_subcontracting_product_template_search_view mrp.subcontracting.product.template.search product.template xpath Inherits product.product_template_search_view
mrp_subcontracting_stock_move_line_tree_view mrp.subcontracting.stock.move.line.tree.view stock.move.line tree New
mrp_subcontracting_view_stock_move_line_operation_tree mrp.subcontracting.stock.move.line.operations.tree stock.move.line xpath Inherits stock.view_stock_move_line_operation_tree
mrp_subcontracting_view_stock_move_operations mrp.subcontracting.stock.move.operations.form stock.move xpath Inherits stock.view_stock_move_operations
portal_my_home_menu_production Portal layout : production menu entries ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_my_home_productions Productions ir.ui.view qweb Inherits portal.portal_my_home
portal_my_productions My Productions ir.ui.view qweb New
product_supplierinfo_subcontractor_tree_view product.supplierinfo.subcontractor.tree.view product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
quant_subcontracting_search_view stock.quant.subcontracting.search stock.quant xpath Inherits stock.quant_search_view
stock_picking_form_view stock.picking.form.view stock.picking xpath Inherits stock.view_picking_form
subcontracting Subcontracting Portal View ir.ui.view qweb New
subcontracting_portal Subcontracting View in Portal ir.ui.view qweb New
subcontracting_portal_embed Subcontracting Portal ir.ui.view qweb New
subcontracting_portal_production_form_view subcontracting.portal.production.view.form stock.picking form New
view_location_form stock.location.form stock.location xpath Inherits stock.view_location_form
view_move_search stock.move.search stock.move xpath Inherits stock.view_move_search
view_partner_mrp_subcontracting_filter res.partner.select.inherit res.partner xpath Inherits base.view_res_partner_filter
view_partner_mrp_subcontracting_form res.partner.mrp_subcontracting.property.form.inherit res.partner xpath Inherits stock.view_partner_stock_form
view_stock_return_picking_form_subcontracting Return lines stock.return.picking xpath Inherits stock.view_stock_return_picking_form
view_warehouse_inherit_mrp_subcontracting Stock Warehouse Inherit Subcontracting stock.warehouse xpath Inherits mrp.view_warehouse_inherit_mrp
Models touched (18)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • subcontractor_ids Many2many → res.partner
    check_company=True string='Subcontractors' args: 'res.partner', 'mrp_bom_subcontractor'
  • type Selection
    ondelete={'subcontract': <expr>} selection_add=[('subcontract', 'Subcontracting')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • action_cancel(self)
  • action_confirm(self)

New fields (5)
  • bom_product_ids Many2many → product.product
    compute='_compute_bom_product_ids' help='List of Products used in the BoM, used to filter the list of products in the subcontracting portal view' args: 'product.product'
  • incoming_picking Many2one
    related='move_finished_ids.move_dest_ids.picking_id'
  • move_line_raw_ids One2many → stock.move.line
    compute='_compute_move_line_raw_ids' inverse='_inverse_move_line_raw_ids' readonly=False string='Detail Component' args: 'stock.move.line'
  • subcontracting_has_been_recorded Boolean
    copy=False args: 'Has been recorded?'
  • subcontractor_id Many2one → res.partner
    help='Used to restrict access to the portal user through Record Rules' string='Subcontractor' args: 'res.partner'
Public methods (4)
  • action_merge(self)
  • pre_button_mark_done(self)
  • subcontracting_record_component(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • is_subcontractor Boolean
    compute='_compute_is_subcontractor' help='Choose a vendor of type subcontractor if you want to subcontract the product' args: 'Subcontracted'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • subcontracting_location_id Many2one → stock.location
    args: 'stock.location'
Public methods (0)

No public methods.

New fields (5)
  • bom_ids Many2many → mrp.bom
    compute='_compute_bom_ids' string='BoMs for which the Partner is one of the subcontractors' args: 'mrp.bom'
  • is_subcontractor Boolean
    compute='_compute_is_subcontractor' search='_search_is_subcontractor' store=False string='Subcontractor'
  • picking_ids Many2many → stock.picking
    compute='_compute_picking_ids' string='Stock Pickings for which the Partner is the subcontractor' args: 'stock.picking'
  • production_ids Many2many → mrp.production
    compute='_compute_production_ids' string='MRP Productions for which the Partner is the subcontractor' args: 'mrp.production'
  • property_stock_subcontractor Many2one → stock.location
    company_dependent=True help='The stock location used as source and destination when sending goods to this contact during a subcontracting process.' string='Subcontractor Location' args: 'stock.location'
Public methods (0)

No public methods.

New fields (2)
  • is_subcontracting_location Boolean
    help='Check this box to create a new dedicated subcontracting location for this company. Note that standard subcontracting routes will be adapted so as to take these into account automatically.' args: 'Is a Subcontracting Location?'
  • subcontractor_ids One2many → res.partner
    args: 'res.partner', 'property_stock_subcontractor'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (2)
  • is_subcontract Boolean
    args: 'The move is a subcontract receipt'
  • show_subcontracting_details_visible Boolean
    compute='_compute_show_subcontracting_details_visible'
Public methods (5)
  • action_show_details(self)
    Open the produce wizard in order to register tracked components for subcontracted product. Otherwise use standard behavior.
  • action_show_subcontract_details(self)
    Display moves raw for subcontracted product self.
  • copy(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)
    If the initial demand is updated then also update the linked subcontract order to the new quantity.

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)

New fields (2)
  • display_action_record_components Selection
    compute='_compute_display_action_record_components' args: [('hide', 'Hide'), ('facultative', 'Facultative'), ('mandatory', 'Mandatory')]
  • move_line_ids_without_package One2many
    domain=['&', '|', ('location_dest_id.usage', '!=', 'production'), ('move_id.picking_code', '!=', 'outgoing'), '|', ('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]
Public methods (1)
  • action_record_components(self)

New fields (1)
  • is_subcontract Boolean
    search='_search_is_subcontract' store=False
Public methods (0)

No public methods.

New fields (1)
  • subcontract_location_id Many2one → stock.location
    compute='_compute_subcontract_location_id' args: 'stock.location'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • subcontracting_mto_pull_id Many2one → stock.rule
    copy=False args: 'stock.rule', 'Subcontracting MTO Rule'
  • subcontracting_pull_id Many2one → stock.rule
    copy=False args: 'stock.rule', 'Subcontracting MTS Rule'
  • subcontracting_resupply_type_id Many2one → stock.picking.type
    copy=False domain=[('code', '=', 'outgoing')] args: 'stock.picking.type', 'Subcontracting Resupply Operation Type'
  • subcontracting_route_id Many2one → stock.route
    copy=False ondelete='restrict' args: 'stock.route', 'Resupply Subcontractor'
  • subcontracting_to_resupply Boolean
    default=True args: 'Resupply Subcontractors'
  • subcontracting_type_id Many2one → stock.picking.type
    copy=False domain=[('code', '=', 'mrp_operation')] args: 'stock.picking.type', 'Subcontracting Operation Type'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • get_rules_dict(self)
  • write(self, vals)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/mrp_subcontracting
VERSION
VERSION 0.1
CATEGORY
CATEGORYManufacturing/Manufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Denis Ledoux, Nicolas Martinelli, Géry Debongnie, GitHub, Yannick Tivisse, Christophe Monniez, Arnold Moyaux, Xavier-Do, Romeo Fragomeli, Victor Feyens, William Henrotin, Anh Thao Pham (pta), Adrien Widart, Touati Djamel (otd), Tiffany Chang (tic), Rémy Voet (ryv), Gorash, MerlinGuillaume, David (dafr), JF Aubert, PNO, yhu-odoo, niyasraphy, Adrien Widart (awt), clesgow, Pieter Claeys (clpi), Nicolas Pierre, arsi, Chong Wang (cwg), Martin Maes, Ahmed Khalaf (ahkh), Khushi Vakil, BernatPForgeFlow, lase@odoo.com, Aurelien MARIE (auma), Martin Trigaux (mat), djameltouati
WEBSITE
WEBSITEhttps://www.odoo.com/app/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:49
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mrp
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (30)
XML IDNameModelTypeStatus
mrp_bom_form_view mrp.bom.form.view mrp.bom xpath Inherits mrp.mrp_bom_form_view
mrp_production_subcontracting_filter mrp.production.subcontracting.select mrp.production xpath Inherits mrp.view_mrp_production_filter
mrp_production_subcontracting_form_view mrp.production.subcontracting.form.view mrp.production xpath Inherits mrp.mrp_production_form_view
mrp_production_subcontracting_portal_form_view mrp.production.subcontracting.portal.form.view mrp.production xpath Inherits mrp_production_subcontracting_form_view
mrp_production_subcontracting_tree_view mrp.production.subcontracting.tree mrp.production xpath Inherits mrp.mrp_production_tree_view
mrp_subcontracting_move_form_view mrp.subcontracting.move.form.view stock.move form New
mrp_subcontracting_move_tree_view mrp.subcontracting.move.tree.view stock.move tree New
mrp_subcontracting_portal_move_form_view mrp.subcontracting.portal.move.form.view stock.move xpath Inherits mrp_subcontracting_move_form_view
mrp_subcontracting_portal_stock_move_line_tree_view mrp.subcontracting.portal.stock.move.line.tree.view stock.move.line xpath Inherits mrp_subcontracting_stock_move_line_tree_view
mrp_subcontracting_product_template_search_view mrp.subcontracting.product.template.search product.template xpath Inherits product.product_template_search_view
mrp_subcontracting_stock_move_line_tree_view mrp.subcontracting.stock.move.line.tree.view stock.move.line tree New
mrp_subcontracting_view_stock_move_line_operation_tree mrp.subcontracting.stock.move.line.operations.tree stock.move.line xpath Inherits stock.view_stock_move_line_operation_tree
mrp_subcontracting_view_stock_move_nosuggest_operations mrp.subcontracting.stock.move.operations.nosuggest.form stock.move xpath Inherits stock.view_stock_move_nosuggest_operations
mrp_subcontracting_view_stock_move_operations mrp.subcontracting.stock.move.operations.form stock.move xpath Inherits stock.view_stock_move_operations
portal_my_home_menu_production Portal layout : production menu entries ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_my_home_productions Productions ir.ui.view qweb Inherits portal.portal_my_home
portal_my_productions My Productions ir.ui.view qweb New
product_supplierinfo_subcontractor_tree_view product.supplierinfo.subcontractor.tree.view product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
quant_subcontracting_search_view stock.quant.subcontracting.search stock.quant xpath Inherits stock.quant_search_view
stock_picking_form_view stock.picking.form.view stock.picking xpath Inherits stock.view_picking_form
subcontracting Subcontracting Portal View ir.ui.view qweb New
subcontracting_portal Subcontracting View in Portal ir.ui.view qweb New
subcontracting_portal_embed Subcontracting Portal ir.ui.view qweb New
subcontracting_portal_production_form_view subcontracting.portal.production.view.form stock.picking form New
view_location_form stock.location.form stock.location xpath Inherits stock.view_location_form
view_move_search stock.move.search stock.move xpath Inherits stock.view_move_search
view_partner_mrp_subcontracting_filter res.partner.select.inherit res.partner xpath Inherits base.view_res_partner_filter
view_partner_mrp_subcontracting_form res.partner.mrp_subcontracting.property.form.inherit res.partner xpath Inherits stock.view_partner_stock_form
view_stock_return_picking_form_subcontracting Return lines stock.return.picking xpath Inherits stock.view_stock_return_picking_form
view_warehouse_inherit_mrp_subcontracting Stock Warehouse Inherit Subcontracting stock.warehouse xpath Inherits mrp.view_warehouse_inherit_mrp
Models touched (17)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • subcontractor_ids Many2many → res.partner
    check_company=True string='Subcontractors' args: 'res.partner', 'mrp_bom_subcontractor'
  • type Selection
    ondelete={'subcontract': <expr>} selection_add=[('subcontract', 'Subcontracting')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • action_cancel(self)
  • action_confirm(self)

New fields (5)
  • bom_product_ids Many2many → product.product
    compute='_compute_bom_product_ids' help='List of Products used in the BoM, used to filter the list of products in the subcontracting portal view' args: 'product.product'
  • incoming_picking Many2one
    related='move_finished_ids.move_dest_ids.picking_id'
  • move_line_raw_ids One2many → stock.move.line
    compute='_compute_move_line_raw_ids' inverse='_inverse_move_line_raw_ids' readonly=False string='Detail Component' args: 'stock.move.line'
  • subcontracting_has_been_recorded Boolean
    copy=False args: 'Has been recorded?'
  • subcontractor_id Many2one → res.partner
    help='Used to restrict access to the portal user through Record Rules' string='Subcontractor' args: 'res.partner'
Public methods (4)
  • action_merge(self)
  • name_get(self)
    @api.depends('name')
  • subcontracting_record_component(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • is_subcontractor Boolean
    compute='_compute_is_subcontractor' help='Choose a vendor of type subcontractor if you want to subcontract the product' args: 'Subcontracted'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • subcontracting_location_id Many2one → stock.location
    args: 'stock.location'
Public methods (0)

No public methods.

New fields (5)
  • bom_ids Many2many → mrp.bom
    compute='_compute_bom_ids' string='BoMs for which the Partner is one of the subcontractors' args: 'mrp.bom'
  • is_subcontractor Boolean
    compute='_compute_is_subcontractor' search='_search_is_subcontractor' store=False string='Subcontractor'
  • picking_ids Many2many → stock.picking
    compute='_compute_picking_ids' string='Stock Pickings for which the Partner is the subcontractor' args: 'stock.picking'
  • production_ids Many2many → mrp.production
    compute='_compute_production_ids' string='MRP Productions for which the Partner is the subcontractor' args: 'mrp.production'
  • property_stock_subcontractor Many2one → stock.location
    company_dependent=True help='The stock location used as source and destination when sending goods to this contact during a subcontracting process.' string='Subcontractor Location' args: 'stock.location'
Public methods (0)

No public methods.

New fields (2)
  • is_subcontracting_location Boolean
    help='Check this box to create a new dedicated subcontracting location for this company. Note that standard subcontracting routes will be adapted so as to take these into account automatically.' args: 'Is a Subcontracting Location?'
  • subcontractor_ids One2many → res.partner
    args: 'res.partner', 'property_stock_subcontractor'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (2)
  • is_subcontract Boolean
    args: 'The move is a subcontract receipt'
  • show_subcontracting_details_visible Boolean
    compute='_compute_show_subcontracting_details_visible'
Public methods (5)
  • action_show_details(self)
    Open the produce wizard in order to register tracked components for subcontracted product. Otherwise use standard behavior.
  • action_show_subcontract_details(self)
    Display moves raw for subcontracted product self.
  • copy(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)
    If the initial demand is updated then also update the linked subcontract order to the new quantity.

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)

New fields (3)
  • display_action_record_components Selection
    compute='_compute_display_action_record_components' args: [('hide', 'Hide'), ('facultative', 'Facultative'), ('mandatory', 'Mandatory')]
  • move_line_ids_without_package One2many
    domain=['&', '|', ('location_dest_id.usage', '!=', 'production'), ('move_id.picking_code', '!=', 'outgoing'), '|', ('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]
  • move_line_nosuggest_ids One2many
    domain=['&', '|', ('location_dest_id.usage', '!=', 'production'), ('move_id.picking_code', '!=', 'outgoing'), '|', ('reserved_qty', '=', 0.0), '&', ('reserved_qty', '!=', 0.0), ('qty_done', '!=', 0.0)]
Public methods (1)
  • action_record_components(self)

New fields (1)
  • is_subcontract Boolean
    search='_search_is_subcontract' store=False
Public methods (0)

No public methods.

New fields (1)
  • subcontract_location_id Many2one → stock.location
    compute='_compute_subcontract_location_id' args: 'stock.location'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • subcontracting_mto_pull_id Many2one → stock.rule
    args: 'stock.rule', 'Subcontracting MTO Rule'
  • subcontracting_pull_id Many2one → stock.rule
    args: 'stock.rule', 'Subcontracting MTS Rule'
  • subcontracting_resupply_type_id Many2one → stock.picking.type
    domain=[('code', '=', 'outgoing')] args: 'stock.picking.type', 'Subcontracting Resupply Operation Type'
  • subcontracting_route_id Many2one → stock.route
    ondelete='restrict' args: 'stock.route', 'Resupply Subcontractor'
  • subcontracting_to_resupply Boolean
    default=True args: 'Resupply Subcontractors'
  • subcontracting_type_id Many2one → stock.picking.type
    domain=[('code', '=', 'mrp_operation')] args: 'stock.picking.type', 'Subcontracting Operation Type'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • get_rules_dict(self)
  • write(self, vals)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/mrp_subcontracting
VERSION
VERSION 0.1
CATEGORY
CATEGORYManufacturing/Manufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Goffin Simon, Nicolas Lempereur, Arnold Moyaux, Xavier-Do, William Henrotin, svs-odoo, Adrien Widart, Touati Djamel (otd), Tiffany Chang (tic), Rémy Voet (ryv), Kevin Baptiste, william-andre, Merlin (megu), David (dafr), JF Aubert, PNO, yhu-odoo, niyasraphy, Adrien Widart (awt), clesgow, Khushi Vakil, Aurelien MARIE (auma), Anjali
WEBSITE
WEBSITEhttps://www.odoo.com/app/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:27
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mrp
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - stock
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
mrp_bom_form_view mrp.bom.form.view mrp.bom xpath Inherits mrp.mrp_bom_form_view
mrp_production_subcontracting_form_view mrp.production.subcontracting.form.view mrp.production xpath Inherits mrp.mrp_production_form_view
mrp_subcontracting_move_form_view mrp.subcontracting.move.form.view stock.move form New
mrp_subcontracting_move_tree_view mrp.subcontracting.move.tree.view stock.move tree New
mrp_subcontracting_product_template_search_view mrp.subcontracting.product.template.search product.template xpath Inherits product.product_template_search_view
mrp_subcontracting_stock_move_line_tree_view mrp.subcontracting.stock.move.line.tree.view stock.move.line tree New
product_supplierinfo_subcontractor_tree_view product.supplierinfo.subcontractor.tree.view product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
quant_subcontracting_search_view stock.quant.subcontracting.search stock.quant xpath Inherits stock.quant_search_view
report_mrp_bom_line_inherit_mrp_subcontracting report_mrp_bom_line_inherit_mrp_subcontracting ir.ui.view qweb Inherits mrp.report_mrp_bom_line
stock_picking_form_view stock.picking.form.view stock.picking xpath Inherits stock.view_picking_form
view_partner_mrp_subcontracting_filter res.partner.select.inherit res.partner xpath Inherits base.view_res_partner_filter
view_partner_mrp_subcontracting_form res.partner.mrp_subcontracting.property.form.inherit res.partner xpath Inherits stock.view_partner_stock_form
view_stock_return_picking_form_subcontracting Return lines stock.return.picking xpath Inherits stock.view_stock_return_picking_form
view_warehouse_inherit_mrp_subcontracting Stock Warehouse Inherit Subcontracting stock.warehouse xpath Inherits mrp.view_warehouse_inherit_mrp
Models touched (15)

New fields (2)
  • subcontractor_ids Many2many → res.partner
    check_company=True string='Subcontractors' args: 'res.partner', 'mrp_bom_subcontractor'
  • type Selection
    ondelete={'subcontract': <expr>} selection_add=[('subcontract', 'Subcontracting')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • action_cancel(self)
  • action_confirm(self)

New fields (3)
  • incoming_picking Many2one
    related='move_finished_ids.move_dest_ids.picking_id'
  • move_line_raw_ids One2many → stock.move.line
    compute='_compute_move_line_raw_ids' inverse='_inverse_move_line_raw_ids' readonly=False string='Detail Component' args: 'stock.move.line'
  • subcontracting_has_been_recorded Boolean
    copy=False args: 'Has been recorded?'
Public methods (2)
  • name_get(self)
    @api.depends('name')
  • subcontracting_record_component(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • is_subcontractor Boolean
    compute='_compute_is_subcontractor' help='Choose a vendor of type subcontractor if you want to subcontract the product' args: 'Subcontracted'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • subcontracting_location_id Many2one → stock.location
    args: 'stock.location'
Public methods (1)
  • create_missing_subcontracting_location(self)
    @api.model

New fields (2)
  • is_subcontractor Boolean
    search='_search_is_subcontractor' store=False string='Subcontractor'
  • property_stock_subcontractor Many2one → stock.location
    company_dependent=True help='The stock location used as source and destination when sending goods to this contact during a subcontracting process.' string='Subcontractor Location' args: 'stock.location'
Public methods (0)

No public methods.

New fields (2)
  • is_subcontract Boolean
    args: 'The move is a subcontract receipt'
  • show_subcontracting_details_visible Boolean
    compute='_compute_show_subcontracting_details_visible'
Public methods (4)
  • action_show_details(self)
    Open the produce wizard in order to register tracked components for subcontracted product. Otherwise use standard behavior.
  • action_show_subcontract_details(self)
    Display moves raw for subcontracted product self.
  • copy(self, default=None)
  • write(self, values)
    If the initial demand is updated then also update the linked subcontract order to the new quantity.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • display_action_record_components Selection
    compute='_compute_display_action_record_components' args: [('hide', 'Hide'), ('facultative', 'Facultative'), ('mandatory', 'Mandatory')]
  • move_line_ids_without_package One2many
    domain=['&', '|', ('location_dest_id.usage', '!=', 'production'), ('move_id.picking_code', '!=', 'outgoing'), '|', ('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]
  • move_line_nosuggest_ids One2many
    domain=['&', '|', ('location_dest_id.usage', '!=', 'production'), ('move_id.picking_code', '!=', 'outgoing'), '|', ('product_qty', '=', 0.0), '&', ('product_qty', '!=', 0.0), ('qty_done', '!=', 0.0)]
Public methods (1)
  • action_record_components(self)

New fields (1)
  • is_subcontract Boolean
    search='_search_is_subcontract' store=False
Public methods (0)

No public methods.

New fields (1)
  • subcontract_location_id Many2one → stock.location
    compute='_compute_subcontract_location_id' args: 'stock.location'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • subcontracting_mto_pull_id Many2one → stock.rule
    args: 'stock.rule', 'Subcontracting MTO Rule'
  • subcontracting_pull_id Many2one → stock.rule
    args: 'stock.rule', 'Subcontracting MTS Rule'
  • subcontracting_resupply_type_id Many2one → stock.picking.type
    domain=[('code', '=', 'outgoing')] args: 'stock.picking.type', 'Subcontracting Resupply Operation Type'
  • subcontracting_route_id Many2one → stock.location.route
    ondelete='restrict' args: 'stock.location.route', 'Resupply Subcontractor'
  • subcontracting_to_resupply Boolean
    default=True help='Resupply subcontractors with components' args: 'Resupply Subcontractors'
  • subcontracting_type_id Many2one → stock.picking.type
    domain=[('code', '=', 'mrp_operation')] args: 'stock.picking.type', 'Subcontracting Operation Type'
Public methods (1)
  • get_rules_dict(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/mrp_subcontracting
VERSION
VERSION 0.1
CATEGORY
CATEGORYManufacturing/Manufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Christophe Simonis, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Pedro M. Baeza, Dharmraj Jhala, Arnold Moyaux, Julien Castiaux, Xavier-Do, Victor Feyens, Florent de Labarre, fw-bot, svs-odoo, Adrien Widart, Touati Djamel (otd), Tiffany Chang (tic), Rémy Voet (ryv), JF Aubert, PNO, yhu-odoo, niyasraphy, Adrien Widart (awt)
WEBSITE
WEBSITEhttps://www.odoo.com/page/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:29
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mrp
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - stock
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
mrp_bom_form_view mrp.bom.form.view mrp.bom xpath Inherits mrp.mrp_bom_form_view
mrp_production_subcontracting_form_view mrp.production.subcontracting.form.view mrp.production xpath Inherits mrp.mrp_production_form_view
mrp_subcontracting_move_form_view mrp.subcontracting.move.form.view stock.move form New
mrp_subcontracting_move_tree_view mrp.subcontracting.move.tree.view stock.move tree New
mrp_subcontracting_product_template_search_view mrp.subcontracting.product.template.search product.template xpath Inherits product.product_template_search_view
mrp_subcontracting_stock_move_line_tree_view mrp.subcontracting.stock.move.line.tree.view stock.move.line tree New
product_supplierinfo_subcontractor_tree_view product.supplierinfo.subcontractor.tree.view product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
stock_picking_form_view stock.picking.form.view stock.picking xpath Inherits stock.view_picking_form
view_partner_mrp_subcontracting_filter res.partner.select.inherit res.partner xpath Inherits base.view_res_partner_filter
view_partner_mrp_subcontracting_form res.partner.mrp_subcontracting.property.form.inherit res.partner xpath Inherits stock.view_partner_stock_form
view_stock_return_picking_form_subcontracting Return lines stock.return.picking xpath Inherits stock.view_stock_return_picking_form
view_warehouse_inherit_mrp_subcontracting Stock Warehouse Inherit Subcontracting stock.warehouse xpath Inherits mrp.view_warehouse_inherit_mrp
Models touched (11)

New fields (2)
  • subcontractor_ids Many2many → res.partner
    check_company=True string='Subcontractors' args: 'res.partner', 'mrp_bom_subcontractor'
  • type Selection
    ondelete={'subcontract': <expr>} selection_add=[('subcontract', 'Subcontracting')]
Public methods (0)

No public methods.

New fields (2)
  • incoming_picking Many2one
    related='move_finished_ids.move_dest_ids.picking_id'
  • move_line_raw_ids One2many → stock.move.line
    compute='_compute_move_line_raw_ids' inverse='_inverse_move_line_raw_ids' readonly=False string='Detail Component' args: 'stock.move.line'
Public methods (3)
  • action_subcontracting_discard_remaining_components(self)
  • name_get(self)
    @api.depends('name')
  • subcontracting_record_component(self)

New fields (1)
  • is_subcontractor Boolean
    compute='_compute_is_subcontractor' help='Choose a vendor of type subcontractor if you want to subcontract the product' args: 'Subcontracted'
Public methods (0)

No public methods.

New fields (1)
  • subcontracting_location_id Many2one → stock.location
    args: 'stock.location'
Public methods (1)
  • create_missing_subcontracting_location(self)
    @api.model

New fields (2)
  • is_subcontractor Boolean
    search='_search_is_subcontractor' store=False string='Subcontractor'
  • property_stock_subcontractor Many2one → stock.location
    company_dependent=True help='The stock location used as source and destination when sending goods to this contact during a subcontracting process.' string='Subcontractor Location' args: 'stock.location'
Public methods (0)

No public methods.

New fields (2)
  • is_subcontract Boolean
    args: 'The move is a subcontract receipt'
  • show_subcontracting_details_visible Boolean
    compute='_compute_show_subcontracting_details_visible'
Public methods (4)
  • action_show_details(self)
    Open the produce wizard in order to register tracked components for subcontracted product. Otherwise use standard behavior.
  • action_show_subcontract_details(self)
    Display moves raw for subcontracted product self.
  • copy(self, default=None)
  • write(self, values)
    If the initial demand is updated then also update the linked subcontract order to the new quantity.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • display_action_record_components Boolean
    compute='_compute_display_action_record_components'
Public methods (1)
  • action_record_components(self)

New fields (1)
  • subcontract_location_id Many2one → stock.location
    compute='_compute_subcontract_location_id' args: 'stock.location'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • subcontracting_mto_pull_id Many2one → stock.rule
    args: 'stock.rule', 'Subcontracting MTO Rule'
  • subcontracting_pull_id Many2one → stock.rule
    args: 'stock.rule', 'Subcontracting MTS Rule'
  • subcontracting_route_id Many2one → stock.location.route
    ondelete='restrict' args: 'stock.location.route', 'Resupply Subcontractor'
  • subcontracting_to_resupply Boolean
    default=True help='Resupply subcontractors with components' args: 'Resupply Subcontractors'
  • subcontracting_type_id Many2one → stock.picking.type
    domain=[('code', '=', 'mrp_operation')] args: 'stock.picking.type', 'Subcontracting Operation Type'
Public methods (1)
  • get_rules_dict(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/mrp_subcontracting
VERSION
VERSION 0.1
CATEGORY
CATEGORYManufacturing/Manufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Denis Ledoux, Christophe Simonis, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Aaron Bohy, Pedro M. Baeza, Yannick Tivisse, Arnold Moyaux, Xavier-Do, Victor Feyens, William Henrotin, svs-odoo, Adrien Widart, Jinal Patel, Arnaud Baes
WEBSITE
WEBSITEhttps://www.odoo.com/page/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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 (7)
XML IDNameModelTypeStatus
mrp_bom_form_view mrp.bom.form.view mrp.bom xpath Inherits mrp.mrp_bom_form_view
mrp_subcontracting_move_form_view mrp.subcontracting.move.form.view stock.move form New
mrp_subcontracting_move_tree_view mrp.subcontracting.move.tree.view stock.move xpath Inherits mrp.view_stock_move_raw_tree
product_supplierinfo_subcontractor_tree_view product.supplierinfo.subcontractor.tree.view product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
stock_picking_form_view stock.picking.form.view stock.picking xpath Inherits stock.view_picking_form
view_partner_mrp_subcontracting_form res.partner.mrp_subcontracting.property.form.inherit res.partner xpath Inherits stock.view_partner_stock_form
view_warehouse_inherit_mrp_subcontracting Stock Warehouse Inherit Subcontracting stock.warehouse xpath Inherits mrp.view_warehouse_inherit_mrp
Models touched (11)

New fields (2)
  • subcontractor_ids Many2many → res.partner
    check_company=True string='Subcontractors' args: 'res.partner', 'mrp_bom_subcontractor'
  • type Selection
    selection_add=[('subcontract', 'Subcontracting')]
Public methods (0)

No public methods.

New fields (1)
  • subcontract_move_id Many2one → stock.move
    check_company=True args: 'stock.move', 'stock move from the subcontract picking'
Public methods (1)
  • continue_production(self)

New fields (1)
  • is_subcontractor Boolean
    compute='_compute_is_subcontractor' help='Choose a vendor of type subcontractor if you want to subcontract the product' args: 'Subcontracted'
Public methods (0)

No public methods.

New fields (1)
  • subcontracting_location_id Many2one → stock.location
    args: 'stock.location'
Public methods (1)
  • create_missing_subcontracting_location(self)
    @api.model

New fields (1)
  • property_stock_subcontractor Many2one → stock.location
    company_dependent=True help='The stock location used as source and destination when sending goods to this contact during a subcontracting process.' string='Subcontractor Location' args: 'stock.location'
Public methods (0)

No public methods.

New fields (2)
  • is_subcontract Boolean
    args: 'The move is a subcontract receipt'
  • show_subcontracting_details_visible Boolean
    compute='_compute_show_subcontracting_details_visible'
Public methods (4)
  • action_show_details(self)
    Open the produce wizard in order to register tracked components for subcontracted product. Otherwise use standard behavior.
  • action_show_subcontract_details(self)
    Display moves raw for subcontracted product self.
  • copy(self, default=None)
  • write(self, values)
    If the initial demand is updated then also update the linked subcontract order to the new quantity.

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (1)
  • display_action_record_components Boolean
    compute='_compute_display_action_record_components'
Public methods (2)
  • action_done(self)
  • action_record_components(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • subcontracting_mto_pull_id Many2one → stock.rule
    args: 'stock.rule', 'Subcontracting MTO Rule'
  • subcontracting_pull_id Many2one → stock.rule
    args: 'stock.rule', 'Subcontracting MTS Rule'
  • subcontracting_route_id Many2one → stock.location.route
    ondelete='restrict' args: 'stock.location.route', 'Resupply Subcontractor'
  • subcontracting_to_resupply Boolean
    default=True help='Resupply subcontractors with components' args: 'Resupply Subcontractors'
  • subcontracting_type_id Many2one → stock.picking.type
    domain=[('code', '=', 'mrp_operation')] args: 'stock.picking.type', 'Subcontracting Operation Type'
Public methods (1)
  • get_rules_dict(self)