l10n-switzerland-flectra/l10n_ch_report_optional/models/mail_template.py

59 lines
2.6 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
# Part of Odoo, Flectra. See LICENSE file for full copyright and licensing details.
import base64
from flectra import api, models
from flectra.addons.l10n_ch.models.mail_template import MailTemplate
def generate_email(self, res_ids, fields):
""" Method overridden in order to add an attachment containing the ISR
to the draft message when opening the 'send by mail' wizard on an invoice.
This attachment generation will only occur if all the required data are
present on the invoice. Otherwise, no ISR attachment will be created, and
the mail will only contain the invoice (as defined in the mother method).
"""
result = super(MailTemplate, self).generate_email(res_ids, fields)
if self.model != 'account.move':
return result
multi_mode = True
if isinstance(res_ids, int):
res_ids = [res_ids]
multi_mode = False
if self.model == 'account.move':
for record in self.env[self.model].browse(res_ids):
if record.move_type != 'out_invoice':
continue
inv_print_name = self._render_field('report_name', record.ids, compute_lang=True)[record.id]
new_attachments = []
if not self.env.company.l10n_ignore_qr_when_reconciled or record.payment_state != 'paid':
if record.l10n_ch_isr_valid and self.env.company.l10n_add_isr_pdf:
# We add an attachment containing the ISR
isr_report_name = 'ISR-' + inv_print_name + '.pdf'
isr_pdf = self.env.ref('l10n_ch.l10n_ch_isr_report')._render_qweb_pdf(record.ids)[0]
isr_pdf = base64.b64encode(isr_pdf)
new_attachments.append((isr_report_name, isr_pdf))
if record.partner_bank_id._eligible_for_qr_code('ch_qr', record.partner_id, record.currency_id) and self.env.company.l10n_add_qr_pdf:
# We add an attachment containing the QR-bill
qr_report_name = 'QR-bill-' + inv_print_name + '.pdf'
qr_pdf = self.env.ref('l10n_ch.l10n_ch_qr_report')._render_qweb_pdf(record.ids)[0]
qr_pdf = base64.b64encode(qr_pdf)
new_attachments.append((qr_report_name, qr_pdf))
record_dict = multi_mode and result[record.id] or result
attachments_list = record_dict.get('attachments', False)
if attachments_list:
attachments_list.extend(new_attachments)
else:
record_dict['attachments'] = new_attachments
return result
# Patch / Override existing Method
MailTemplate.generate_email = generate_email