[IMP] mrp_component_operation_scrap_reason: filter allowed scrap reason codes

This commit is contained in:
Lois Rilo
2023-05-23 12:38:33 +02:00
parent 70138efa75
commit ee119e1d18
3 changed files with 24 additions and 3 deletions

View File

@@ -1 +1,2 @@
* David Jiménez <david.jimenez@forgeflow.com> * David Jiménez <david.jimenez@forgeflow.com>
* Lois Rilo <lois.rilo@forgeflow.com>

View File

@@ -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). # 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): class MrpComponentOperate(models.Model):
_inherit = "mrp.component.operate" _inherit = "mrp.component.operate"
scrap_reason_code_id = fields.Many2one( scrap_reason_code_id = fields.Many2one(
"scrap.reason.code", comodel_name="scrap.reason.code",
string="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): def _create_scrap(self):
scrap = super()._create_scrap() scrap = super()._create_scrap()

View File

@@ -13,6 +13,7 @@
name="scrap_reason_code_id" name="scrap_reason_code_id"
attrs="{'invisible': [('outgoing_operation', '!=', 'scrap')], 'required': [('outgoing_operation', '=', 'scrap')]}" attrs="{'invisible': [('outgoing_operation', '!=', 'scrap')], 'required': [('outgoing_operation', '=', 'scrap')]}"
/> />
<field name="allowed_reason_code_ids" invisible="1" />
</field> </field>
</field> </field>