From 5062dd6e6e6b7ed17ba1e449910b08a51de8b1da Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Fri, 25 Feb 2022 11:44:34 +0100 Subject: [PATCH 1/4] contract: Don't update recurring_next_date as computed --- contract/models/contract_line.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/contract/models/contract_line.py b/contract/models/contract_line.py index 3b10a1c26..37e08088b 100644 --- a/contract/models/contract_line.py +++ b/contract/models/contract_line.py @@ -607,17 +607,8 @@ class ContractLine(models.Model): def _update_recurring_next_date(self): for rec in self: last_date_invoiced = rec.next_period_date_end - recurring_next_date = rec.get_next_invoice_date( - last_date_invoiced + relativedelta(days=1), - rec.recurring_invoicing_type, - rec.recurring_invoicing_offset, - rec.recurring_rule_type, - rec.recurring_interval, - max_date_end=rec.date_end, - ) rec.write( { - "recurring_next_date": recurring_next_date, "last_date_invoiced": last_date_invoiced, } ) From 730b83246650dfc9c3d1c61263c27e076019b1d1 Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Mon, 7 Mar 2022 13:36:44 +0100 Subject: [PATCH 2/4] contract: Compute recurring_next_date for False values too --- contract/models/contract_recurrency_mixin.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/contract/models/contract_recurrency_mixin.py b/contract/models/contract_recurrency_mixin.py index ac6e4d71b..f06243924 100644 --- a/contract/models/contract_recurrency_mixin.py +++ b/contract/models/contract_recurrency_mixin.py @@ -93,7 +93,8 @@ class ContractRecurrencyMixin(models.AbstractModel): @api.depends("next_period_date_start") def _compute_recurring_next_date(self): - for rec in self.filtered("next_period_date_start"): + records_with_date_start = self.filtered("next_period_date_start") + for rec in records_with_date_start: rec.recurring_next_date = self.get_next_invoice_date( rec.next_period_date_start, rec.recurring_invoicing_type, @@ -102,6 +103,11 @@ class ContractRecurrencyMixin(models.AbstractModel): rec.recurring_interval, max_date_end=rec.date_end, ) + (self - records_with_date_start).update( + { + "recurring_next_date": False, + } + ) @api.depends("last_date_invoiced", "date_start", "date_end") def _compute_next_period_date_start(self): From 7736b823ff5654a37625c4db944ef7ba2f546a9c Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Mon, 7 Mar 2022 15:12:53 +0100 Subject: [PATCH 3/4] contract: simplify compute as False values are already taken into account In get_next_invoice_date, False values are already taken into account, so, simplifying compute_recurring_next_date function. --- contract/models/contract_recurrency_mixin.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/contract/models/contract_recurrency_mixin.py b/contract/models/contract_recurrency_mixin.py index f06243924..20dc0c507 100644 --- a/contract/models/contract_recurrency_mixin.py +++ b/contract/models/contract_recurrency_mixin.py @@ -93,8 +93,7 @@ class ContractRecurrencyMixin(models.AbstractModel): @api.depends("next_period_date_start") def _compute_recurring_next_date(self): - records_with_date_start = self.filtered("next_period_date_start") - for rec in records_with_date_start: + for rec in self: rec.recurring_next_date = self.get_next_invoice_date( rec.next_period_date_start, rec.recurring_invoicing_type, @@ -103,11 +102,6 @@ class ContractRecurrencyMixin(models.AbstractModel): rec.recurring_interval, max_date_end=rec.date_end, ) - (self - records_with_date_start).update( - { - "recurring_next_date": False, - } - ) @api.depends("last_date_invoiced", "date_start", "date_end") def _compute_next_period_date_start(self): From d0b353a917b03e6d9e11b09e23b34ae95457829c Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Tue, 8 Mar 2022 17:43:51 +0100 Subject: [PATCH 4/4] contract: Add comment to remind updating method in next version --- contract/models/contract_line.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contract/models/contract_line.py b/contract/models/contract_line.py index 37e08088b..7c6a2df61 100644 --- a/contract/models/contract_line.py +++ b/contract/models/contract_line.py @@ -605,6 +605,8 @@ class ContractLine(models.Model): return name def _update_recurring_next_date(self): + # FIXME: Change method name according to real updated field + # e.g.: _update_last_date_invoiced() for rec in self: last_date_invoiced = rec.next_period_date_end rec.write(