From 7b8374047fd9c0bf5559a6e40afef2c75c166161 Mon Sep 17 00:00:00 2001 From: ThiagoMForgeFlow Date: Fri, 19 Apr 2024 12:19:50 +0200 Subject: [PATCH] [IMP] ddmrp_report_part_flow_index: change the way flow index is assigned to buffers --- .../models/ddmrp_flow_index_group.py | 4 ++ .../models/stock_buffer.py | 37 ++++++++++++++++++- .../views/ddmrp_flow_index_group_views.xml | 6 +++ .../views/stock_buffer_view.xml | 4 +- 4 files changed, 48 insertions(+), 3 deletions(-) diff --git a/ddmrp_report_part_flow_index/models/ddmrp_flow_index_group.py b/ddmrp_report_part_flow_index/models/ddmrp_flow_index_group.py index 0e913c11f..93e1ced60 100644 --- a/ddmrp_report_part_flow_index/models/ddmrp_flow_index_group.py +++ b/ddmrp_report_part_flow_index/models/ddmrp_flow_index_group.py @@ -6,10 +6,14 @@ class DdmrpFlowIndexGroup(models.Model): _name = "ddmrp.flow.index.group" + _order = "sequence, id" name = fields.Char(required=True) summary = fields.Text() active = fields.Boolean(default=True) + lower_range = fields.Float(help="Lower range used to assign in stock buffer") + upper_range = fields.Float(help="Upper range used to assign in stock buffer") + sequence = fields.Integer(required=True) def toggle_active(self): for record in self: diff --git a/ddmrp_report_part_flow_index/models/stock_buffer.py b/ddmrp_report_part_flow_index/models/stock_buffer.py index a4ce4b54e..aa4384822 100644 --- a/ddmrp_report_part_flow_index/models/stock_buffer.py +++ b/ddmrp_report_part_flow_index/models/stock_buffer.py @@ -8,5 +8,40 @@ class StockBuffer(models.Model): _inherit = "stock.buffer" flow_index_group_id = fields.Many2one( - "ddmrp.flow.index.group", string="Flow Index Group" + "ddmrp.flow.index.group", string="Flow Index Group", readonly=True ) + + def _calc_flow_index_group_id(self): + flow_index_reports = self.env["report.ddmrp.part.plan.flow.index"].read_group( + domain=[("buffer_id", "in", self.ids)], + fields=["order_frequency_group_count"], + groupby=["buffer_id"], + ) + flow_index_groups = self.env["ddmrp.flow.index.group"].search([]) + for rec in self: + flow_index_report = list( + filter(lambda x: x["buffer_id"][0] == rec.id, flow_index_reports) + ) + group_count = flow_index_report[0]["order_frequency_group_count"] + for index_group in flow_index_groups: + if index_group.upper_range and index_group.lower_range: + if ( + index_group.upper_range + <= group_count + <= index_group.lower_range + ): + rec.flow_index_group_id = index_group + return + elif index_group.upper_range: + if index_group.upper_range <= group_count: + rec.flow_index_group_id = index_group + return + elif index_group.lower_range: + if group_count <= index_group.lower_range: + rec.flow_index_group_id = index_group + return + + def cron_actions(self, only_nfp=False): + res = super().cron_actions(only_nfp=only_nfp) + self._calc_flow_index_group_id() + return res diff --git a/ddmrp_report_part_flow_index/views/ddmrp_flow_index_group_views.xml b/ddmrp_report_part_flow_index/views/ddmrp_flow_index_group_views.xml index 458ac6e0f..b5b7d7e37 100644 --- a/ddmrp_report_part_flow_index/views/ddmrp_flow_index_group_views.xml +++ b/ddmrp_report_part_flow_index/views/ddmrp_flow_index_group_views.xml @@ -9,6 +9,9 @@ + + + @@ -29,6 +32,9 @@ + + + diff --git a/ddmrp_report_part_flow_index/views/stock_buffer_view.xml b/ddmrp_report_part_flow_index/views/stock_buffer_view.xml index 5a074c2dd..b50fb13ac 100644 --- a/ddmrp_report_part_flow_index/views/stock_buffer_view.xml +++ b/ddmrp_report_part_flow_index/views/stock_buffer_view.xml @@ -8,9 +8,9 @@ stock.buffer - + - +