Repository
odoo/odoo · module folder
Module version
1.0
Category
Supply Chain/Manufacturing
Folder size
1.36 MB
License
LGPL-3
Application
No
Auto-installable
Yes
Website
https://www.odoo.com/app/manufacturing
Last tracking update
2026-08-15 22:44:16
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Raphael Collet, Odoo Translation Bot, Arnold Moyaux, Julien Castiaux, Victor Feyens, William Henrotin, svs-odoo, Tiffany Chang (tic), Gorash, William Braeckman, william-andre, JF Aubert, David (dafr), luvi, Adrien Widart (awt), Pieter Claeys (clpi), clesgow, Dylan Kiss (dyki), Jinane Maksoud, Paweł Fertyk, Arnaud Sibille, Ethan Vincent, kcv-odoo, Louis Gobert, nihp-odoo, Stéphane Diez, djameltouati, Mahdi Alijani (malj), MaximeNoirhomme, plha-odoo, Krzysztof Magusiak (krma), joseph, Robin Engels (roen), nsirjacobs, agbr-odoo, Lulu Grimalkin (lugr), Yash Pathak, Lancelot Semal, Amr Elkhatieb, Robert Smith (rosm), Eve Lin (evlin), siha-odoo, lase, ddba-odoo, Karim Gamaleldin
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
mrp_subcontracting_account, project_mrp_account
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 form 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 form Inherits mrp.mrp_production_form_view
mrp_workcenter_view_inherit mrp.workcenter.form.inherit mrp.workcenter form Inherits mrp.mrp_workcenter_view
product_product_ext_form_view2 product_extended.product.form.view product.template form Inherits product.product_template_only_form_view
product_product_view_form_normal_inherit_extended product.product.view.form.normal.inherit.extended product.product form Inherits product.product_normal_form_view
product_variant_easy_edit_view_bom_inherit product.product.product.view.form.easy.bom.inherit product.product form Inherits product.product_variant_easy_edit_view
view_move_form_inherit_mrp_account account.move.inherit.mrp.account account.move form Inherits account.view_move_form
view_production_graph_inherit_mrp_account mrp.production.graph.inherited.mrp.account mrp.production graph Inherits mrp.view_production_graph
view_wip_accounting_form Post WIP Accounting Entry mrp.account.wip.accounting form New
HTTP endpoints (0)

No HTTP endpoints found for this module.

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.

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…