MRP Production Serial Matrix

mrp_production_serial_matrix
REPOSITORY
REPOSITORYOCA/manufacture
GIT
GIThttps://github.com/OCA/manufacture.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/manufacture/tree/17.0/mrp_production_serial_matrix
VERSION
VERSION 2.1.1
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, DavidJForgeFlow, ArnauCForgeFlow
WEBSITE
WEBSITEhttps://github.com/OCA/manufacture
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_widget_x2many_2d_matrix
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
This module aims to ease the processing of Manufacturing Orders with the
following characteristics:

- The finished product is tracked by unique serial numbers.
- The quantity to be produced is more than one unit.
- Some of the components are tracked by serial numbers and/or lots.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
mrp_production_form_view mrp.production.form - mrp_production_serial_matrix mrp.production button Inherits mrp.mrp_production_form_view
mrp_production_serial_matrix_view_form mrp.production.serial.matrix.form mrp.production.serial.matrix form New
mrp_production_serial_matrix_view_list mrp.production.serial.matrix.list mrp.production.serial.matrix tree New
mrp_production_serial_matrix_view_search mrp.production.serial.matrix.view.search mrp.production.serial.matrix search New
Models touched (3)

New fields (1)
  • show_serial_matrix Boolean
    compute='_compute_show_serial_matrix'
Public methods (1)
  • action_open_mrp_production_serial_matrix(self)

New fields (11)
  • company_id Many2one
    readonly=True related='production_id.company_id'
  • finished_lot_ids Many2many → stock.lot
    comodel_name='stock.lot' domain="[('product_id', '=', product_id)]" string='Finished Product Serial Numbers'
  • include_lots Boolean
    help='Include products tracked by Lots in matrix. Product tracket by serial numbers are always included.' string='Include Lots?'
  • line_ids One2many → mrp.production.serial.matrix.line
    comodel_name='mrp.production.serial.matrix.line' inverse_name='wizard_id' string='Matrix Cell'
  • lot_selection_warning_count Integer
    compute='_compute_lot_selection_warning'
  • lot_selection_warning_ids Many2many → stock.lot
    comodel_name='stock.lot' compute='_compute_lot_selection_warning'
  • lot_selection_warning_msg Char
    compute='_compute_lot_selection_warning'
  • product_id Many2one
    readonly=True related='production_id.product_id'
  • production_id Many2one → mrp.production
    comodel_name='mrp.production' ondelete='cascade' readonly=True string='Manufacturing Order'
  • production_state Selection
    related='production_id.state' string='MO Status'
  • state Selection
    copy=False default='draft' readonly=True required=True selection=[('draft', 'Draft'), ('in_progress', 'In Progress'), ('exception', 'Exception'), ('done', 'Done'), ('cancel', 'Cancelled')] string='Status' tracking=True
Public methods (6)
  • action_cancel_matrix(self)
  • action_reset_to_draft(self)
  • button_validate(self)
  • call_next_process_serial_matrix_lot(self, mos, lots_to_process=None, current_mo=False)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)

New fields (10)
  • allowed_component_lot_ids Many2many → stock.lot
    comodel_name='stock.lot' compute='_compute_allowed_component_lot_ids'
  • component_column_name Char
  • component_id Many2one → product.product
    comodel_name='product.product'
  • component_lot_id Many2one → stock.lot
    comodel_name='stock.lot' domain="[('id', 'in', allowed_component_lot_ids)]"
  • finished_lot_id Many2one → stock.lot
    comodel_name='stock.lot'
  • finished_lot_name Char
  • lot_qty Float
    digits='Product Unit of Measure'
  • production_id Many2one
    related='wizard_id.production_id'
  • state Selection
    related='wizard_id.state'
  • wizard_id Many2one → mrp.production.serial.matrix
    comodel_name='mrp.production.serial.matrix'
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/16.0/mrp_production_serial_matrix
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Marcel Savegnago
WEBSITE
WEBSITEhttps://github.com/OCA/manufacture
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:12:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_widget_x2many_2d_matrix
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
This module aims to ease the processing of Manufacturing Orders with the
following characteristics:

