From ee822431f0690fe17e60e9ff9842ad06675e6fa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=80ngel=20=C3=80lvarez=20Serra?= Date: Fri, 17 Jun 2022 08:59:30 +0200 Subject: [PATCH] add functional field and make uom required by states #048292 --- production.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/production.py b/production.py index ec3d177..b631a7e 100644 --- a/production.py +++ b/production.py @@ -17,7 +17,10 @@ class ProductionTemplate(ModelSQL, ModelView): __name__ = 'production.template' name = fields.Char('Name', required=True) - uom = fields.Many2One('product.uom', 'Uom', required=True) + uom = fields.Many2One('product.uom', 'Uom', + states = { + 'required': True + }) unit_digits = fields.Function(fields.Integer('Unit Digits'), 'on_change_with_unit_digits') quantity = fields.Float('Quantity', @@ -42,6 +45,21 @@ class ProductionTemplate(ModelSQL, ModelView): cost_distribution_templates = fields.One2Many( 'production.cost_price.distribution.template', 'production_template', "Cost Distribution Templates") + inputs_products = fields.Function(fields.One2Many('product.product', None, + 'Products'), 'get_products', searcher='search_input_products') + + def get_products(self, name=None): + products = [] + for template in self.inputs: + products += template.products + return [x.id for x in products] + + @classmethod + def search_input_products(cls, name, clause): + Inputs = Pool().get('production.template.inputs-product.template') + product = clause[-1] + inputs = Inputs.search([('template.products', '=', product)]) + return [('id', 'in', [x.production_template.id for x in inputs])] @fields.depends('uom') def on_change_with_unit_digits(self, name=None): @@ -57,6 +75,8 @@ class ProductionTemplate(ModelSQL, ModelView): record.check_cost_distribution() def check_input_uoms(self): + if not self.uom: + return category_uom = self.uom.category uoms = [i.default_uom.category for i in self.inputs] uoms.append(category_uom)