From fdfbe70e34ff0c8ab6aa4b36e1a029f8df2c8c33 Mon Sep 17 00:00:00 2001 From: daniquilez <dani.quilez@gmail.com> Date: Fri, 7 Mar 2025 16:17:53 +0100 Subject: [PATCH] =?UTF-8?q?[IMP]=20=E2=9C=A8=20Setup=20better=20defaults?= =?UTF-8?q?=20for=20action=20wizard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/contract.py | 62 +++++++++++++------ 1 file changed, 43 insertions(+), 19 deletions(-) diff --git a/energy_communities_service_invoicing/models/contract.py b/energy_communities_service_invoicing/models/contract.py index 0d949cfe0..78a27de59 100644 --- a/energy_communities_service_invoicing/models/contract.py +++ b/energy_communities_service_invoicing/models/contract.py @@ -107,9 +107,13 @@ class ContractContract(models.Model): def _constrain_unique_contract(self): for record in self: if record.community_company_id: - existing_contract = record._get_existing_same_open_platform_pack_contract() + existing_contract = ( + record._get_existing_same_open_platform_pack_contract() + ) if existing_contract: - raise_existing_same_open_platform_pack_contract_error(existing_contract) + raise_existing_same_open_platform_pack_contract_error( + existing_contract + ) def _compute_received_invoices_count(self): for record in self: @@ -167,35 +171,51 @@ class ContractContract(models.Model): return moves def action_activate_contract(self): - return self._action_contract("activate") + return self._action_contract("activate", {"execution_date": self.date_start}) def action_close_contract(self): - return self._action_contract("close") + return self._action_contract( + "close", + { + "execution_date": self.last_date_invoiced + if self.last_date_invoiced + else self.date_start + }, + ) def action_modify_contract(self): - return self._action_contract("modification") + return self._action_contract( + "modification", + { + "execution_date": self.last_date_invoiced + if self.last_date_invoiced + else self.date_start + }, + ) def action_reopen_contract(self): return self._action_contract( - "reopen", self.pack_id, self.pricelist_id, self.payment_mode_id + "reopen", + { + "execution_date": self.date_end, + "pack_id": self.pack_id.id if self.pack_id else False, + "pricelist_id": self.pricelist_id.id if self.pricelist_id else False, + "payment_mode_id": self.payment_mode_id.id + if self.payment_mode_id + else False, + }, ) - def _action_contract( - self, action, pack_id=False, pricelist_id=False, payment_mode_id=False - ): + def _action_contract(self, action, wizard_defaults_extra): self.ensure_one() - create_dict = { + # wizard params + wizard_defaults = { "service_invoicing_id": self.id, "executed_action": action, "discount": self.discount, - } - if pack_id: - create_dict["pack_id"] = pack_id.id - if pricelist_id: - create_dict["pricelist_id"] = pricelist_id.id - if payment_mode_id: - create_dict["payment_mode_id"] = payment_mode_id.id - wizard = self.env["service.invoicing.action.wizard"].create(create_dict) + } | wizard_defaults_extra + # wizard creation and display + wizard = self.env["service.invoicing.action.wizard"].create(wizard_defaults) return { "type": "ir.actions.act_window", "name": _("Executing: {}").format(action), @@ -261,7 +281,11 @@ class ContractContract(models.Model): def _get_existing_same_open_platform_pack_contract(self): return get_existing_open_pack_contract( - self.env, self.partner_id, "platform_pack", contract_id=self, custom_query=[("community_company_id", "=", self.community_company_id.id)] + self.env, + self.partner_id, + "platform_pack", + contract_id=self, + custom_query=[("community_company_id", "=", self.community_company_id.id)], ) def get_active_monitoring_members(self): -- GitLab