Accounting - MRP

mrp_account
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/mrp_account
VERSION
VERSION 1.0
CATEGORY
CATEGORYSupply Chain/Manufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Arnold Moyaux, Julien Castiaux, Victor Feyens, William Henrotin, svs-odoo, Tiffany Chang (tic), Gorash, William Braeckman, william-andre, David (dafr), JF Aubert, luvi, Adrien Widart (awt), clesgow, Pieter Claeys (clpi), Dylan Kiss (dyki), Jinane Maksoud, Paweł Fertyk, Arnaud Sibille, Ethan Vincent, kcv-odoo, Louis Gobert, nihp-odoo, Stéphane Diez, djameltouati, MaximeNoirhomme, plha-odoo, Krzysztof Magusiak (krma), Mahdi Alijani (malj), joseph, Robin Engels (roen), nsirjacobs, agbr-odoo, Lulu Grimalkin (lugr), Lancelot Semal, Eve Lin (evlin), siha-odoo, ddba-odoo, lase, Karim Gamaleldin
WEBSITE
WEBSITEhttps://www.odoo.com/app/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 08:07:39
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
    - stock_account
    - account
    - onboarding
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Analytic Accounting in MRP
==========================

* Cost structure report

Also, allows to compute the cost of the product based on its BoM, using the costs of its components and work center operations.
It adds a button on the product itself but also an action in the list view of the products.
If the automated inventory valuation is active, the necessary accounting entries will be created.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
account_analytic_account_view_form_mrp account.analytic.account.form.mrp account.analytic.account div Inherits analytic.view_account_analytic_account_form
mrp_account.report_wip mrp_account.report_wip ir.ui.view qweb New
mrp_production_form_view_inherited mrp.production.view.inherited mrp.production xpath Inherits mrp.mrp_production_form_view
mrp_workcenter_view_inherit mrp.workcenter.form.inherit mrp.workcenter group Inherits mrp.mrp_workcenter_view
product_product_ext_form_view2 product_extended.product.form.view product.template xpath Inherits product.product_template_only_form_view
product_product_view_form_normal_inherit_extended product.product.view.form.normal.inherit.extended product.product xpath Inherits product.product_normal_form_view
product_variant_easy_edit_view_bom_inherit product.product.product.view.form.easy.bom.inherit product.product data Inherits product.product_variant_easy_edit_view
view_move_form_inherit_mrp_account account.move.inherit.mrp.account account.move xpath Inherits account.view_move_form
view_production_graph_inherit_mrp_account mrp.production.graph.inherited.mrp.account mrp.production xpath Inherits mrp.view_production_graph
view_wip_accounting_form Post WIP Accounting Entry mrp.account.wip.accounting form New
Models touched (18)

New fields (6)
  • bom_count Integer
    compute='_compute_bom_count' args: 'BoM Count'
  • bom_ids Many2many → mrp.bom
    args: 'mrp.bom'
  • production_count Integer
    compute='_compute_production_count' args: 'Manufacturing Orders Count'
  • production_ids Many2many → mrp.production
    args: 'mrp.production'
  • workcenter_ids Many2many → mrp.workcenter
    args: 'mrp.workcenter'
  • workorder_count Integer
    compute='_compute_workorder_count' args: 'Work Order Count'
Public methods (3)
  • action_view_mrp_bom(self)
  • action_view_mrp_production(self)
  • action_view_workorder(self)

New fields (1)
  • business_domain Selection
    ondelete={'manufacturing_order': 'cascade'} selection_add=[('manufacturing_order', 'Manufacturing Order')]
Public methods (0)

No public methods.

New fields (1)
  • category Selection
    selection_add=[('manufacturing_order', 'Manufacturing Order')]
Public methods (0)

No public methods.

New fields (2)
  • wip_production_count Integer
    compute='_compute_wip_production_count' args: 'Manufacturing Orders Count'
  • wip_production_ids Many2many → mrp.production
    copy=False help='The MOs that this WIP entry was based on. Expected to be set at time of WIP entry creation.' string='Relevant WIP MOs' args: 'mrp.production', 'wip_move_production_rel', 'move_id', 'production_id'
