Skip to content
Extraits de code Groupes Projets
Valider eb5aeb43 rédigé par Juliana's avatar Juliana
Parcourir les fichiers

[UPD]Add control existence data before call API

parent fe965edd
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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
],
......
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
......@@ -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
......@@ -76,6 +76,44 @@ 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"))
# 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
)
......
# 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
# ------------------------------------------------------
<?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>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter