From 77152f7071e95c6ddf2133f2826ed2e4518fd708 Mon Sep 17 00:00:00 2001 From: twalter-c2c Date: Tue, 27 Aug 2024 16:50:25 +0200 Subject: [PATCH] stock_average_daily_sale: Config adjustment - add from view and company_id stock_average_daily_sale: - add form view for config - add company_id to config - allow editing ABC classification level and make sure the level is unique --- .../demo/stock_average_daily_sale_config.xml | 6 +++ .../models/stock_average_daily_sale.py | 1 + .../models/stock_average_daily_sale_config.py | 27 +++++++----- stock_average_daily_sale/tests/common.py | 3 +- .../tests/test_average_daily_sale.py | 3 +- .../views/stock_average_daily_sale_config.xml | 43 ++++++++++++++++--- 6 files changed, 65 insertions(+), 18 deletions(-) diff --git a/stock_average_daily_sale/demo/stock_average_daily_sale_config.xml b/stock_average_daily_sale/demo/stock_average_daily_sale_config.xml index d48349f6b..0963cea62 100644 --- a/stock_average_daily_sale/demo/stock_average_daily_sale_config.xml +++ b/stock_average_daily_sale/demo/stock_average_daily_sale_config.xml @@ -13,6 +13,8 @@ 0.3 2 1 + + 0.3 2 1 + + 0.3 2 1 + + diff --git a/stock_average_daily_sale/models/stock_average_daily_sale.py b/stock_average_daily_sale/models/stock_average_daily_sale.py index 2bd6eb6e5..144100716 100644 --- a/stock_average_daily_sale/models/stock_average_daily_sale.py +++ b/stock_average_daily_sale/models/stock_average_daily_sale.py @@ -228,6 +228,7 @@ def _create_materialized_view(self): AND sl_dest.usage in ('customer', 'production') AND sm.date BETWEEN cfg.date_from AND cfg.date_to AND sm.state = 'done' + AND sm.warehouse_id = cfg.warehouse_id WINDOW pid AS (PARTITION BY sm.product_id, sm.warehouse_id) ), diff --git a/stock_average_daily_sale/models/stock_average_daily_sale_config.py b/stock_average_daily_sale/models/stock_average_daily_sale_config.py index 056f1012c..281fc3026 100644 --- a/stock_average_daily_sale/models/stock_average_daily_sale_config.py +++ b/stock_average_daily_sale/models/stock_average_daily_sale_config.py @@ -1,7 +1,7 @@ # Copyright 2021 ACSONE SA/NV # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import fields, models +from odoo import _, fields, models from odoo.addons.stock_storage_type_putaway_abc.models.stock_location import ( ABC_SELECTION, @@ -9,17 +9,18 @@ class StockAverageDailySaleConfig(models.Model): - _name = "stock.average.daily.sale.config" _description = "Average daily sales computation parameters" + check_company_auto = True - abc_classification_profile_id = fields.Many2one( - comodel_name="abc.classification.profile", - required=True, - ondelete="cascade", - ) abc_classification_level = fields.Selection( - selection=ABC_SELECTION, required=True, readonly=True + selection=ABC_SELECTION, required=True, default="b" + ) + company_id = fields.Many2one( + string="Company", + comodel_name="res.company", + required=True, + default=lambda self: self.env.company, ) standard_deviation_exclude_factor = fields.Float(required=True, digits=(2, 2)) warehouse_id = fields.Many2one( @@ -30,10 +31,8 @@ class StockAverageDailySaleConfig(models.Model): default=lambda self: self.env["stock.warehouse"].search( [("company_id", "=", self.env.company.id)], limit=1 ), - readonly=True, ) exclude_weekends = fields.Boolean( - string="Exclude Weekends", help="Set to True only if you do not expect any orders/deliveries during " "the weekends. If set to True, stock moves done on weekends won't be " "taken into account to calculate the average daily usage", @@ -53,3 +52,11 @@ class StockAverageDailySaleConfig(models.Model): string="Number of days of quantities in stock", required=True, default=2 ) safety_factor = fields.Float(digits=(2, 2), required=True) + + _sql_constraints = [ + ( + "abc_classification_level_unique", + "UNIQUE(abc_classification_level)", + _("Abc Classification Level must be unique"), + ) + ] diff --git a/stock_average_daily_sale/tests/common.py b/stock_average_daily_sale/tests/common.py index 0cb17286e..0dcb7102d 100644 --- a/stock_average_daily_sale/tests/common.py +++ b/stock_average_daily_sale/tests/common.py @@ -87,12 +87,13 @@ def _create_move(cls, product, origin_location, qty): "product_id": product.id, "name": product.name, "location_id": origin_location.id, + "warehouse_id": origin_location.warehouse_id.id, "location_dest_id": cls.customers.id, "product_uom_qty": qty, "priority": "1", } ) - # TODO: Check why this is necessary - it's in materialzed view query + # TODO: Check why this is necessary - it's in materialized view query move.priority = "1" return move diff --git a/stock_average_daily_sale/tests/test_average_daily_sale.py b/stock_average_daily_sale/tests/test_average_daily_sale.py index 5a2d42f26..8bb672563 100644 --- a/stock_average_daily_sale/tests/test_average_daily_sale.py +++ b/stock_average_daily_sale/tests/test_average_daily_sale.py @@ -189,7 +189,8 @@ def test_average_sale_profile_a(self): def test_view_refreshed(self): self._refresh() with self.assertNoLogs( - "odoo.addons.stock_average_daily_sale.models.stock_average_daily_sale" + "odoo.addons.stock_average_daily_sale.models.stock_average_daily_sale", + level="DEBUG", ): self.env["stock.average.daily.sale"].search_read( [("product_id", "=", self.product_1.id)] diff --git a/stock_average_daily_sale/views/stock_average_daily_sale_config.xml b/stock_average_daily_sale/views/stock_average_daily_sale_config.xml index d3afe4130..2c21b5822 100644 --- a/stock_average_daily_sale/views/stock_average_daily_sale_config.xml +++ b/stock_average_daily_sale/views/stock_average_daily_sale_config.xml @@ -2,13 +2,14 @@ + - stock.average.daily.sale.config.tree (in stock_average_daily_sale) + stock.average.daily.sale.config.tree stock.average.daily.sale.config - + + + @@ -16,24 +17,54 @@ - + + + stock.average.daily.sale.config.form + stock.average.daily.sale.config + +
+ + + + + + + + + + + + + + + + + +
+
+
+ Average daily sales computation parameters + ir.actions.act_window stock.average.daily.sale.config - tree + tree,form + [] {} + Average daily sales computation parameters +