From e81f8af6ef7328f21fb2b661d452cab6d550ab7c Mon Sep 17 00:00:00 2001 From: Raimon Esteve Date: Mon, 21 Mar 2022 19:13:41 +0100 Subject: [PATCH] Check rule only if _check_access is set and enforce companies rule issue4080 --- production.py | 44 ++++++++++++++++++++++++++++++---------- quality.py | 6 +++++- quality.xml | 8 ++++++-- tests/test_agronomics.py | 3 ++- 4 files changed, 46 insertions(+), 15 deletions(-) diff --git a/production.py b/production.py index 77b0a76..ec3d177 100644 --- a/production.py +++ b/production.py @@ -153,35 +153,57 @@ class Production(metaclass=PoolMeta): 'readonly': Eval('state').in_(['cancelled', 'done']), }, depends=['allowed_output_products', 'state']) allowed_enology_products = fields.Function(fields.One2Many( - 'product.product', None, 'Allowed Enology Products', readonly=True), + 'product.product', None, 'Allowed Enology Products', readonly=True, + context={ + 'company': Eval('company'), + }, + depends=['company']), 'on_change_with_allowed_enology_products', setter='set_allowed_products') allowed_output_products = fields.Function(fields.One2Many( - 'product.template', None, 'Allowed Output Products', readonly=True), + 'product.template', None, 'Allowed Output Products', readonly=True, + context={ + 'company': Eval('company'), + }, + depends=['company']), 'on_change_with_allowed_output_products', setter='set_allowed_products') cost_distributions = fields.One2Many( 'production.cost_price.distribution', 'origin', "Cost Distributions", + domain=[ + ('template', 'in', Eval('cost_distribution_templates')), + ], states={ 'readonly': Eval('state').in_(['cancelled', 'done']), - }, domain=[ - ('template', 'in', Eval('cost_distribution_templates')), - ], depends=['state', 'cost_distribution_template', - 'cost_distribution_templates']) + }, + context={ + 'company': Eval('company'), + }, + depends=['state', 'cost_distribution_template', + 'cost_distribution_templates', 'company']) cost_distribution_template = fields.Many2One( 'production.cost_price.distribution.template', "Cost Distribution Template", domain=[ ('id', 'in', Eval('production_template_cost_distribution_templates')) - ], states={ + ], + states={ 'readonly': Eval('state').in_(['cancelled', 'done']), - }, depends=['state', - 'production_template_cost_distribution_templates']) + }, + context={ + 'company': Eval('company'), + }, + depends=['state', + 'production_template_cost_distribution_templates', 'company']) cost_distribution_templates = fields.Function( fields.Many2Many('product.template', - None, None, "Cost Product Templates"), + None, None, "Cost Product Templates", + context={ + 'company': Eval('company'), + }, + depends=['company']), 'on_change_with_cost_distribution_templates') pass_quality = fields.Boolean('Pass Quality') pass_certification = fields.Boolean('Pass Certification') @@ -487,7 +509,7 @@ class Production(metaclass=PoolMeta): if output.product not in products: continue has_product = True - cost = (production_cost * (1 + cdist.percentatge) - + cost = (production_cost * (1 + cdist.percentatge) - production_cost) output_cost += round_price(cost / Decimal(total_output)) diff --git a/quality.py b/quality.py index 4ff4c76..13507f5 100644 --- a/quality.py +++ b/quality.py @@ -71,7 +71,11 @@ class QualitySample(ModelSQL, ModelView): code = fields.Char('Code', select=True, readonly=True) reference = fields.Char('Reference') products = fields.Many2Many('product.product-quality.sample', 'sample', - 'product', 'Products') + 'product', "Products", + context={ + 'company': Eval('company'), + }, + depends=['company']) collection_date = fields.DateTime('Collection Date', required=True) company = fields.Many2One('company.company', 'Company', required=True, select=True) diff --git a/quality.xml b/quality.xml index 027866e..46b46e3 100644 --- a/quality.xml +++ b/quality.xml @@ -13,7 +13,9 @@ - + @@ -94,7 +96,9 @@ - + diff --git a/tests/test_agronomics.py b/tests/test_agronomics.py index 51754b9..761f558 100644 --- a/tests/test_agronomics.py +++ b/tests/test_agronomics.py @@ -7,9 +7,10 @@ from trytond.tests.test_tryton import ModuleTestCase from trytond.tests.test_tryton import suite as test_suite from trytond.tests.test_tryton import doctest_teardown from trytond.tests.test_tryton import doctest_checker +from trytond.modules.company.tests import CompanyTestMixin -class AgronomicsTestCase(ModuleTestCase): +class AgronomicsTestCase(CompanyTestMixin, ModuleTestCase): 'Test Agronomics module' module = 'agronomics'