Manufacturing Operations Extension

mrp_operations_extension
REPOSITORY
REPOSITORYOCA/manufacture
GIT
GIThttps://github.com/OCA/manufacture.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/manufacture/tree/8.0/mrp_operations_extension
VERSION
VERSION 2.0.1
CATEGORY
CATEGORYManufacturing
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), AvanzOSC, Antiun Ingeniería S.L., OdooMRP team, Serv. Tecnol. Avanzados - Pedro M. Baeza
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), AvanzOSC, Antiun Ingeniería S.L., OdooMRP team, Serv. Tecnol. Avanzados - Pedro M. Baeza
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, agaldona, Weblate, OCA-git-bot, Daniel-CA, oihane, Zambu, Oihane Crucelaegui
WEBSITE
WEBSITEhttp://www.odoomrp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/manufacture:
    - mrp_hook
odoo/odoo:
    - mrp_operations
    - mrp
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - report
    - procurement
    - stock_account
    - stock
    - board
    - web_kanban_gauge
    - web_kanban_sparkline
    - account
    - analytic
    - edi
    - email_template
    - resource
    - hr_timesheet
    - hr
    - hr_attendance
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (20)
XML IDNameModelTypeStatus
finish_wo_form_view finish.wo.form.view workcenter.line.finish form New
mrp_bom_form_view_inh mrp.bom.form.inh mrp.bom xpath Inherits mrp.mrp_bom_form_view
mrp_production_form_inherit_view2 mrp.production.form.inherit2 mrp.production xpath Inherits mrp_operations.mrp_production_form_inherit_view2
mrp_production_form_view_inh mrp.production.form.view.inh mrp.production xpath Inherits mrp.mrp_production_form_view
mrp_production_operation_buttons_form_view mrp.production.operation.buttons.form mrp.production xpath Inherits mrp_operations.mrp_production_form_inherit_view
mrp_production_product_form_view_inh mrp.production.product.form.view.inh mrp.production.product.line field Inherits mrp.mrp_production_product_form_view
mrp_production_product_tree_view_inh mrp.production.product.tree.view.inh mrp.production.product.line field Inherits mrp.mrp_production_product_tree_view
mrp_production_workcenter_tree_view_inh_op_ext Workcenter line op ext mrp.production.workcenter.line field Inherits mrp_operations.mrp_production_workcenter_tree_view_inherit
mrp_routing_workcenter_form_view_inh mrp.routing.workcenter.form.inh mrp.routing.workcenter field Inherits mrp.mrp_routing_workcenter_form_view
mrp_routing_workcenter_tree_view_inh mrp.routing.workcenter.tree.inh mrp.routing.workcenter field Inherits mrp.mrp_routing_workcenter_tree_view
mrp_settings_form_view mrp.settings.form mrp.config.settings xpath Inherits mrp.view_mrp_config
mrp_workcenter_form_view_inh mrp.workcenter.form.inh mrp.workcenter field Inherits mrp.mrp_workcenter_view
operation_workcenter_form rountig.operation.tree mrp.operation.workcenter form New
operation_workcenter_tree rountig.operation.tree mrp.operation.workcenter tree New
rountig_operation_form routing.operation.form mrp.routing.operation form New
rountig_operation_tree routing.operation.tree mrp.routing.operation tree New
view_mrp_product_consume_wizard MRP Work Order Consume mrp.work.order.produce form New
view_mrp_product_produce_wizard MRP Work Order Produce mrp.work.order.produce form New
workcenter_line_future_calendar mrp.production.workcenter.line.future.calendar mrp.production.workcenter.line calendar New
workcenter_line_inh_form_view Workcenter line inh mrp.production.workcenter.line button Inherits mrp_operations.mrp_production_workcenter_form_view_inherit
Models touched (16)

New fields (0)

No new fields.

Public methods (1)
  • change_prod_qty(self)
    @api.multi
    Changes the Quantity of Product.

New fields (0)

No new fields.

Public methods (1)
  • onchange_routing_id(self)
    @api.multi@api.onchange('routing_id')

New fields (1)
  • operation Many2one → mrp.routing.workcenter
    comodel_name='mrp.routing.workcenter' string='Consumed in'
Public methods (0)

No public methods.

New fields (2)
  • cycle_by_bom Boolean
    string='Calc Cycles by BoM Quantity'
  • group_mrp_workers Boolean
    implied_group='mrp_operations_extension.group_mrp_workers' string='Manage operators in work centers'
Public methods (2)
  • get_default_parameter_cycle_bom(self)
    @api.multi
  • set_parameter_cycle_bom(self)
    @api.multi

New fields (11)
  • capacity_per_cycle Float
    args: 'Capacity per cycle'
  • custom_data Boolean
    default=False help='If you mark this check, this means that the work center in this routing has different capacity data than the defined on the work center itself' string='Custom'
  • default Boolean
    args: 'Default'
  • op_avg_cost Float
    digits=dp.get_precision('Product Price') string='Operator average hourly cost'
  • op_number Integer
    default='0' args: '# operators'
  • routing_workcenter Many2one → mrp.routing.workcenter
    ondelete='cascade' required=True args: 'mrp.routing.workcenter', 'Routing workcenter'
  • time_cycle Float
    help='Duration for one cycle.' string='Time for 1 cycle (hours)'
  • time_efficiency Float
    args: 'Efficiency factor'
  • time_start Float
    help='Duration for the setup.' string='Time before prod.'
  • time_stop Float
    help='Duartion for the cleaning.' string='Time after prod.'
  • workcenter Many2one → mrp.workcenter
    required=True string='Workcenter' args: 'mrp.workcenter'
