mirror of
https://gitlab.com/flectra-community/l10n-switzerland-flectra.git
synced 2024-11-17 03:22:03 +00:00
4ee306f1b1
->l10n_ch_report_optional
59 lines
2.6 KiB
Python
59 lines
2.6 KiB
Python
# -*- 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
|