- The finished product is tracked by unique serial numbers.
- The quantity to be produced is more than one unit.
- Some of the components are tracked by serial numbers and/or lots.

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
mrp_production_form_view mrp.production.form - mrp_production_serial_matrix mrp.production button Inherits mrp.mrp_production_form_view
mrp_production_serial_matrix_view_final_form mrp.production.serial.matrix.final.form mrp.production.serial.matrix form New
mrp_production_serial_matrix_view_initial_form mrp.production.serial.matrix.initial.form mrp.production.serial.matrix form New
Models touched (3)

New fields (1)
  • show_serial_matrix Boolean
    compute='_compute_show_serial_matrix'
Public methods (0)

No public methods.

New fields (9)
  • company_id Many2one
    readonly=True related='production_id.company_id'
  • finished_lot_ids Many2many → stock.lot
    comodel_name='stock.lot' domain="[('product_id', '=', product_id)]" string='Finished Product Serial Numbers'
  • include_lots Boolean
    help='Include products tracked by Lots in matrix. Product tracket by serial numbers are always included.' string='Include Lots?'
  • line_ids One2many → mrp.production.serial.matrix.line
    comodel_name='mrp.production.serial.matrix.line' inverse_name='wizard_id' string='Matrix Cell'
  • lot_selection_warning_count Integer
    compute='_compute_lot_selection_warning'
  • lot_selection_warning_ids Many2many → stock.lot
    comodel_name='stock.lot' compute='_compute_lot_selection_warning'
  • lot_selection_warning_msg Char
    compute='_compute_lot_selection_warning'
  • product_id Many2one
    readonly=True related='production_id.product_id'
  • production_id Many2one → mrp.production
    comodel_name='mrp.production' readonly=True string='Manufacturing Order'
Public methods (3)
  • button_next(self)
  • button_validate(self)
  • default_get(self, fields)
    @api.model

New fields (9)
  • allowed_component_lot_ids Many2many → stock.lot
    comodel_name='stock.lot' compute='_compute_allowed_component_lot_ids'
  • component_column_name Char
  • component_id Many2one → product.product
    comodel_name='product.product'
  • component_lot_id Many2one → stock.lot
    comodel_name='stock.lot' domain="[('id', 'in', allowed_component_lot_ids)]"
  • finished_lot_id Many2one → stock.lot
    comodel_name='stock.lot'
  • finished_lot_name Char
  • lot_qty Float
    digits='Product Unit of Measure'
  • production_id Many2one
    related='wizard_id.production_id'
  • wizard_id Many2one → mrp.production.serial.matrix
    comodel_name='mrp.production.serial.matrix'
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/15.0/mrp_production_serial_matrix
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSRuchir Shukla, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/manufacture
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:36
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_widget_x2many_2d_matrix
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 (2)
XML IDNameModelTypeStatus
mrp_production_form_view mrp.production.form - mrp_production_serial_matrix mrp.production button Inherits mrp.mrp_production_form_view
mrp_production_serial_matrix_view_form mrp.production.serial.matrix.form mrp.production.serial.matrix form New
Models touched (3)

New fields (1)
  • show_serial_matrix Boolean
    compute='_compute_show_serial_matrix'
Public methods (0)

No public methods.

New fields (9)
  • company_id Many2one
    readonly=True related='production_id.company_id'
  • finished_lot_ids Many2many → stock.production.lot
    comodel_name='stock.production.lot' domain="[('product_id', '=', product_id)]" string='Finished Product Serial Numbers'
  • include_lots Boolean
    help='Include products tracked by Lots in matrix. Product tracket by serial numbers are always included.' string='Include Lots?'
  • line_ids One2many → mrp.production.serial.matrix.line
    comodel_name='mrp.production.serial.matrix.line' inverse_name='wizard_id' string='Matrix Cell'
  • lot_selection_warning_count Integer
    compute='_compute_lot_selection_warning'
  • lot_selection_warning_ids Many2many → stock.production.lot
    comodel_name='stock.production.lot' compute='_compute_lot_selection_warning'
  • lot_selection_warning_msg Char
    compute='_compute_lot_selection_warning'
  • product_id Many2one
    readonly=True related='production_id.product_id'
  • production_id Many2one → mrp.production
    comodel_name='mrp.production' readonly=True string='Manufacturing Order'
