From 0cb9b0582d5fd8b05cd303cba55ca9b3aa0b6442 Mon Sep 17 00:00:00 2001 From: jordan <jordan@le-filament.com> Date: Wed, 23 Feb 2022 18:04:55 +0100 Subject: [PATCH] [update] refactor mass_mail_send function --- models/scop_bordereau_cg.py | 31 ++++++++++------------- wizard/scop_bordereau_validate_confirm.py | 18 ++++++++----- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/models/scop_bordereau_cg.py b/models/scop_bordereau_cg.py index e19df46..6768ade 100644 --- a/models/scop_bordereau_cg.py +++ b/models/scop_bordereau_cg.py @@ -398,7 +398,7 @@ class Bordereau(models.Model): self.ensure_one() return self.validate_bordereau() - def validate_bordereau(self, **values_mail): + def validate_bordereau(self, mail_compose_message_id=False): """ - Affecte le nom du bordereau avec la séquence - Valide les invoices @@ -411,25 +411,21 @@ class Bordereau(models.Model): # Validation des invoices self.validate_cotiz_cg() # Envoi du mail - if values_mail: - model_id = self.env['ir.model'].search([ - ('model', '=', self._name) - ]).id - mail_template = self.env['mail.template'].create({ - 'model_id': model_id, - 'email_from': values_mail.get('email_from'), - 'subject': values_mail.get('subject'), - 'body_html': values_mail.get('body_html'), - }) - mail_template.send_mail( - self.id, - email_values={ - 'recipient_ids': [(6, 0, self.recipient_ids.ids)]} + if mail_compose_message_id: + mail_compose_message = self.env['mail.compose.message'].browse( + mail_compose_message_id ) + mail_compose_message.update({ + 'partner_ids': [(6, 0, self.recipient_ids.ids)], + 'res_id': self.id, + }) + mail_compose_message.with_context( + mail_notify_force_send=False + ).send_mail() return self.id @api.multi - def validate_bordereau_multi(self, **values): + def validate_bordereau_multi(self, mail_compose_message_id): """ Utilise job queue pour valider les bordereaux """ @@ -439,7 +435,7 @@ class Bordereau(models.Model): for bordereau in self: bordereau.with_context( job_batch=batch - ).with_delay().validate_bordereau(**values) + ).with_delay().validate_bordereau(mail_compose_message_id) batch.enqueue() @api.multi @@ -465,7 +461,6 @@ class Bordereau(models.Model): 'default_res_id': self.id, 'default_use_template': True, 'default_template_id': template_id.id, - 'default_composition_mode': 'comment', } return { 'type': 'ir.actions.act_window', diff --git a/wizard/scop_bordereau_validate_confirm.py b/wizard/scop_bordereau_validate_confirm.py index fdfb64b..023cc3b 100644 --- a/wizard/scop_bordereau_validate_confirm.py +++ b/wizard/scop_bordereau_validate_confirm.py @@ -18,13 +18,11 @@ class ScopBordereauValidate(models.TransientModel): template_id = self.env.ref( 'cgscop_cotisation_cg.email_template_cotisation_cg') res.update({ - 'email_from': template_id.email_from, 'subject': template_id.subject, 'body_html': template_id.body_html, }) return res - email_from = fields.Char('De:', translate=True, sanitize=False) subject = fields.Char('Objet:', translate=True, sanitize=False) body_html = fields.Html('Corps du mail:', translate=True, sanitize=False) @@ -41,11 +39,17 @@ class ScopBordereauValidate(models.TransientModel): raise UserError(_("Impossible de valider un bordereau qui " "n'est pas à l'état de brouillon")) else: - values = { - 'email_from': self.email_from, + template_id = self.env.ref( + 'cgscop_cotisation_cg.email_template_cotisation_cg') + mail_compose_message_id = self.env['mail.compose.message'].create({ 'subject': self.subject, - 'body_html': self.body_html, - } - bordereau_ids.validate_bordereau_multi(**values) + 'body': self.body_html, + 'model': 'scop.bordereau', + 'email_from': template_id.email_from, + 'reply_to': template_id.reply_to, + 'auto_delete': False, + 'composition_mode': 'mass_mail', + }) + bordereau_ids.validate_bordereau_multi(mail_compose_message_id.id) return {'type': 'ir.actions.act_window_close'} -- GitLab