From 56a02f0f7a554f21c5583b6657e4bc57f51a742b Mon Sep 17 00:00:00 2001
From: Daniil Digtyar Vasilieva <daniildigtyar@gmail.com>
Date: Wed, 1 Nov 2023 16:21:08 +0100
Subject: [PATCH] [IMP] energy_selfconsumption: constraint of contract lines
 with the same period

---
 .../wizards/invoicing_wizard.py               | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/energy_selfconsumption/wizards/invoicing_wizard.py b/energy_selfconsumption/wizards/invoicing_wizard.py
index 2cca3f75a..d39121f78 100644
--- a/energy_selfconsumption/wizards/invoicing_wizard.py
+++ b/energy_selfconsumption/wizards/invoicing_wizard.py
@@ -1,4 +1,5 @@
-from odoo import _, fields, models
+from odoo import _, api, fields, models
+from odoo.exceptions import ValidationError
 
 
 class InvoicingWizard(models.TransientModel):
@@ -7,6 +8,22 @@ class InvoicingWizard(models.TransientModel):
     power = fields.Float(string="Total Energy Generated (kWh)")
     contract_ids = fields.Many2many("contract.contract")
 
+    @api.constrains("contract_ids")
+    def constraint_contract_ids(self):
+        for record in self:
+            contract_list = record.contract_ids
+            all_equal_period = all(
+                element.next_period_date_start
+                == contract_list[0].next_period_date_start
+                and element.next_period_date_end
+                == contract_list[0].next_period_date_end
+                for element in contract_list
+            )
+            if not all_equal_period:
+                raise ValidationError(
+                    _("Select only contracts with the same period of invoicing.")
+                )
+
     def generate_invoices(self):
         return self.with_context(
             {"energy_delivered": self.power}
-- 
GitLab