diff --git a/mis_builder/models/mis_kpi_data.py b/mis_builder/models/mis_kpi_data.py index f61d4b028..1f9ba18cb 100644 --- a/mis_builder/models/mis_kpi_data.py +++ b/mis_builder/models/mis_kpi_data.py @@ -69,6 +69,10 @@ def _compute_name(self): rec.date_to, ) + @api.model + def _intersect_days(self, item_dt_from, item_dt_to, dt_from, dt_to): + return intersect_days(item_dt_from, item_dt_to, dt_from, dt_to) + @api.model def _query_kpi_data(self, date_from, date_to, base_domain): """Query mis.kpi.data over a time period. @@ -85,7 +89,9 @@ def _query_kpi_data(self, date_from, date_to, base_domain): for item in self.search(domain): item_dt_from = fields.Date.from_string(item.date_from) item_dt_to = fields.Date.from_string(item.date_to) - i_days, item_days = intersect_days(item_dt_from, item_dt_to, dt_from, dt_to) + i_days, item_days = self._intersect_days( + item_dt_from, item_dt_to, dt_from, dt_to + ) if item.kpi_expression_id.kpi_id.accumulation_method == ACC_SUM: # accumulate pro-rata overlap between item and reporting period res[item.kpi_expression_id] += item.amount * i_days / item_days diff --git a/mis_builder/models/prorata_read_group_mixin.py b/mis_builder/models/prorata_read_group_mixin.py index 6d9c36deb..b3b3791ff 100644 --- a/mis_builder/models/prorata_read_group_mixin.py +++ b/mis_builder/models/prorata_read_group_mixin.py @@ -31,6 +31,10 @@ def _search_date(self, operator, value): _("Unsupported operator %s for searching on date") % (operator,) ) + @api.model + def _intersect_days(self, item_dt_from, item_dt_to, dt_from, dt_to): + return intersect_days(item_dt_from, item_dt_to, dt_from, dt_to) + @api.model def read_group( self, domain, flds, groupby, offset=0, limit=None, orderby=False, lazy=True @@ -75,7 +79,7 @@ def read_group( for sum_field in sum_fields: item_dt_from = fields.Date.from_string(item["date_from"]) item_dt_to = fields.Date.from_string(item["date_to"]) - i_days, item_days = intersect_days( + i_days, item_days = self._intersect_days( item_dt_from, item_dt_to, dt_from, dt_to ) res_item[sum_field] += item[sum_field] * i_days / item_days diff --git a/mis_builder/readme/newsfragments/280.misc b/mis_builder/readme/newsfragments/280.misc new file mode 100644 index 000000000..48a58e179 --- /dev/null +++ b/mis_builder/readme/newsfragments/280.misc @@ -0,0 +1,3 @@ +The ``_intersect_date`` model method has been restored on ``mis.kpi.data``, +and added on ``prorata.read_group.mixin`` as a semi-supported way to override +the pro-rata temporis budget reporting mechanism.