Skip to content
Extraits de code Groupes Projets
Valider 473fe6fa rédigé par jordan's avatar jordan
Parcourir les fichiers

[add] prepare mail reminder for cotiz with cron

parent 34ec08a3
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -15,7 +15,9 @@ ...@@ -15,7 +15,9 @@
"data": [ "data": [
"security/security_rules.xml", "security/security_rules.xml",
"security/ir.model.access.csv", "security/ir.model.access.csv",
"datas/cron.xml",
"datas/mail_data.xml", "datas/mail_data.xml",
"datas/mail_reminder_data.xml",
"datas/ir_sequence_data.xml", "datas/ir_sequence_data.xml",
"wizard/scop_cotisation_cg_regul_wizard.xml", "wizard/scop_cotisation_cg_regul_wizard.xml",
"report/report_scop_bordereau.xml", "report/report_scop_bordereau.xml",
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2021 Le Filament (<https://www.le-filament.com>)
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). -->
<odoo>
<data noupdate="1">
<record id="ir_cron_rappels_cotisations" model="ir.cron">
<field name="name">CG Scop - Envois des rappels d'échéance de cotisations</field>
<field name="active" eval="False"/>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="nextcall">2021-12-01 12:30:00</field>
<field name="model_id" ref="model_scop_bordereau"/>
<field name="state">code</field>
<field name="code">model.send_reminder_cotiz()</field>
</record>
</data>
</odoo>
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="0">
<!-- Template and notification section -->
<record id="email_template_reminder_cotisation_cg" model="mail.template">
<field name="name">Cotisation CG SCOP : Rappel date d’échéance de l’appel</field>
<field name="model_id" ref="cgscop_cotisation_cg.model_scop_bordereau"/>
<field name="email_from">${object.env.user.email_formatted |safe}</field>
<field name="partner_to">${object.get_recipients()}</field>
<field name="subject">Cotisation CG SCOP ${object.year}: Rappel date d’échéance de l’appel</field>
<field name="body_html" type="html">
<div style="margin: 0px; padding: 0px;">
<p style="margin: 0px; padding: 0px; font-size: 13px;">
<p>Cher(e) Adhérent(e),</p>
<p>Comme vous avez probablement pu le constater, notre mouvement a engagé depuis début janvier 2021 un vaste programme de digitalisation, incluant notamment les appels de cotisations.</p>
<p>Nous souhaitons vous préciser et attirer votre attention sur quelques évolutions :
<ul>
<li>
Les modalités d’appels de vos cotisations ont été modifiées; vous ne recevez dorénavant <strong>qu’un seul appel cotisation annuel</strong> sur lequel figure votre <strong>échéancier de paiements trimestriels</strong>; en conséquence, lorsque vos règlements sont prévus par chèque ou virement vous ne recevez plus de bordereau trimestriel comme pour les années antérieures.
</li>
<li>
A terme, votre appel de cotisation sera disponible sur votre espace adhérent (https://extranet.scop.coop).
</li>
</ul>
</p>
<p>
Ce mail vise donc à vous sensibiliser à ce changement de mode de fonctionnement et à vous rappeler, si besoin, les échéances à venir :
<ul>
% for line in object.get_bordereau_move_line():
<span style="margin-left:5px">${line.date_maturity}</span>
% endfor
</ul>
</p>
<p>
Nous vous remercions de la prise en compte de ce changement de mode opératoire et par avance du prochain règlement et le cas échéant à cette occasion, de la régularisation des paiements précédents.
</p>
<p>Restant à votre disposition pour toute information complémentaire.</p>
<p>Bien coopérativement</p>
<p>Direction administrative et exploitation</p>
<p>CG Scop</p>
</p>
</div>
</field>
<field name="lang">${object.partner_id.lang}</field>
<field name="user_signature" eval="False"/>
<field name="auto_delete" eval="False"/>
</record>
</data>
</odoo>
# © 2021 Le Filament (<http://www.le-filament.com>) # © 2021 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from datetime import timedelta
from odoo import fields, models, api, registry from odoo import fields, models, api, registry
from odoo.exceptions import UserError from odoo.exceptions import UserError
...@@ -590,3 +591,36 @@ class Bordereau(models.Model): ...@@ -590,3 +591,36 @@ class Bordereau(models.Model):
bordereau.env.cr.commit() bordereau.env.cr.commit()
except Exception as e: except Exception as e:
_logger.exception(str(e)) _logger.exception(str(e))
# ------------------------------------------------------
# Reminder cron
# ------------------------------------------------------
@api.model
def send_reminder_cotiz(self, _logger=None):
today = fields.Date.today()
reminder_date = today + timedelta(days=7)
acc_move_line_ids = self.env['account.move.line'].search([
('account_id.reconcile', '=', True),
('date_maturity', '=', reminder_date),
])
if acc_move_line_ids:
partner_ids = acc_move_line_ids.mapped('partner_id')
bordereau_ids = self.env['scop.bordereau'].search([
('year', '=', reminder_date.year),
('partner_id', 'in', partner_ids.ids),
('state', '=', 'validated'),
], limit=10)
for bordereau in bordereau_ids:
template = \
self.env.ref('cgscop_cotisation_cg.'
'email_template_reminder_cotisation_cg')
lang = self.env.user.lang
if template:
template.with_context(lang=lang).\
send_mail(bordereau.id, force_send=True)
else:
_logger.warning(
"Aucun modèle d'e-mail n'a été trouvé pour "
"envoyer les rappels")
else:
return False
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