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