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