When we deactivate the work orders in the settings, new MOs still use operations that were assigned to the BoM, it just does not show the Operations tab. We fix that by archiving the operations when work orders are deactivated in the settings. closes odoo/odoo#66108 Related: odoo/upgrade#2344 Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com>
44 lines
2.4 KiB
Python
44 lines
2.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class ResConfigSettings(models.TransientModel):
|
|
_inherit = 'res.config.settings'
|
|
|
|
manufacturing_lead = fields.Float(related='company_id.manufacturing_lead', string="Manufacturing Lead Time", readonly=False)
|
|
use_manufacturing_lead = fields.Boolean(string="Default Manufacturing Lead Time", config_parameter='mrp.use_manufacturing_lead')
|
|
group_mrp_byproducts = fields.Boolean("By-Products",
|
|
implied_group='mrp.group_mrp_byproducts')
|
|
module_mrp_mps = fields.Boolean("Master Production Schedule")
|
|
module_mrp_plm = fields.Boolean("Product Lifecycle Management (PLM)")
|
|
module_mrp_workorder = fields.Boolean("Work Orders")
|
|
module_quality_control = fields.Boolean("Quality")
|
|
module_quality_control_worksheet = fields.Boolean("Quality Worksheet")
|
|
module_mrp_subcontracting = fields.Boolean("Subcontracting")
|
|
group_mrp_routings = fields.Boolean("MRP Work Orders",
|
|
implied_group='mrp.group_mrp_routings')
|
|
group_locked_by_default = fields.Boolean("Lock Quantities To Consume", implied_group='mrp.group_locked_by_default')
|
|
|
|
@api.onchange('use_manufacturing_lead')
|
|
def _onchange_use_manufacturing_lead(self):
|
|
if not self.use_manufacturing_lead:
|
|
self.manufacturing_lead = 0.0
|
|
|
|
@api.onchange('group_mrp_routings')
|
|
def _onchange_group_mrp_routings(self):
|
|
# If we activate 'MRP Work Orders', it means that we need to install 'mrp_workorder'.
|
|
# The opposite is not always true: other modules (such as 'quality_mrp_workorder') may
|
|
# depend on 'mrp_workorder', so we should not automatically uninstall the module if 'MRP
|
|
# Work Orders' is deactivated.
|
|
# Long story short: if 'mrp_workorder' is already installed, we don't uninstall it based on
|
|
# group_mrp_routings
|
|
operations = self.env['mrp.routing.workcenter'].with_context({'active_test': False}).search([('company_id', '=', self.company_id.id)])
|
|
if self.group_mrp_routings:
|
|
self.module_mrp_workorder = True
|
|
else:
|
|
operations.action_archive() # When deactivating workorders we want to archive all the operations linked to the company
|
|
if not self.env['ir.module.module'].search([('name', '=', 'mrp_workorder'), ('state', '=', 'installed')]):
|
|
self.module_mrp_workorder = False
|