Files
odoo_source/addons/l10n_ch/report/swissqr_report.xml
T
Paolo (pgi) f3e9e6f4b6 [FIX] l10n_ch: Fix QR bill according to specs
Reworked the structure of the HTML and the SCSS
to adhere to the official specs:

- 5mm padding inside the two main sections
- Correct font sizes
- Bold headers
- Increased the Swiss Cross inside the logo (7mm x 7mm)
- Scissors pictogram on the outline
- Dashed borders

Sizes now take the wkhtmltopdf (1/1.25 factor) shrinking
into consideration.

closes odoo/odoo#80544

X-original-commit: f02622684c6a220a425044d8d4a5fd474efdb519
Signed-off-by: William André (wan) <wan@odoo.com>
2021-12-02 10:18:56 +00:00

211 lines
10 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="l10n_ch_qr_report" model="ir.actions.report">
<field name="name">QR-bill</field>
<field name="model">account.move</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">l10n_ch.qr_report_main</field>
<field name="report_file">l10n_ch.qr_report_main</field>
<field name="print_report_name">'QR-bill-%s' % object.name</field>
<field name="paperformat_id" ref="l10n_ch.paperformat_euro_no_margin"/>
<field name="attachment">'QR-bill-' + object.name + '.pdf'</field>
</record>
<template id="l10n_ch_swissqr_template">
<t t-set="o" t-value="o.with_context(lang=lang)"/>
<t t-call="web.external_layout">
<!-- add default margin for header (matching A4 European margin) -->
<t t-set="report_header_style">padding-top:6.2mm; padding-left:8.2mm; padding-right:8.2mm;</t>
<t t-set="formated_amount" t-value="'{:,.2f}'.format(o.amount_residual).replace(',','\xa0')"/>
<div class="swissqr_page_title">
<h1>QR-bill for invoice <t t-esc="o.name"/></h1>
</div>
<div class="swissqr_content_v2">
<div class="swissqr_receipt">
<img src="/l10n_ch/static/src/img/scissors_h.png" class="scissors horizontal_scissors"/>
<div id="receipt_title_zone" class="swissqr_section_title">
<span>Receipt</span>
</div>
<div id="receipt_indication_zone" class="receipt_indication_zone">
<div class="swissqr_text title">
<span>Account / Payable to</span>
</div>
<div class="swissqr_text content">
<span t-field="o.partner_bank_id.acc_number" t-if="not o.partner_bank_id.l10n_ch_qr_iban"/>
<span t-field="o.partner_bank_id.l10n_ch_qr_iban" t-if="o.partner_bank_id.l10n_ch_qr_iban"/>
<br/>
<span t-field="o.company_id.name"/><br/>
<span t-field="o.company_id.street"/><br/>
<span t-field="o.company_id.country_id.code"/>
<span t-field="o.company_id.zip"/>
<span t-field="o.company_id.city"/><br/>
<br/>
</div>
<t t-if="o.partner_bank_id.l10n_ch_qr_iban">
<div class="swissqr_text title">
<span>Reference</span>
</div>
<div class="swissqr_text content">
<span t-esc="o.space_qrr_reference(o.payment_reference)"/><br/>
<br/>
</div>
</t>
<div class="swissqr_text title">
<span>Payable by</span>
</div>
<div class="swissqr_text content">
<span t-field="o.partner_id.commercial_partner_id.name"/><br/>
<span t-field="o.partner_id.street"/>
<span t-field="o.partner_id.street2"/><br/>
<span t-field="o.partner_id.country_id.code"/>
<span t-field="o.partner_id.zip"/>
<span t-field="o.partner_id.city"/>
</div>
</div>
<div id="receipt_amount_zone" class="swissqr_column_left receipt_amount_zone">
<div class="swissqr_text">
<div class="column">
<div class="title">
<span>Currency</span>
</div>
<div class="content">
<span t-field="o.currency_id.name"/>
</div>
</div>
<div class="column">
<div class="title">
<span>Amount</span>
</div>
<div class="content">
<span t-esc="formated_amount"/>
</div>
</div>
</div>
</div>
<div id="receipt_acceptance_point_zone" class="receipt_acceptance_point_zone">
<div class="swissqr_text content">
<span class="title">Acceptance point</span>
</div>
</div>
</div>
<div class="swissqr_body">
<img src="/l10n_ch/static/src/img/scissors_v.png" class="scissors vertical_scissors"/>
<div class="swissqr_column_left">
<div class="swissqr_section_title">
<span>Payment part</span>
</div>
<img class="swissqr" t-att-src="qr_code_urls[o.id]"/>
<div id="amount_zone" class="amount_zone">
<div class="swissqr_text">
<div class="column">
<div class="title">
<span>Currency</span>
</div>
<div class="content">
<span t-field="o.currency_id.name"/>
</div>
</div>
<div class="column">
<div class="title">
<span>Amount</span><br/>
</div>
<div class="content">
<span t-esc="formated_amount"/>
</div>
</div>
</div>
</div>
</div>
<div id="indications_zone" class="swissqr_column_right">
<div class="swissqr_text title">
<span>Account / Payable to</span><br/>
</div>
<div class="swissqr_text content">
<span t-field="o.partner_bank_id.acc_number" t-if="not o.partner_bank_id.l10n_ch_qr_iban"/>
<span t-field="o.partner_bank_id.l10n_ch_qr_iban" t-if="o.partner_bank_id.l10n_ch_qr_iban"/>
<br/>
<span t-field="o.company_id.name"/><br/>
<span t-field="o.company_id.street"/><br/>
<span t-field="o.company_id.country_id.code"/>
<span t-field="o.company_id.zip"/>
<span t-field="o.company_id.city"/><br/>
<br/>
</div>
<t t-if="o.partner_bank_id.l10n_ch_qr_iban">
<div class="swissqr_text title">
<span class="title">Reference</span>
</div>
<div class="swissqr_text content">
<span t-esc="o.space_qrr_reference(o.payment_reference)"/><br/>
<br/>
</div>
</t>
<t t-set="additional_info" t-value="(o.ref or o.name if o.partner_bank_id.l10n_ch_qr_iban else o.payment_reference or o.ref or o.name)"/>
<t t-if="additional_info">
<div class="swissqr_text title">
<span>Additional information</span>
</div>
<div class="swissqr_text content">
<span t-esc="additional_info"/><br/>
<br/>
</div>
</t>
<div class="swissqr_text title">
<span>Payable by</span>
</div>
<div class="swissqr_text content">
<span t-field="o.partner_id.commercial_partner_id.name"/><br/>
<span t-field="o.partner_id.street"> </span>
<span t-field="o.partner_id.street2"/><br/>
<span t-field="o.partner_id.country_id.code"/>
<span t-field="o.partner_id.zip"/>
<span t-field="o.partner_id.city"/><br/>
<br/>
</div>
</div>
</div>
</div>
</t>
</template>
<template id="l10n_ch.qr_report_main">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="o">
<t t-set="lang" t-value="o.partner_id.lang"/>
<t t-call="l10n_ch.l10n_ch_swissqr_template" t-lang="lang"/>
</t>
</t>
</template>
</data>
</odoo>