Skip to content
Extraits de code Groupes Projets
Valider b40d0c87 rédigé par Julien - Le Filament's avatar Julien - Le Filament Validation de Rémi - Le Filament
Parcourir les fichiers

[UPD] add cron to ger perimeter

parent 47e7b1e7
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -6,7 +6,9 @@
"license": "AGPL-3",
"depends": ["api_enedis_acc", "oacc"],
"data": [
# datas
# data
"data/mail_template_data.xml",
"data/cron_data.xml",
# views
"views/acc_operation_views.xml",
# views menu
......
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.cron" forcecreate="True" id="ir_cron_get_perimeter">
<field name="name">Enedis recuperation perimetre</field>
<field name="model_id" ref="oacc.model_acc_operation" />
<field name="state">code</field>
<field name="code">model._cron_get_perimeter()</field>
<field name="user_id" ref="base.user_root" />
<field name="interval_number">30</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False" />
<field name="active" eval="True" />
</record>
</data>
</odoo>
<?xml version="1.0" ?>
<!-- Copyright 2021- Le Filament (https://le-filament.com)
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<data noupdate="0">
<!--Email template -->
<record id="email_template_new_prm" model="mail.template">
<field name="name">Paramètres: Nouveau PRM ou pèriode</field>
<field name="model_id" ref="oacc.model_acc_operation" />
<field name="email_from">"Elocoop" &lt;bonjour@elo.coop></field>
<field name="email_to">"Elocoop" &lt;bonjour@elo.coop></field>
<field name="reply_to">"Elocoop" &lt;bonjour@elo.coop></field>
<field name="subject">Action requise - entrées/sorties de PRM de l’opération {{object.name}}</field>
<field name="description">Envoi notification nouveau PRM ou nouvelle pèriode détecté.</field>
<field name="body_html" type="html">
<div style="margin: 0px; padding: 0px;">
Bonjour,<br/>
Vous recevez ce mail car vous êtes administrateur de l’opération d’autoconsommation collective : <t t-out="object.name">operation</t> (<t t-out="object.descritpion">oacc</t>)<br/>
D’après les données Enedis, des nouveaux PRM ont été ajoutés et/ou retirés de l’opération ou ont changé de propriétaire.<br/>
Numéros des PRM concernées :<br/>
<t t-out="object.perimeter_impacted_prm">operation</t><br/>
Si des PRM sont ajoutés, afin qu’ils soient bien pris en compte dans Elocoop, nous vous remercions de renseigner les informations des participants liés à ces PRM dans votre espace d’administration Elocoop, de cette manière :<br/>
<ul>
<li>Si ce n’est pas encore fait, créer le participant dans l’onglet Participants</li>
<li>Lier le nouveau PRM à ce participant dans l’onglet Points de soutirage ou Points d’injection</li>
<li>Indiquer les prix de vente pour ce PRM si nécessaire</li>
<li>Donner accès au portail Elocoop au participant si nécessaire</li>
</ul>
Nous restons disponibles pour toute question à l’adresse bonjour@elo.coop.<br/>
Bonne journée,<br/>
Le service client Elocoop<br/>
</div>
</field>
<field name="lang">{{ object.partner_id.lang }}</field>
<field name="auto_delete" eval="False" />
</record>
<record id="email_template_api_error" model="mail.template">
<field name="name">Paramètres: Erreur API Enedis</field>
<field name="model_id" ref="oacc.model_acc_operation" />
<field name="email_from">"Elocoop" &lt;bonjour@elo.coop></field>
<field name="email_to">"Elocoop" &lt;bonjour@elo.coop></field>
<field name="reply_to">"Elocoop" &lt;bonjour@elo.coop></field>
<field name="subject">Action requise - erreur d’API Enedis pour l’opération {{object.name}}</field>
<field name="description">Envoi notification suite à une erreur api enedis.</field>
<field name="body_html" type="html">
<div style="margin: 0px; padding: 0px;">
Bonjour,<br/>
Vous recevez ce mail car vous êtes administrateur de l’opération d’autoconsommation collective: <t t-out="object.name">operation</t> (<t t-out="object.descritpion">oacc</t>)<br/>.
Lors de la mise à jour automatique du périmètre et des données Enedis, l’API a renvoyé l’erreur suivante :<br/>
<t t-out="object.perimeter_api_log">operation</t><br/>
Nous vous remercions de vérifier que :<br/>
<ul>
<li>Vos identifiants Enedis sont corrects dans l’onglet Autres Informations de votre espace d’administration Elocoop</li>
<li>L’identifiant <t t-out="object.name">operation</t> est correct sur la page de votre opération.</li>
<li>Nous informer en retour de ce mail lorsque cela est fait afin que nous vérifions la bonne configuration de l’API</li>
</ul>
Nous restons disponibles pour toute question à l’adresse bonjour@elo.coop.<br/>
Bonne journée,<br/>
Le service client Elocoop<br/>
</div>
</field>
<field name="lang">{{ object.partner_id.lang }}</field>
<field name="auto_delete" eval="False" />
</record>
</data>
</odoo>
......@@ -13,6 +13,8 @@ class AccOperation(models.Model):
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
perimeter_api_log = fields.Text()
perimeter_impacted_prm = fields.Text()
# ------------------------------------------------------
# SQL Constraints
......@@ -75,10 +77,22 @@ class AccOperation(models.Model):
"flags": {"initial_mode": "view"},
}
def _cron_get_perimeter(self):
self.ensure_one()
self.perimeter_api_log = self.perimeter(send_mail=True)
def send_new_prm_email(self):
template_id = self.env.ref("oacc.email_template_new_prm")
template_id.send_mail(self.id)
def send_api_error_mail(self):
template_id = self.env.ref("oacc.email_template_api_error")
template_id.send_mail(self.id)
# ------------------------------------------------------
# API functions
# ------------------------------------------------------
def perimeter(self):
def perimeter(self, send_mail=False):
"""
Récupère les données de l'opération concernant le périmètre:
- liste des PRM
......@@ -95,7 +109,14 @@ class AccOperation(models.Model):
+ "</h1>"
)
message += "<p><strong>Appel API ...<br/>"
try:
perimeter_data = self._get_perimeter()
except ValidationError as e:
if send_mail:
self.perimeter_api_log = str(e)
self.send_api_error_mail()
raise e from e
message += "<p><strong>Appel API terminé<br/>" "Traitement des données ...<br/>"
usage_points = perimeter_data.get("usage_points")
......@@ -165,6 +186,8 @@ class AccOperation(models.Model):
"end_date": usage_point_end,
}
)
self.perimeter_impacted_prm += f"{counter_id.name}<br/>"
message += (
"période inexistante avec les mêmes dates : création<br/>"
)
......@@ -195,6 +218,7 @@ class AccOperation(models.Model):
"name": usage_point["usage_point_id"],
}
)
self.perimeter_impacted_prm += f"{counter_id.name}<br/>"
self.env["acc.counter.period"].create(
{
"acc_counter_id": counter_id.id,
......@@ -237,6 +261,8 @@ class AccOperation(models.Model):
message += (
"<h1>Fin appel API Périmètre: " + str(fields.Datetime.now()) + "</h1>"
)
if send_mail:
self.send_new_prm_email()
return message
# ------------------------------------------------------
......
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