diff --git a/__manifest__.py b/__manifest__.py index ae22c7a38ec411e17471cb491b964f5715a4063c..8f6511c02a79fcce1b559b09470d483b631e81f9 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -11,6 +11,7 @@ # datas # views "wizards/acc_operation_wizard_views.xml", + "wizards/acc_operation_wizard_confirm_views.xml", "views/acc_operation_views.xml", # views menu ], diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index 8dfe7ddba803a0ace1cd62fe854300e1012eb97a..a00115af21e0e9f86a1a7d3a7585a4ad6e60b0b2 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -1,3 +1,5 @@ id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink "access_acc_operation_wizard_group_partner_manager","acc_operation_wizard group_partner_manager","model_acc_operation_wizard","base.group_partner_manager",1,1,1,1 "access_acc_operation_wizard_group_user","acc_operation_wizard group_user","model_acc_operation_wizard","base.group_user",1,0,0,0 +"access_acc_operation_wizard_confirm_group_partner_manager","acc_operation_wizard_confirm group_partner_manager","model_acc_operation_wizard_confirm","base.group_partner_manager",1,1,1,1 +"access_acc_operation_wizard_confirm_group_user","acc_operation_wizard_confirm group_user","model_acc_operation_wizard_confirm","base.group_user",1,0,0,0 diff --git a/wizards/__init__.py b/wizards/__init__.py index ddbfb3b9f6d01d7faaea73339637505722e74e49..c31866250efbc83b981f0b0a7b6e58f2e8c2c9c8 100644 --- a/wizards/__init__.py +++ b/wizards/__init__.py @@ -2,3 +2,4 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import acc_operation_wizard +from . import acc_operation_wizard_confirm diff --git a/wizards/acc_operation_wizard.py b/wizards/acc_operation_wizard.py index 01a2345c15b3e3225088a378a42d2c2e389790cf..31b7de23121acbb59c632047d583b884f5ddd36b 100644 --- a/wizards/acc_operation_wizard.py +++ b/wizards/acc_operation_wizard.py @@ -76,10 +76,48 @@ class AccOperationWizard(models.TransientModel): if self.date_end <= self.date_start: raise UserError(_("La date de fin doit être supérieure à la date de début")) - self.operation_id.curves( - self.date_start, self.date_end, self.prm_cons_ids, self.prm_prod_ids - ) - return {"type": "ir.actions.act_window_close"} + # Vérification si des données existent déjà + # pour cet intervalle de date + domain_all = [ + ("date_slot", ">=", self.date_start), + ("date_slot", "<=", self.date_end), + ("acc_operation_id", "=", self.operation_id.id) + ] + if self.prm_cons_ids and self.prm_prod_ids: + domain_all += ["|", ("acc_counter_id", "in", self.prm_cons_ids.ids), + ("acc_counter_id", "in", self.prm_prod_ids.ids)] + elif self.prm_cons_ids: + domain_all += [("acc_counter_id", "in", self.prm_cons_ids.ids)] + elif self.prm_prod_ids: + domain_all += [("acc_counter_id", "in", self.prm_prod_ids.ids)] + + rec_ids = self.env["acc.enedis.cdc"].search(domain_all) + if rec_ids: + wizard = self.env["acc.operation.wizard.confirm"].create( + { + "operation_id": self.operation_id.id, + "date_start": self.date_start, + "date_end": self.date_end, + "prm_cons_ids": self.prm_cons_ids, + "prm_prod_ids": self.prm_prod_ids, + "rec_ids": rec_ids, + "mess": _("Des données existent déjà pour cette période. Etes-vous" + " sûr de vouloir écraser les données existantes?") + } + ) + return { + "name": "Confirmation récupération des données", + "type": "ir.actions.act_window", + "view_mode": "form", + "res_model": "acc.operation.wizard.confirm", + "res_id": wizard.id, + "target": "new", + } + else: + self.operation_id.curves( + self.date_start, self.date_end, self.prm_cons_ids, self.prm_prod_ids + ) + return {"type": "ir.actions.act_window_close"} # def get_curves_all(self): # context = dict(self._context or {}) diff --git a/wizards/acc_operation_wizard_confirm.py b/wizards/acc_operation_wizard_confirm.py new file mode 100644 index 0000000000000000000000000000000000000000..2b9c813d0f6c58c4fb5fec172a26725271411961 --- /dev/null +++ b/wizards/acc_operation_wizard_confirm.py @@ -0,0 +1,73 @@ +# Copyright 2023 Le Filament (<http://www.le-filament.com>) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import _, fields, models +from odoo.exceptions import UserError + + +class AccOperationWizardConfirm(models.TransientModel): + _name = "acc.operation.wizard.confirm" + _description = "Confirmation récupération des données vie API" + + # ------------------------------------------------------ + # Fields declaration + # ------------------------------------------------------ + operation_id = fields.Many2one( + "acc.operation") + date_start = fields.Date("Date de début") + date_end = fields.Date("Date de fin") + prm_cons_ids = fields.Many2many( + "acc.counter", + relation="acc_counter_cons_confirm_rel", + column1="cons_id", + column2="op_id", + domain=[("is_delivery", "=", True)], + string="PRM de soutirage", + ) + prm_prod_ids = fields.Many2many( + "acc.counter", + relation="acc_counter_prod_confirm_rel", + column1="prod_id", + column2="op_id", + domain=[("is_injection", "=", True)], + string="PRM d'injection", + ) + rec_ids = fields.Many2many("acc.enedis.cdc", string="Records") + mess = fields.Text( + string="Message", + ) + # ------------------------------------------------------ + # SQL Constraints + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Default methods + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Computed fields / Search Fields + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Onchange / Constraints + # ------------------------------------------------------ + + # ------------------------------------------------------ + # CRUD methods (ORM overrides) + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Actions + # ------------------------------------------------------ + def get_valid(self): + # Suppression des enregistrements existants + self.rec_ids.unlink() + + # Appel API + self.operation_id.curves( + self.date_start, self.date_end, self.prm_cons_ids, self.prm_prod_ids + ) + return {"type": "ir.actions.act_window_close"} + # ------------------------------------------------------ + # Business methods + # ------------------------------------------------------ diff --git a/wizards/acc_operation_wizard_confirm_views.xml b/wizards/acc_operation_wizard_confirm_views.xml new file mode 100644 index 0000000000000000000000000000000000000000..dc84e095a2ff2326176423559930bafebee495ca --- /dev/null +++ b/wizards/acc_operation_wizard_confirm_views.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<odoo> + <!-- WIZARD FORM --> + <record id="acc_operation_wizard_confirm_view_form" model="ir.ui.view"> + <field name="name">acc.operation.wizard.confirm.form</field> + <field name="model">acc.operation.wizard.confirm</field> + <field name="arch" type="xml"> + <form> + <div> + <field + class="o_field_header" + name="mess" + readonly="1" + /> + </div> + <group> + <field name="operation_id" invisible="1" /> + <field name="prm_cons_ids" invisible="1"/> + <field name="prm_prod_ids" invisible="1"/> + <field name="date_start" invisible="1"/> + <field name="date_end" invisible="1"/> + <field name="rec_ids" invisible="1"/> + </group> + <footer> + <button + class="btn btn-sm btn-primary" + name="get_valid" + string="Valider" + type="object" + /> + <button + class="btn btn-sm btn-default" + special="cancel" + string="Annuler" + /> + </footer> + </form> + </field> + </record> + +</odoo>