From fe8dc5abf62814746b1951ac65992157ec8ce144 Mon Sep 17 00:00:00 2001 From: Raimon Esteve Date: Thu, 27 Oct 2022 10:33:49 +0200 Subject: [PATCH] sale product domain liter uom --- maquila.py | 4 +++- sale.py | 27 +++++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/maquila.py b/maquila.py index 66cda48..2842693 100644 --- a/maquila.py +++ b/maquila.py @@ -426,7 +426,9 @@ class ProductYear(ModelSQL, ModelView): crop = fields.Many2One('agronomics.crop', "Crop", required=True, readonly=True) product = fields.Many2One('product.product', "Product", required=True, - readonly=True) + readonly=True, context={ + 'company': Eval('company', None), + }, depends=['company']) quantity = fields.Function(fields.Float("Quantity", digits=(16, Eval('unit_digits', 2)), depends=['unit_digits']), 'get_quantity') diff --git a/sale.py b/sale.py index 9514b37..47c725d 100644 --- a/sale.py +++ b/sale.py @@ -2,7 +2,7 @@ # this repository contains the full copyright notices and license terms. from trytond.model import fields from trytond.pool import Pool, PoolMeta -from trytond.pyson import Bool, Eval, Id +from trytond.pyson import Bool, Eval, Id, If def default_func(field_name): @@ -58,7 +58,7 @@ class Sale(metaclass=PoolMeta): __name__ = 'sale.sale' is_maquila = fields.Boolean("Is Maquila", states={ - 'readonly': Eval('state') != 'draft', + 'readonly': ((Eval('state') != 'draft') | (Eval('lines', [0]))), }, depends=['state']) @@ -99,3 +99,26 @@ class SaleLine(metaclass=PoolMeta): 'required': Bool(Eval('_parent_sale', {}).get('is_maquila')), 'readonly': Eval('sale_state') != 'draft', }) + liter_uom = fields.Function(fields.Many2One('product.uom', "Liter Uom"), + 'get_liter_uom') + + @classmethod + def __setup__(cls): + super(SaleLine, cls).__setup__() + cls.product.domain += [If( Bool(Eval('_parent_sale', {}).get('is_maquila')), + ('sale_uom', '=', Eval('liter_uom')), + ())] + cls.product.depends += ['liter_uom'] + + @classmethod + def default_liter_uom(cls): + pool = Pool() + ModelData = pool.get('ir.model.data') + + uom_liter_id = ModelData.get_id('product', 'uom_liter') + return uom_liter_id + + @classmethod + def get_liter_uom(cls, lines, name): + uom_liter_id = cls.default_liter_uom() + return dict((x.id, uom_liter_id) for x in lines)