From c5e1c9026cd3efd6bbf18d435e2918f61edc5184 Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Mon, 8 Aug 2022 10:41:48 +0200 Subject: [PATCH] [IMP] contract_price_revision: Improve compatibility with contract base module Values for new line should come from _prepare_value_for_plan_successor function adding the new price. --- contract_price_revision/models/contract_line.py | 13 +++++++++++++ .../wizards/contract_price_revision.py | 17 ++++++++--------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/contract_price_revision/models/contract_line.py b/contract_price_revision/models/contract_line.py index 07f712629..2f9a3d791 100644 --- a/contract_price_revision/models/contract_line.py +++ b/contract_price_revision/models/contract_line.py @@ -47,3 +47,16 @@ class ContractLine(models.Model): ) * 100 else: line.variation_percent = 0.0 + + def _prepare_value_for_plan_successor_price( + self, date_start, date_end, is_auto_renew, price, recurring_next_date=False + ): + """ + Override contract function to prepare values for new contract line + adding the new price as parameter + """ + res = super()._prepare_value_for_plan_successor( + date_start, date_end, is_auto_renew, recurring_next_date=recurring_next_date + ) + res.update({"price_unit": price}) + return res diff --git a/contract_price_revision/wizards/contract_price_revision.py b/contract_price_revision/wizards/contract_price_revision.py index ac86dba90..933628599 100644 --- a/contract_price_revision/wizards/contract_price_revision.py +++ b/contract_price_revision/wizards/contract_price_revision.py @@ -46,13 +46,13 @@ class ContractPriceRevisionWizard(models.TransientModel): def _get_new_line_value(self, line): self.ensure_one() - return { - "date_start": self.date_start, - "last_date_invoiced": False, - "date_end": self.date_end, - "predecessor_contract_line_id": line.id, - "price_unit": self._get_new_price(line), - } + return line._prepare_value_for_plan_successor_price( + self.date_start, + self.date_end, + line.is_auto_renew, + self._get_new_price(line), + False, + ) def _get_old_line_date_end(self, line): return self.date_start - relativedelta(days=1) @@ -63,8 +63,7 @@ class ContractPriceRevisionWizard(models.TransientModel): for line in self._get_contract_lines_to_revise(contracts): date_end = self._get_old_line_date_end(line) line.stop(date_end) - new_line = line.copy() - new_line.update(self._get_new_line_value(line)) + new_line = line.copy(self._get_new_line_value(line)) line.update({"successor_contract_line_id": new_line.id}) action = self.env["ir.actions.act_window"].for_xml_id( "contract", "action_customer_contract"