Public methods (2)
  • button_validate(self)
  • default_get(self, fields)
    @api.model

New fields (9)
  • allowed_component_lot_ids Many2many → stock.production.lot
    comodel_name='stock.production.lot' compute='_compute_allowed_component_lot_ids'
  • component_column_name Char
  • component_id Many2one → product.product
    comodel_name='product.product'
  • component_lot_id Many2one → stock.production.lot
    comodel_name='stock.production.lot' domain="[('id', 'in', allowed_component_lot_ids)]"
  • finished_lot_id Many2one → stock.production.lot
    comodel_name='stock.production.lot'
  • finished_lot_name Char
  • lot_qty Float
    digits='Product Unit of Measure'
  • production_id Many2one
    related='wizard_id.production_id'
  • wizard_id Many2one → mrp.production.serial.matrix
    comodel_name='mrp.production.serial.matrix'
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/14.0/mrp_production_serial_matrix
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSLois Rilo, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/manufacture
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:03
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_widget_x2many_2d_matrix
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 (2)
XML IDNameModelTypeStatus
mrp_production_form_view mrp.production.form - mrp_production_serial_matrix mrp.production button Inherits mrp.mrp_production_form_view
mrp_production_serial_matrix_view_form mrp.production.serial.matrix.form mrp.production.serial.matrix form New
Models touched (3)

New fields (1)
  • show_serial_matrix Boolean
    compute='_compute_show_serial_matrix'
Public methods (0)

No public methods.

New fields (9)
  • company_id Many2one
    readonly=True related='production_id.company_id'
  • finished_lot_ids Many2many → stock.production.lot
    comodel_name='stock.production.lot' domain="[('product_id', '=', product_id)]" string='Finished Product Serial Numbers'
  • include_lots Boolean
    help='Include products tracked by Lots in matrix. Product tracket by serial numbers are always included.' string='Include Lots?'
  • line_ids One2many → mrp.production.serial.matrix.line
    comodel_name='mrp.production.serial.matrix.line' inverse_name='wizard_id' string='Matrix Cell'
  • lot_selection_warning_count Integer
    compute='_compute_lot_selection_warning'
  • lot_selection_warning_ids Many2many → stock.production.lot
    comodel_name='stock.production.lot' compute='_compute_lot_selection_warning'
  • lot_selection_warning_msg Char
    compute='_compute_lot_selection_warning'
  • product_id Many2one
    readonly=True related='production_id.product_id'
  • production_id Many2one → mrp.production
    comodel_name='mrp.production' readonly=True string='Manufacturing Order'
Public methods (2)
  • button_validate(self)
  • default_get(self, fields)
    @api.model

New fields (9)
  • allowed_component_lot_ids Many2many → stock.production.lot
    comodel_name='stock.production.lot' compute='_compute_allowed_component_lot_ids'
  • component_column_name Char
  • component_id Many2one → product.product
    comodel_name='product.product'
  • component_lot_id Many2one → stock.production.lot
    comodel_name='stock.production.lot' domain="[('id', 'in', allowed_component_lot_ids)]"
  • finished_lot_id Many2one → stock.production.lot
    comodel_name='stock.production.lot'
  • finished_lot_name Char
  • lot_qty Float
    digits='Product Unit of Measure'
  • production_id Many2one
    related='wizard_id.production_id'
  • wizard_id Many2one → mrp.production.serial.matrix
    comodel_name='mrp.production.serial.matrix'
Public methods (0)

No public methods.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/manufacture
PULL REQUEST
PULL REQUEST[MIG] mrp_production_serial_matrix: Migration to 18.0 (#1742)