From 51fb0728d950efe5525868983955e39d3a4c4f83 Mon Sep 17 00:00:00 2001
From: Emanuel Buzey <buzeyemanuel@gmail.com>
Date: Wed, 25 Oct 2023 22:44:15 +0200
Subject: [PATCH] [FIX] energy_selfconsumption: update contract fields with
 _onchange_contract_template_id

---
 .../wizards/contract_generation_wizard.py     | 37 +++----------------
 .../wizards/define_invoicing_mode_wizard.py   |  1 +
 2 files changed, 6 insertions(+), 32 deletions(-)

diff --git a/energy_selfconsumption/wizards/contract_generation_wizard.py b/energy_selfconsumption/wizards/contract_generation_wizard.py
index 10204acbf..bb8933a70 100644
--- a/energy_selfconsumption/wizards/contract_generation_wizard.py
+++ b/energy_selfconsumption/wizards/contract_generation_wizard.py
@@ -48,31 +48,7 @@ class ContractGenerationWizard(models.TransientModel):
 
         # Create contracts
         for supply_point_assignation in distribution_id.supply_point_assignation_ids:
-            contract_lines = [
-                (
-                    0,
-                    0,
-                    {
-                        "product_id": product_id.id,
-                        "automatic_price": True,
-                        "company_id": self.env.company.id,
-                        "qty_type": "variable",
-                        "qty_formula_id": formula_contract_id.id,
-                        "name": _(
-                            """CUPS: %s
-                        Owner: %s
-                        Invoicing period: #START# - #END#"""
-                        )
-                        % (
-                            supply_point_assignation.supply_point_id.code,
-                            supply_point_assignation.supply_point_id.owner_id.display_name,
-                        ),
-                        "supply_point_assignation_id": supply_point_assignation.id,
-                    },
-                )
-            ]
-
-            self.env["contract.contract"].create(
+            contract = self.env["contract.contract"].create(
                 {
                     "name": _("Contract - %s - %s")
                     % (
@@ -80,18 +56,15 @@ class ContractGenerationWizard(models.TransientModel):
                         supply_point_assignation.supply_point_id.partner_id.name,
                     ),
                     "partner_id": supply_point_assignation.supply_point_id.partner_id.id,
-                    "invoice_partner_id": supply_point_assignation.supply_point_id.partner_id.id,
+                    "journal_id": journal_id.id,
+                    "recurring_interval": self.selfconsumption_id.product_id.contract_template_id.recurring_interval,
+                    "recurring_rule_type": self.selfconsumption_id.product_id.contract_template_id.recurring_rule_type,
                     "recurring_invoicing_type": "post-paid",
                     "date_start": fields.date.today(),
-                    "company_id": self.env.company.id,
-                    "contract_line_ids": contract_lines,
-                    "project_id": self.selfconsumption_id.project_id.id,
                     "contract_template_id": self.selfconsumption_id.product_id.contract_template_id.id,
-                    "recurring_interval": self.selfconsumption_id.product_id.contract_template_id.recurring_interval,
-                    "recurring_rule_type": self.selfconsumption_id.product_id.contract_template_id.recurring_rule_type,
                 }
             )
-
+            contract._onchange_contract_template_id()
         # Update selfconsumption and distribution_table state
         self.selfconsumption_id.write({"state": "active"})
         self.selfconsumption_id.distribution_table_state("process", "active")
diff --git a/energy_selfconsumption/wizards/define_invoicing_mode_wizard.py b/energy_selfconsumption/wizards/define_invoicing_mode_wizard.py
index 93bbe2a1a..b6e87f368 100644
--- a/energy_selfconsumption/wizards/define_invoicing_mode_wizard.py
+++ b/energy_selfconsumption/wizards/define_invoicing_mode_wizard.py
@@ -79,6 +79,7 @@ class ContractGenerationWizard(models.TransientModel):
             "contract_line_ids": contract_line,
             "recurring_interval": self.recurrence_interval,
             "recurring_rule_type": self.recurring_rule_type,
+            "recurring_invoicing_type": "post-paid",
         }
 
     def save_data_to_selfconsumption(self):
-- 
GitLab