diff --git a/mrp_component_operation_scrap_reason/readme/CONTRIBUTORS.rst b/mrp_component_operation_scrap_reason/readme/CONTRIBUTORS.rst index fcd081018..163495e5c 100644 --- a/mrp_component_operation_scrap_reason/readme/CONTRIBUTORS.rst +++ b/mrp_component_operation_scrap_reason/readme/CONTRIBUTORS.rst @@ -1 +1,2 @@ * David Jiménez +* Lois Rilo diff --git a/mrp_component_operation_scrap_reason/wizards/mrp_component_operate.py b/mrp_component_operation_scrap_reason/wizards/mrp_component_operate.py index c28589017..2324ca2df 100644 --- a/mrp_component_operation_scrap_reason/wizards/mrp_component_operate.py +++ b/mrp_component_operation_scrap_reason/wizards/mrp_component_operate.py @@ -1,16 +1,35 @@ -# Copyright 2022 ForgeFlow S.L. (https://www.forgeflow.com) +# Copyright 2022-23 ForgeFlow S.L. (https://www.forgeflow.com) # License AGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). -from odoo import fields, models +from odoo import api, fields, models class MrpComponentOperate(models.Model): _inherit = "mrp.component.operate" scrap_reason_code_id = fields.Many2one( - "scrap.reason.code", + comodel_name="scrap.reason.code", string="Scrap Reason Code", + domain="[('id', 'in', allowed_reason_code_ids)]", ) + allowed_reason_code_ids = fields.Many2many( + comodel_name="scrap.reason.code", + compute="_compute_allowed_reason_code_ids", + ) + + @api.depends("product_id") + def _compute_allowed_reason_code_ids(self): + for rec in self: + codes = self.env["scrap.reason.code"] + if rec.product_id: + codes = codes.search( + [ + "|", + ("product_category_ids", "=", False), + ("product_category_ids", "in", rec.product_id.categ_id.id), + ] + ) + rec.allowed_reason_code_ids = codes def _create_scrap(self): scrap = super()._create_scrap() diff --git a/mrp_component_operation_scrap_reason/wizards/mrp_component_operate_wizard.xml b/mrp_component_operation_scrap_reason/wizards/mrp_component_operate_wizard.xml index 51349f347..ea4282bf8 100644 --- a/mrp_component_operation_scrap_reason/wizards/mrp_component_operate_wizard.xml +++ b/mrp_component_operation_scrap_reason/wizards/mrp_component_operate_wizard.xml @@ -13,6 +13,7 @@ name="scrap_reason_code_id" attrs="{'invisible': [('outgoing_operation', '!=', 'scrap')], 'required': [('outgoing_operation', '=', 'scrap')]}" /> +