Public methods (2)
  • action_view_wip_production(self)
  • copy(self, default=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • date Date
    default=fields.Datetime.now args: 'Date'
  • journal_id Many2one → account.journal
    required=True args: 'account.journal', 'Journal'
  • line_ids One2many → mrp.account.wip.accounting.line
    compute='_compute_line_ids' readonly=False store=True args: 'mrp.account.wip.accounting.line', 'wip_accounting_id', 'WIP accounting lines'
  • mo_ids Many2many → mrp.production
    args: 'mrp.production'
  • reference Char
    args: 'Reference'
  • reversal_date Date
    compute='_compute_reversal_date' readonly=False required=True store=True args: 'Reversal Date'
Public methods (2)
  • confirm(self)
  • default_get(self, fields)
    @api.model

New fields (6)
  • account_id Many2one → account.account
    args: 'account.account', 'Account'
  • credit Monetary
    compute='_compute_credit' readonly=False store=True args: 'Credit'
  • currency_id Many2one → res.currency
    default=<expr> args: 'res.currency', 'Currency'
  • debit Monetary
    compute='_compute_debit' readonly=False store=True args: 'Debit'
  • label Char
    args: 'Label'
  • wip_accounting_id Many2one → mrp.account.wip.accounting
    args: 'mrp.account.wip.accounting', 'WIP accounting wizard'
Public methods (0)

No public methods.

New fields (4)
  • extra_cost Float
    copy=False string='Extra Unit Cost'
  • show_valuation Boolean
    compute='_compute_show_valuation'
  • wip_move_count Integer
    compute='_compute_wip_move_count' args: 'WIP Journal Entry Count'
  • wip_move_ids Many2many → account.move
    copy=False args: 'account.move', 'wip_move_production_rel', 'production_id', 'move_id'
Public methods (2)
  • action_view_move_wip(self)
  • write(self, vals)

New fields (2)
  • costs_hour_account_ids Many2many → account.analytic.account
    compute='_compute_costs_hour_account_ids' store=True args: 'account.analytic.account'
  • expense_account_id Many2one → account.account
    check_company=True help='The expense is accounted for when the manufacturing order is marked as done. If not set, it is the expense account of the final product that will be used instead.' string='Expense Account' args: 'account.account'
Public methods (0)

No public methods.

New fields (1)
  • account_move_line_id Many2one → account.move.line
    args: 'account.move.line'
Public methods (0)

No public methods.

New fields (2)
  • mo_analytic_account_line_ids Many2many → account.analytic.line
    copy=False args: 'account.analytic.line', 'mrp_workorder_mo_analytic_rel'
  • wc_analytic_account_line_ids Many2many → account.analytic.line
    copy=False args: 'account.analytic.line', 'mrp_workorder_wc_analytic_rel'
Public methods (2)
  • action_cancel(self)
  • unlink(self)

New fields (1)
  • property_stock_account_production_cost_id Many2one → account.account
    check_company=True company_dependent=True help='This account will be used as a valuation counterpart for both components and final products for manufacturing orders.\n If there are any workcenter/employee costs, this value will remain on the account once the production is completed.' ondelete='restrict' args: 'account.account', 'Production Account'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • action_bom_cost(self)
  • button_bom_cost(self)

New fields (0)

No new fields.

Public methods (2)
  • action_bom_cost(self)
  • button_bom_cost(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 (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/mrp_account
VERSION
VERSION 1.0
CATEGORY
CATEGORYManufacturing/Manufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Xavier Morel, Yannick Tivisse, Odoo Online, Christophe Monniez, Arnold Moyaux, William Henrotin, Prakash Prajapati, Tiffany Chang (tic), Gorash, William Braeckman, william-andre, David (dafr), JF Aubert, Louis Wicket (wil), Walid, Adrien Widart (awt), clesgow, Pieter Claeys (clpi), Levi Siuzdak (sile), Dylan Kiss (dyki), Jinane Maksoud, Chong Wang (cwg), Martin Maes, Xavier Bol (xbo), Paweł Fertyk, Arnaud Sibille, Ethan Vincent, Maxime de Neuville, yosa-odoo, Louis Gobert, Louis (wil), mano-odoo, kawkb, David Van Droogenbroeck (DROD), plha-odoo, joseph, Arthur Jochems (ajoc), agbr-odoo, Eve Lin (evlin), siha-odoo
WEBSITE
WEBSITEhttps://www.odoo.com/app/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:54
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
    - stock_account
    - account
    - onboarding
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Analytic Accounting in MRP
==========================

* Cost structure report

Also, allows to compute the cost of the product based on its BoM, using the costs of its components and work center operations.
It adds a button on the product itself but also an action in the list view of the products.
If the automated inventory valuation is active, the necessary accounting entries will be created.

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
account_analytic_account_view_form_mrp account.analytic.account.form.mrp account.analytic.account div Inherits analytic.view_account_analytic_account_form
mrp_account.report_wip mrp_account.report_wip ir.ui.view qweb New
mrp_production_form_view_inherited mrp.production.view.inherited mrp.production xpath Inherits mrp.mrp_production_form_view
mrp_workcenter_view_inherit mrp.workcenter.form.inherit mrp.workcenter group Inherits mrp.mrp_workcenter_view
product_product_ext_form_view2 product_extended.product.form.view product.template xpath Inherits product.product_template_only_form_view
product_product_view_form_normal_inherit_extended product.product.view.form.normal.inherit.extended product.product xpath Inherits product.product_normal_form_view
product_variant_easy_edit_view_bom_inherit product.product.product.view.form.easy.bom.inherit product.product data Inherits product.product_variant_easy_edit_view
view_category_property_form product.category.stock.property.form.inherit product.category field Inherits stock_account.view_category_property_form
view_move_form_inherit_mrp_account account.move.inherit.mrp.account account.move xpath Inherits account.view_move_form
view_production_graph_inherit_mrp_account mrp.production.graph.inherited.mrp.account mrp.production xpath Inherits mrp.view_production_graph
view_wip_accounting_form Post WIP Accounting Entry mrp.account.wip.accounting form New
Models touched (17)

New fields (6)
  • bom_count Integer
    compute='_compute_bom_count' args: 'BoM Count'
  • bom_ids Many2many → mrp.bom
    args: 'mrp.bom'
  • production_count Integer
    compute='_compute_production_count' args: 'Manufacturing Orders Count'
  • production_ids Many2many → mrp.production
    args: 'mrp.production'
  • workcenter_ids Many2many → mrp.workcenter
    args: 'mrp.workcenter'
  • workorder_count Integer
    compute='_compute_workorder_count' args: 'Work Order Count'
Public methods (3)
  • action_view_mrp_bom(self)
  • action_view_mrp_production(self)
  • action_view_workorder(self)

New fields (1)
  • business_domain Selection
    ondelete={'manufacturing_order': 'cascade'} selection_add=[('manufacturing_order', 'Manufacturing Order')]
Public methods (0)

No public methods.

New fields (1)
  • category Selection
    selection_add=[('manufacturing_order', 'Manufacturing Order')]
Public methods (0)

No public methods.

New fields (2)
  • wip_production_count Integer
    compute='_compute_wip_production_count' args: 'Manufacturing Orders Count'
  • wip_production_ids Many2many → mrp.production
    help='The MOs that this WIP entry was based on. Expected to be set at time of WIP entry creation.' string='Relevant WIP MOs' args: 'mrp.production'
Public methods (1)
  • action_view_wip_production(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • date Date
    default=fields.Datetime.now args: 'Date'
  • journal_id Many2one → account.journal
    required=True args: 'account.journal', 'Journal'
  • line_ids One2many → mrp.account.wip.accounting.line
    compute='_compute_line_ids' readonly=False store=True args: 'mrp.account.wip.accounting.line', 'wip_accounting_id', 'WIP accounting lines'
  • mo_ids Many2many → mrp.production
    args: 'mrp.production'
  • reference Char
    args: 'Reference'
  • reversal_date Date
    compute='_compute_reversal_date' readonly=False required=True store=True args: 'Reversal Date'
Public methods (2)
  • confirm(self)
  • default_get(self, fields_list)
    @api.model

New fields (6)
  • account_id Many2one → account.account
    args: 'account.account', 'Account'
  • credit Monetary
    compute='_compute_credit' readonly=False store=True args: 'Credit'
  • currency_id Many2one → res.currency
    default=<expr> args: 'res.currency', 'Currency'
  • debit Monetary
    compute='_compute_debit' readonly=False store=True args: 'Debit'
  • label Char
    args: 'Label'
  • wip_accounting_id Many2one → mrp.account.wip.accounting
    args: 'mrp.account.wip.accounting', 'WIP accounting wizard'
Public methods (0)

No public methods.

New fields (2)
  • extra_cost Float
    copy=False string='Extra Unit Cost'
  • show_valuation Boolean
    compute='_compute_show_valuation'
Public methods (3)
  • action_view_stock_valuation_layers(self)
  • button_mark_done(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • costs_hour_account_ids Many2many → account.analytic.account
    compute='_compute_costs_hour_account_ids' store=True args: 'account.analytic.account'
  • expense_account_id Many2one → account.account
    check_company=True help='The expense is accounted for when the manufacturing order is marked as done. If not set, it is the expense account of the final product that will be used instead.' string='Expense Account' args: 'account.account'
Public methods (0)

No public methods.

New fields (1)
  • account_move_line_id Many2one → account.move.line
    args: 'account.move.line'
Public methods (0)

No public methods.

New fields (2)
  • mo_analytic_account_line_ids Many2many → account.analytic.line
    copy=False args: 'account.analytic.line', 'mrp_workorder_mo_analytic_rel'
  • wc_analytic_account_line_ids Many2many → account.analytic.line
    copy=False args: 'account.analytic.line', 'mrp_workorder_wc_analytic_rel'
Public methods (2)
  • action_cancel(self)
  • unlink(self)

New fields (1)
  • property_stock_account_production_cost_id Many2one → account.account
    check_company=True company_dependent=True domain="[('deprecated', '=', False)]" help='This account will be used as a valuation counterpart for both components and final products for manufacturing orders.\n If there are any workcenter/employee costs, this value will remain on the account once the production is completed.' ondelete='restrict' args: 'account.account', 'Production Account'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • action_bom_cost(self)
  • button_bom_cost(self)

New fields (0)

No new fields.

Public methods (2)
  • action_bom_cost(self)
  • button_bom_cost(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.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/mrp_account
VERSION
VERSION 1.0
CATEGORY
CATEGORYManufacturing/Manufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, qdp-odoo, Damien Bouvy, Yannick Tivisse, Odoo Online, Christophe Monniez, Arnold Moyaux, William Henrotin, Touati Djamel (otd), Prakash Prajapati, Tiffany Chang (tic), Gorash, Pierre Paridans, William Braeckman, william-andre, JF Aubert, yhu-odoo, Walid HANNICHE (waha), Louis Wicket (wil), Walid, Adrien Widart (awt), Saurabh Mishra, clesgow, Pieter Claeys (clpi), Dylan Kiss (dyki), Jinane Maksoud, Antoine (ande), Martin Maes, stcc-odoo, Paweł Fertyk, Ahmed Khalaf (ahkh), Zeel Patel, Ethan Vincent, yosa-odoo, kcv-odoo, Louis (wil), kawkb, David Van Droogenbroeck (DROD), Arthur Jochems (ajoc), agbr-odoo
WEBSITE
WEBSITEhttps://www.odoo.com/app/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:05
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
    - stock_account
    - account
    - onboarding
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Analytic Accounting in MRP
==========================

* Cost structure report

Also, allows to compute the cost of the product based on its BoM, using the costs of its components and work center operations.
It adds a button on the product itself but also an action in the list view of the products.
If the automated inventory valuation is active, the necessary accounting entries will be created.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
account_analytic_account_view_form_mrp account.analytic.account.form.mrp account.analytic.account div Inherits analytic.view_account_analytic_account_form
mrp_account.report_wip mrp_account.report_wip ir.ui.view qweb New
mrp_bom_form_view_inherited mrp.bom.form.inherited mrp.bom xpath Inherits mrp.mrp_bom_form_view
mrp_production_form_view_inherited mrp.production.view.inherited mrp.production xpath Inherits mrp.mrp_production_form_view
product_product_ext_form_view2 product_extended.product.form.view product.template xpath Inherits product.product_template_only_form_view
product_product_view_form_normal_inherit_extended product.product.view.form.normal.inherit.extended product.product xpath Inherits product.product_normal_form_view
product_variant_easy_edit_view_bom_inherit product.product.product.view.form.easy.bom.inherit product.product data Inherits product.product_variant_easy_edit_view
view_category_property_form product.category.stock.property.form.inherit product.category field Inherits stock_account.view_category_property_form
view_production_graph_inherit_mrp_account mrp.production.graph.inherited.mrp.account mrp.production xpath Inherits mrp.view_production_graph
view_production_tree_view_inherit mrp.production.tree.view.inherit mrp.production field Inherits mrp.mrp_production_tree_view
Models touched (15)

New fields (6)
  • bom_count Integer
    compute='_compute_bom_count' args: 'BoM Count'
  • bom_ids Many2many → mrp.bom
    args: 'mrp.bom'
  • production_count Integer
    compute='_compute_production_count' args: 'Manufacturing Orders Count'
  • production_ids Many2many → mrp.production
    args: 'mrp.production'
  • workcenter_ids Many2many → mrp.workcenter
    args: 'mrp.workcenter'
  • workorder_count Integer
    compute='_compute_workorder_count' args: 'Work Order Count'
Public methods (3)
  • action_view_mrp_bom(self)
  • action_view_mrp_production(self)
  • action_view_workorder(self)

New fields (1)
  • business_domain Selection
    ondelete={'manufacturing_order': 'cascade'} selection_add=[('manufacturing_order', 'Manufacturing Order')]
Public methods (0)

No public methods.

New fields (1)
  • category Selection
    selection_add=[('manufacturing_order', 'Manufacturing Order')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • analytic_account_ids Many2many → account.analytic.account
    compute='_compute_analytic_account_ids' copy=True args: 'account.analytic.account'
  • analytic_distribution Json
    inverse='_inverse_analytic_distribution' precompute=False store=False
  • analytic_distribution_text Text
    company_dependent=True
Public methods (0)

No public methods.

New fields (3)
  • analytic_account_ids Many2many → account.analytic.account
    compute='_compute_analytic_account_ids' store=True args: 'account.analytic.account'
  • extra_cost Float
    copy=False string='Extra Unit Cost'
  • show_valuation Boolean
    compute='_compute_show_valuation'
Public methods (3)
  • action_view_analytic_accounts(self)
  • action_view_stock_valuation_layers(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • costs_hour_account_ids Many2many → account.analytic.account
    compute='_compute_costs_hour_account_ids' store=True args: 'account.analytic.account'
Public methods (0)

No public methods.

New fields (2)
  • mo_analytic_account_line_ids Many2many → account.analytic.line
    copy=False args: 'account.analytic.line', 'mrp_workorder_mo_analytic_rel'
  • wc_analytic_account_line_ids Many2many → account.analytic.line
    copy=False args: 'account.analytic.line', 'mrp_workorder_wc_analytic_rel'
Public methods (2)
  • action_cancel(self)
  • unlink(self)

New fields (1)
  • property_stock_account_production_cost_id Many2one → account.account
    check_company=True company_dependent=True domain="[('deprecated', '=', False)]" help='This account will be used as a valuation counterpart for both components and final products for manufacturing orders.\n If there are any workcenter/employee costs, this value will remain on the account once the production is completed.' args: 'account.account', 'Production Account'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (2)
  • action_bom_cost(self)
  • button_bom_cost(self)

New fields (0)

No new fields.

Public methods (2)
  • action_bom_cost(self)
  • button_bom_cost(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 (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/mrp_account
VERSION
VERSION 1.0
CATEGORY
CATEGORYManufacturing/Manufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Denis Ledoux, Damien Bouvy, Yannick Tivisse, qsm-odoo, Arnold Moyaux, Adrien Widart, Touati Djamel (otd), Tiffany Chang (tic), Nathan Marotte (nama), Rémy Voet (ryv), william-andre, JF Aubert, yhu-odoo, aliya, william, Walid HANNICHE (waha), Walid, Adrien Widart (awt), Pieter Claeys (clpi), Antoine (ande), stcc-odoo, Ahmed Khalaf (ahkh), Ethan Vincent, lase@odoo.com, Richard Prosser, luve-odoo
WEBSITE
WEBSITEhttps://www.odoo.com/app/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:47
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
    - stock_account
    - account
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Analytic Accounting in MRP
==========================

* Cost structure report

Also, allows to compute the cost of the product based on its BoM, using the costs of its components and work center operations.
It adds a button on the product itself but also an action in the list view of the products.
If the automated inventory valuation is active, the necessary accounting entries will be created.

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
account_analytic_account_view_form_mrp account.analytic.account.form.mrp account.analytic.account div Inherits analytic.view_account_analytic_account_form
mrp_bom_form_view_inherited mrp.bom.form.inherited mrp.bom xpath Inherits mrp.mrp_bom_form_view
mrp_production_form_view_inherited mrp.production.view.inherited mrp.production xpath Inherits mrp.mrp_production_form_view
product_product_ext_form_view2 product_extended.product.form.view product.template xpath Inherits product.product_template_only_form_view
product_product_view_form_normal_inherit_extended product.product.view.form.normal.inherit.extended product.product xpath Inherits product.product_normal_form_view
product_variant_easy_edit_view_bom_inherit product.product.product.view.form.easy.bom.inherit product.product data Inherits product.product_variant_easy_edit_view
view_production_graph_inherit_mrp_account mrp.production.graph.inherited.mrp.account mrp.production xpath Inherits mrp.view_production_graph
view_production_tree_view_inherit mrp.production.tree.view.inherit mrp.production field Inherits mrp.mrp_production_tree_view
Models touched (13)

New fields (6)
  • bom_count Integer
    compute='_compute_bom_count' args: 'BoM Count'
  • bom_ids One2many → mrp.bom
    string='Bills of Materials' args: 'mrp.bom', 'analytic_account_id'
  • production_count Integer
    compute='_compute_production_count' args: 'Manufacturing Orders Count'
  • production_ids One2many → mrp.production
    string='Manufacturing Orders' args: 'mrp.production', 'analytic_account_id'
  • workcenter_ids One2many → mrp.workcenter
    string='Workcenters' args: 'mrp.workcenter', 'costs_hour_account_id'
  • workorder_count Integer
    compute='_compute_workorder_count' args: 'Work Order Count'
Public methods (3)
  • action_view_mrp_bom(self)
  • action_view_mrp_production(self)
  • action_view_workorder(self)

New fields (1)
  • category Selection
    selection_add=[('manufacturing_order', 'Manufacturing Order')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • analytic_account_id Many2one → account.analytic.account
    company_dependent=True copy=True help='Analytic account in which cost and revenue entries will take place for financial management of the manufacturing order.' args: 'account.analytic.account', 'Analytic Account'
Public methods (0)

No public methods.

New fields (3)
  • analytic_account_id Many2one → account.analytic.account
    compute='_compute_analytic_account_id' copy=True help='Analytic account in which cost and revenue entries will take place for financial management of the manufacturing order.' readonly=False store=True args: 'account.analytic.account', 'Analytic Account'
  • extra_cost Float
    copy=False string='Extra Unit Cost'
  • show_valuation Boolean
    compute='_compute_show_valuation'
Public methods (3)
  • action_view_analytic_account(self)
  • action_view_stock_valuation_layers(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • costs_hour_account_id Many2one → account.analytic.account
    help='Posts analytical accounting entries in real time for both component and operational costs.' string='Analytic Account' args: 'account.analytic.account'
Public methods (0)

No public methods.

New fields (1)
  • cost_already_recorded Boolean
    args: 'Cost Recorded'
Public methods (0)

No public methods.

New fields (2)
  • mo_analytic_account_line_id Many2one → account.analytic.line
    copy=False args: 'account.analytic.line'
  • wc_analytic_account_line_id Many2one → account.analytic.line
    copy=False args: 'account.analytic.line'
Public methods (2)
  • action_cancel(self)
  • unlink(self)

New fields (0)

No new fields.

Public methods (2)
  • action_bom_cost(self)
  • button_bom_cost(self)

New fields (0)

No new fields.

Public methods (2)
  • action_bom_cost(self)
  • button_bom_cost(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.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/mrp_account
VERSION
VERSION 1.0
CATEGORY
CATEGORYManufacturing/Manufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, Arnold Moyaux, Xavier-Do, Andrea Grazioso (agr-odoo), William Henrotin, alt-odoo, Adrien Widart, Touati Djamel (otd), Tiffany Chang (tic), Nathan Marotte (nama), Rémy Voet (ryv), yhu-odoo, Walid HANNICHE (waha), niyasraphy, Walid, Adrien Widart (awt), Pieter Claeys (clpi), Miika Nissi, Antoine (ande), lase@odoo.com, jocelyn, Richard Prosser
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
    - stock_account
    - account
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Analytic Accounting in MRP
==========================

* Cost structure report

Also, allows to compute the cost of the product based on its BoM, using the costs of its components and work center operations.
It adds a button on the product itself but also an action in the list view of the products.
If the automated inventory valuation is active, the necessary accounting entries will be created.

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_analytic_account_view_form_mrp account.analytic.account.form.mrp account.analytic.account div Inherits analytic.view_account_analytic_account_form
mrp_bom_form_view_inherited mrp.bom.form.inherited mrp.bom xpath Inherits mrp.mrp_bom_form_view
mrp_production_form_view_inherited mrp.production.view.inherited mrp.production xpath Inherits mrp.mrp_production_form_view
product_product_ext_form_view2 product_extended.product.form.view product.template xpath Inherits product.product_template_only_form_view
product_product_view_form_normal_inherit_extended product.product.view.form.normal.inherit.extended product.product xpath Inherits product.product_normal_form_view
product_variant_easy_edit_view_bom_inherit product.product.product.view.form.easy.bom.inherit product.product data Inherits product.product_variant_easy_edit_view
view_production_graph_inherit_mrp_account mrp.production.graph.inherited.mrp.account mrp.production xpath Inherits mrp.view_production_graph
Models touched (12)

New fields (6)
  • bom_count Integer
    compute='_compute_bom_count' args: 'BoM Count'
  • bom_ids One2many → mrp.bom
    string='Bills of Materials' args: 'mrp.bom', 'analytic_account_id'
  • production_count Integer
    compute='_compute_production_count' args: 'Manufacturing Orders Count'
  • production_ids One2many → mrp.production
    string='Manufacturing Orders' args: 'mrp.production', 'analytic_account_id'
  • workcenter_ids One2many → mrp.workcenter
    string='Workcenters' args: 'mrp.workcenter', 'costs_hour_account_id'
  • workorder_count Integer
    compute='_compute_workorder_count' args: 'Work Order Count'
Public methods (3)
  • action_view_mrp_bom(self)
  • action_view_mrp_production(self)
  • action_view_workorder(self)

New fields (1)
  • category Selection
    selection_add=[('manufacturing_order', 'Manufacturing Order')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • analytic_account_id Many2one → account.analytic.account
    company_dependent=True copy=True help='Analytic account in which cost and revenue entries will take place for financial management of the manufacturing order.' args: 'account.analytic.account', 'Analytic Account'
Public methods (0)

No public methods.

New fields (3)
  • analytic_account_id Many2one → account.analytic.account
    compute='_compute_analytic_account_id' copy=True help='Analytic account in which cost and revenue entries will take place for financial management of the manufacturing order.' readonly=False store=True args: 'account.analytic.account', 'Analytic Account'
  • extra_cost Float
    copy=False help='Extra cost per produced unit'
  • show_valuation Boolean
    compute='_compute_show_valuation'
Public methods (3)
  • action_view_analytic_account(self)
  • action_view_stock_valuation_layers(self)
  • write(self, vals)

New fields (1)
  • costs_hour_account_id Many2one → account.analytic.account
    help='Fill this only if you want automatic analytic accounting entries on production orders.' string='Analytic Account' args: 'account.analytic.account'
Public methods (0)

No public methods.

New fields (1)
  • cost_already_recorded Boolean
    help="Technical field automatically checked when a ongoing production posts journal entries for its costs. This way, we can record one production's cost multiple times and only consider new entries in the work centers time lines." args: 'Cost Recorded'
Public methods (0)

No public methods.

New fields (2)
  • mo_analytic_account_line_id Many2one → account.analytic.line
    copy=False args: 'account.analytic.line'
  • wc_analytic_account_line_id Many2one → account.analytic.line
    copy=False args: 'account.analytic.line'
Public methods (1)
  • action_cancel(self)

New fields (0)

No new fields.

Public methods (2)
  • action_bom_cost(self)
  • button_bom_cost(self)

New fields (0)

No new fields.

Public methods (2)
  • action_bom_cost(self)
  • button_bom_cost(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.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/mrp_account
VERSION
VERSION 1.0
CATEGORY
CATEGORYManufacturing/Manufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Christophe Simonis, Simon Lejeune, qdp-odoo, Yannick Tivisse, Arnold Moyaux, Julien Castiaux, Xavier-Do, Andrea Grazioso (agr-odoo), William Henrotin, alt-odoo, fw-bot, Debauche Stéphane, Adrien Widart, Touati Djamel (otd), Nathan Marotte (nama), Rémy Voet (ryv), Kevin Baptiste, yhu-odoo, Walid HANNICHE (waha), Walid, Adrien Widart (awt)
WEBSITE
WEBSITEhttps://www.odoo.com/page/manufacturing
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:28
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
    - stock_account
    - account
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Analytic Accounting in MRP
==========================

* Cost structure report

Also, allows to compute the cost of the product based on its BoM, using the costs of its components and work center operations.
It adds a button on the product itself but also an action in the list view of the products.
If the automated inventory valuation is active, the necessary accounting entries will be created.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
mrp_production_form_view_inherited mrp.production.view.inherited mrp.production xpath Inherits mrp.mrp_production_form_view
product_product_ext_form_view2 product_extended.product.form.view product.template xpath Inherits product.product_template_only_form_view
product_product_view_form_normal_inherit_extended product.product.view.form.normal.inherit.extended product.product xpath Inherits product.product_normal_form_view
product_variant_easy_edit_view_bom_inherit product.product.product.view.form.easy.bom.inherit product.product data Inherits product.product_variant_easy_edit_view
Models touched (7)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • extra_cost Float
    copy=False help='Extra cost per produced unit'
  • show_valuation Boolean
    compute='_compute_show_valuation'
Public methods (2)
  • action_view_stock_valuation_layers(self)
  • button_mark_done(self)

New fields (1)
  • costs_hour_account_id Many2one → account.analytic.account
    help='Fill this only if you want automatic analytic accounting entries on production orders.' string='Analytic Account' args: 'account.analytic.account'
Public methods (0)

No public methods.

New fields (1)
  • cost_already_recorded Boolean
    help="Technical field automatically checked when a ongoing production posts journal entries for its costs. This way, we can record one production's cost multiple times and only consider new entries in the work centers time lines." args: 'Cost Recorded'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • action_bom_cost(self)
  • button_bom_cost(self)

New fields (0)

No new fields.

Public methods (2)
  • action_bom_cost(self)
  • button_bom_cost(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/mrp_account
VERSION
VERSION 1.0
CATEGORY
CATEGORYManufacturing/Manufacturing
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, Christophe Simonis, Simon Lejeune, Nicolas Martinelli, Damien Bouvy, Odoo Online, Adrian Torres, Xavier-Do, William Henrotin, alt-odoo, fw-bot, svs-odoo, Adrien Widart, Touati Djamel (otd)
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
    - stock_account
    - account
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Analytic Accounting in MRP
==========================

* Cost structure report

Also, allows to compute the cost of the product based on its BoM, using the costs of its components and work center operations.
It adds a button on the product itself but also an action in the list view of the products.
If the automated inventory valuation is active, the necessary accounting entries will be created.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
mrp_production_form_view_inherited mrp.production.view.inherited mrp.production xpath Inherits mrp.mrp_production_form_view
product_product_ext_form_view2 product_extended.product.form.view product.template xpath Inherits product.product_template_only_form_view
product_product_view_form_normal_inherit_extended product.product.view.form.normal.inherit.extended product.product xpath Inherits product.product_normal_form_view
product_variant_easy_edit_view_bom_inherit product.product.product.view.form.easy.bom.inherit product.product data Inherits product.product_variant_easy_edit_view
Models touched (6)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • extra_cost Float
    copy=False help='Extra cost per produced unit'
  • show_valuation Boolean
    compute='_compute_show_valuation'
Public methods (2)
  • action_view_stock_valuation_layers(self)
  • button_mark_done(self)

New fields (1)
  • costs_hour_account_id Many2one → account.analytic.account
    help='Fill this only if you want automatic analytic accounting entries on production orders.' string='Analytic Account' args: 'account.analytic.account'
Public methods (0)

No public methods.

New fields (1)
  • cost_already_recorded Boolean
    help="Technical field automatically checked when a ongoing production posts journal entries for its costs. This way, we can record one production's cost multiple times and only consider new entries in the work centers time lines." args: 'Cost Recorded'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • action_bom_cost(self)
  • button_bom_cost(self)

New fields (0)

No new fields.

Public methods (2)
  • action_bom_cost(self)
  • button_bom_cost(self)