Public methods (1)
  • onchange_workcenter(self)
    @api.one@api.onchange('workcenter', 'custom_data')

New fields (1)
  • work_produce_id Many2one → mrp.work.order.produce
    args: 'mrp.work.order.produce'
Public methods (0)

No public methods.

New fields (2)
  • date_planned Datetime
    states={'draft': [('readonly', False)], 'confirmed': [('readonly', False)], 'ready': [('readonly', False)]}
  • workcenter_lines One2many
    readonly=False
Public methods (1)
  • action_confirm(self)
    @api.multi

New fields (2)
  • bom_line Many2one → mrp.bom.line
    comodel_name='mrp.bom.line'
  • work_order Many2one → mrp.production.workcenter.line
    comodel_name='mrp.production.workcenter.line' string='Work Order'
Public methods (0)

No public methods.

New fields (9)
  • do_production Boolean
    string='Produce here'
  • is_material_ready Boolean
    compute='_compute_is_material_ready' string='Materials Ready'
  • move_lines One2many → stock.move
    comodel_name='stock.move' inverse_name='work_order' string='Moves'
  • possible_workcenters Many2many → mrp.workcenter
    comodel_name='mrp.workcenter' compute='_compute_possible_workcenters'
  • product_line One2many → mrp.production.product.line
    comodel_name='mrp.production.product.line' inverse_name='work_order' string='Product Lines'
  • routing_wc_line Many2one → mrp.routing.workcenter
    comodel_name='mrp.routing.workcenter' string='Routing WC Line'
  • time_start Float
    string='Time Start'
  • time_stop Float
    string='Time Stop'
  • workcenter_id Many2one
    domain="[('id', 'in', possible_workcenters[0][2])]"
Public methods (7)
  • action_assign(self)
    @api.one
  • action_start_working(self)
  • button_done(self)
    @api.multi
  • check_minor_sequence_operations(self)
    @api.multi
  • check_operation_moves_state(self, states)
  • create(self, vals)
    @api.model
  • force_assign(self)
    @api.one

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (7)
  • code Char
    args: 'Code'
  • description Text
    args: 'Description'
  • name Char
    required=True args: 'Name'
  • op_number Integer
    default='0' args: '# operators'
  • picking_type_id Many2one → stock.picking.type
    string='Picking Type' args: 'stock.picking.type'
  • steps Text
    args: 'Relevant Steps'
  • workcenters Many2many → mrp.workcenter
    args: 'mrp.workcenter', 'mrp_operation_workcenter_rel', 'operation', 'workcenter', 'Work centers'
Public methods (0)

No public methods.

New fields (5)
  • do_production Boolean
    help='If enabled, the production and movement to stock of the final products will be done in this operation. There can be only one operation per route with this check marked.' string='Produce here'
  • op_wc_lines One2many → mrp.operation.workcenter
    string='Possible work centers for this operation' args: 'mrp.operation.workcenter', 'routing_workcenter'
  • operation Many2one → mrp.routing.operation
    string='Operation' args: 'mrp.routing.operation'
  • picking_type_id Many2one → stock.picking.type
    domain=[('code', '=', 'outgoing')] args: 'stock.picking.type', 'Picking Type'
  • previous_operations_finished Boolean
    string='Previous operations finished'
Public methods (2)
  • onchange_lines_default(self)
    @api.one@api.onchange('op_wc_lines')
  • onchange_operation(self)
    @api.one@api.onchange('operation')

New fields (7)
  • consume_lines One2many → mrp.product.produce.line
    string='Products Consumed' args: 'mrp.product.produce.line', 'work_produce_id'
  • final_product Boolean
    string='Final Product to Stock'
  • lot_id Many2one → stock.production.lot
    args: 'stock.production.lot', 'Lot'
  • mode Selection
    default='consume' required=True string='Mode' args: [('consume_produce', 'Consume & Produce'), ('consume', 'Consume Only')]
  • product_id Many2one → product.product
    default=_get_product_id string='Product' args: 'product.product'
  • product_qty Float
    default=_default_product_qty digits=(12, 6) required=True string='Select Quantity'
  • track_production Boolean
    default=_get_track args: 'Track production'
Public methods (4)
  • default_get(self, cr, uid, var_fields, context=None)
  • do_consume(self, cr, uid, ids, context=None)
  • do_consume_produce(self, cr, uid, ids, context=None)
  • on_change_qty(self, cr, uid, ids, product_qty, consume_lines, context=None)
    When changing the quantity of products to be producedit will recalculate the number of raw materials needed according to the scheduled products and the already consumed/produced products It will return the consume lines needed for the products to be produced which the user can still adapt

New fields (6)
  • op_avg_cost Float
    digits=dp.get_precision('Product Price') string='Operator average hourly cost'
  • op_number Integer
    string='# Operators'
  • operators Many2many → res.users
    string='Operators' args: 'res.users', 'mrp_wc_operator_rel', 'workcenter_id', 'operator_id'
  • post_op_product Many2one → product.product
    string='Post-operation costing product' args: 'product.product'
  • pre_op_product Many2one → product.product
    string='Pre-operation costing product' args: 'product.product'
  • rt_operations Many2many → mrp.routing.operation
    args: 'mrp.routing.operation', 'mrp_operation_workcenter_rel', 'workcenter', 'operation', 'Routing Operations'
Public methods (1)
  • onchange_operators(self)
    @api.one@api.onchange('operators')

New fields (1)
  • work_order Many2one → mrp.production.workcenter.line
    string='Work Order' args: 'mrp.production.workcenter.line'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • cancel_all(self)
    @api.multi
  • make_them_done(self)
    @api.multi