mirror of
https://gitlab.com/flectra-community/l10n-switzerland-flectra.git
synced 2024-11-16 19:12:04 +00:00
✨ Settings to define if ISR and QR should be added to email template, and also if it should only be done when invoice is not paid
->l10n_ch_report_optional
This commit is contained in:
parent
681a0990eb
commit
c10ba87c3f
4
l10n_ch_report_optional/__init__.py
Normal file
4
l10n_ch_report_optional/__init__.py
Normal file
@ -0,0 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo, Flectra. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import models
|
19
l10n_ch_report_optional/__manifest__.py
Normal file
19
l10n_ch_report_optional/__manifest__.py
Normal file
@ -0,0 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo, Flectra. See LICENSE file for full copyright and licensing details.
|
||||
# Main contributor: Nicolas Bessi. Camptocamp SA
|
||||
# Financial contributors: Hasa SA, Open Net SA,
|
||||
# Prisme Solutions Informatique SA, Quod SA
|
||||
# Translation contributors: brain-tec AG, Agile Business Group
|
||||
{
|
||||
'name': "Switzerland - Accounting Optional Reports as Attachments",
|
||||
'description': """
|
||||
Add some parameters to define if ISR or QR Bill should be added automatically
|
||||
""",
|
||||
'version': '1.0.1.0',
|
||||
'category': 'Accounting',
|
||||
'depends': ['l10n_ch'],
|
||||
'data': [
|
||||
'views/res_config_settings_views.xml',
|
||||
],
|
||||
'license': 'LGPL-3',
|
||||
}
|
6
l10n_ch_report_optional/models/__init__.py
Normal file
6
l10n_ch_report_optional/models/__init__.py
Normal file
@ -0,0 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo, Flectra. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import res_config_settings
|
||||
from . import mail_template
|
||||
from . import res_company
|
56
l10n_ch_report_optional/models/mail_template.py
Normal file
56
l10n_ch_report_optional/models/mail_template.py
Normal file
@ -0,0 +1,56 @@
|
||||
# -*- 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):
|
||||
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
|
19
l10n_ch_report_optional/models/res_company.py
Normal file
19
l10n_ch_report_optional/models/res_company.py
Normal file
@ -0,0 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo, Flectra. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from flectra import fields, models
|
||||
|
||||
|
||||
class Company(models.Model):
|
||||
_inherit = "res.company"
|
||||
|
||||
l10n_add_isr_pdf = fields.Boolean(
|
||||
string='ISR-PDF',
|
||||
)
|
||||
l10n_add_qr_pdf = fields.Boolean(
|
||||
string='QR-PDF',
|
||||
)
|
||||
l10n_ignore_qr_when_reconciled = fields.Boolean(
|
||||
string='Ignore QR when reconciled',
|
||||
help='Do not add QR Bill when invoice is reconciled',
|
||||
)
|
21
l10n_ch_report_optional/models/res_config_settings.py
Normal file
21
l10n_ch_report_optional/models/res_config_settings.py
Normal file
@ -0,0 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo, Flectra. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from flectra import fields, models
|
||||
|
||||
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
l10n_add_isr_pdf = fields.Boolean(
|
||||
related='company_id.l10n_add_isr_pdf',
|
||||
readonly=False,
|
||||
)
|
||||
l10n_add_qr_pdf = fields.Boolean(
|
||||
related='company_id.l10n_add_qr_pdf',
|
||||
readonly=False,
|
||||
)
|
||||
l10n_ignore_qr_when_reconciled = fields.Boolean(
|
||||
related='company_id.l10n_ignore_qr_when_reconciled',
|
||||
readonly=False,
|
||||
)
|
53
l10n_ch_report_optional/views/res_config_settings_views.xml
Normal file
53
l10n_ch_report_optional/views/res_config_settings_views.xml
Normal file
@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<flectra>
|
||||
<data>
|
||||
<record id="res_config_settings_view_form" model="ir.ui.view">
|
||||
<field name="name">res.config.settings.view.form.inherit.l10n.ch</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="inherit_id" ref="account.res_config_settings_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@id='pay_invoice_online_setting_container']" position="after">
|
||||
<h2>Send & Print: adds additional single pdf</h2>
|
||||
<div class="row mt16 o_settings_container" id="add_pdfs_in_invoice_online_setting_container">
|
||||
<div class="col-12 col-lg-6 o_setting_box"
|
||||
title="Add a single attachment with QR-code as pdf in your mail so your customers have a seperate paper for the invoice.">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="l10n_add_isr_pdf" class="oe_inline"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="l10n_add_isr_pdf"/>
|
||||
<div class="text-muted">
|
||||
Add ISR-Invoice in mail
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6 o_setting_box"
|
||||
title="Add a single attachment with QR-code as pdf in your mail so your customers have a seperate paper for the invoice.">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="l10n_add_qr_pdf" class="oe_inline"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="l10n_add_qr_pdf"/>
|
||||
<div class="text-muted">
|
||||
Add QR-Invoice in mail
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6 o_setting_box"
|
||||
title="Do not add ISR or QR Invoice when invoice is already paid">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="l10n_ignore_qr_when_reconciled" class="oe_inline"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="l10n_ignore_qr_when_reconciled"/>
|
||||
<div class="text-muted">
|
||||
Only add ISR / QR Invoice when not yet paid
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</flectra>
|
Loading…
Reference in New Issue
Block a user