[IMP] account_edi: improve how we handle attachments for the email

When assembling the email we are leaving the assignment of the attachments
to another method that we can inherit and then modify instead of doing it
in the same method to attach them.
The idea is that in any localization we need only to modify that method
in order to add new attachments to the mail template.

closes odoo/odoo#80490

X-original-commit: 6f2e7dc3e8c468bcdb0862468eb08b65ce40c983
Related: odoo/enterprise#22568
Signed-off-by: Laurent Smet <las@openerp.com>
This commit is contained in:
Arturo Flores
2021-11-30 15:22:05 +00:00
committed by Josse Colpaert
parent dd8a3674af
commit eb78b67e93
+13 -5
View File
@@ -6,6 +6,17 @@ from odoo import api, models
class MailTemplate(models.Model):
_inherit = "mail.template"
def _get_edi_attachments(self, document):
"""
Will return the information about the attachment of the edi document for adding the attachment in the mail.
Can be overridden where e.g. a zip-file needs to be sent with the individual files instead of the entire zip
:param document: an edi document
:return: list with a tuple with the name and base64 content of the attachment
"""
if not document.attachment_id:
return []
return [(document.attachment_id.name, document.attachment_id.datas)]
def generate_email(self, res_ids, fields):
res = super().generate_email(res_ids, fields)
@@ -26,10 +37,7 @@ class MailTemplate(models.Model):
# wizard.
if doc.edi_format_id._is_embedding_to_invoice_pdf_needed():
continue
attachment = doc.attachment_id
if attachment:
record_data.setdefault('attachments', [])
record_data['attachments'].append((attachment.name, attachment.datas))
record_data.setdefault('attachments', [])
record_data['attachments'] += self._get_edi_attachments(doc)
return res