diff --git a/stock_coverage/README.md b/stock_coverage/README.md index 778224d..5082494 100644 --- a/stock_coverage/README.md +++ b/stock_coverage/README.md @@ -1,3 +1,4 @@ +# todo - initializing the computed fields - daily cron - manual trigger diff --git a/stock_coverage/models/product_template.py b/stock_coverage/models/product_template.py index 60be025..951c7ac 100644 --- a/stock_coverage/models/product_template.py +++ b/stock_coverage/models/product_template.py @@ -26,6 +26,8 @@ class ProductTemplate(models.Model): total_consumption = fields.Float( string='Total Consumption', default=0, + compute='_compute_total_consumption', + store=True, readonly=True, digits=(100, 2), ) @@ -39,7 +41,7 @@ class ProductTemplate(models.Model): ) @api.multi - @api.depends('calculation_range') + @api.depends('total_consumption') def _compute_average_daily_consumption(self): for template in self: if template.calculation_range > 0: @@ -51,7 +53,7 @@ class ProductTemplate(models.Model): return True @api.multi - @api.onchange('calculation_range') + @api.depends('calculation_range') def _compute_total_consumption(self): for template in self: products = ( @@ -73,15 +75,14 @@ class ProductTemplate(models.Model): if order_lines: order_lines = order_lines.filtered( - lambda oi: oi.order_id.state in ['done', 'invoiced', 'paid']) # noqa - res = sum(order_lines.mapped('qty')) + lambda ol: ol.order_id.state in ['done', 'invoiced', 'paid']) # noqa + template.total_consumption = sum(order_lines.mapped('qty')) else: - res = 0 - template.total_consumption = res + template.total_consumption = 0 return True @api.multi - @api.depends('calculation_range') + @api.depends('total_consumption') def _compute_estimated_stock_coverage(self): for product_template in self: qty = product_template.qty_available diff --git a/stock_coverage/tests/test_stock_coverage.py b/stock_coverage/tests/test_stock_coverage.py index 43777db..d8696ea 100644 --- a/stock_coverage/tests/test_stock_coverage.py +++ b/stock_coverage/tests/test_stock_coverage.py @@ -58,7 +58,7 @@ class TestProductTemplate(TransactionCase): } return {pid: mock_data for pid in products.ids} - # mock area + # mock area fixme # ProductTemplate._product_available = _product_available # ProductProduct._product_available = _product_available # Order = namedtuple('Order', ['id', 'state']) @@ -92,7 +92,7 @@ class TestProductTemplate(TransactionCase): expected_value = 57.11 self.assertAlmostEqual(computed_value, expected_value) - # def test_compute_estimated_stock_coverage(self): + # def test_compute_estimated_stock_coverage(self): fixme # """Test computed field estimated_stock_coverage""" # ProductTemplate = self.env['product.template'] # product_template = ProductTemplate.browse(self.product_template_id)