19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:31:16 +01:00
parent 89c6e82fe7
commit 1b82c20a58
572 changed files with 43570 additions and 53303 deletions

View file

@ -13,7 +13,7 @@
<t t-call="l10n_cl.custom_footer"/>
</t>
<div>
<div class="mb-3">
<div class="row">
<div name="left-upper-side" class="col-8">
<img t-if="o.company_id.logo" t-att-src="image_data_uri(o.company_id.logo)"
@ -25,7 +25,7 @@
<br/>
<span name="company_activity" class="fst-italic" t-field="o.company_id.report_header"/>
<div/>
<t t-esc="' - '.join([item for item in [
<t t-out="' - '.join([item for item in [
', '.join([item for item in [header_address.street, header_address.street2] if item]),
header_address.city,
header_address.state_id and header_address.state_id.name,
@ -35,29 +35,29 @@
<br/>
</span>
<span t-if="header_address.phone" style="white-space: nowrap;"
t-esc="'Tel: ' + header_address.phone"/>
t-out="'Tel: ' + header_address.phone"/>
<span t-if="header_address.website">
<span t-att-style="'color: %s;' % o.company_id.primary_color"
t-esc="'- Web: %s' %' - '.join([item for item in [header_address.website.replace('https://', '').replace('http://', ''), header_address.email] if item])"/>
t-out="'- Web: %s' %' - '.join([item for item in [header_address.website.replace('https://', '').replace('http://', ''), header_address.email] if item])"/>
</span>
</div>
<div name="right-upper-side" class="col-4">
<div class="row">
<div name="right-upper-side" class="col-12">
<div class="row border border-4 border-dark">
<div class="row border border-4 border-dark" style="max-width: 100%;">
<div class="col-12 text-center">
<h6 style="color: black;">
<strong>
<br/>
<span style="font-family:arial; line-height: 180%;">RUT:</span>
<t t-if="o.company_id.partner_id.vat">
<span style="font-family:arial;" t-esc="o.company_id.partner_id._format_dotted_vat_cl(o.company_id.partner_id.vat)"/>
<span style="font-family:arial;" t-out="o.company_id.partner_id._format_dotted_vat_cl(o.company_id.partner_id.vat)"/>
</t>
<br/>
<span style="font-family:arial;" class="text-uppercase" t-esc="report_name"/>
<span style="font-family:arial;" class="text-uppercase" t-out="report_name"/>
<br/>
<span>Nº:</span>
<span style="font-family:arial;line-height: 200%;" t-esc="report_number"/>
<span style="font-family:arial;line-height: 200%;" t-out="report_number"/>
</strong>
</h6>
</div>
@ -82,32 +82,28 @@
<strong>
<span t-att-style="'color: %s;' % o.company_id.secondary_color">Date:</span>
</strong>
<span t-esc="o.invoice_date" t-options='{"widget": "date"}'/>
<span t-out="o.invoice_date" t-options='{"widget": "date"}'/>
<br/>
<strong>Customer:</strong>
<span t-field="o.partner_id.name"/>
<span t-out="o.partner_id.commercial_partner_id.name or o.partner_id.name"/>
<br/>
<t t-if="o.partner_id.vat and o.partner_id.l10n_latam_identification_type_id">
<strong>
<t t-esc="o.partner_id.l10n_latam_identification_type_id.name or o.company_id.account_fiscal_country_id.vat_label" id="inv_tax_id_label"/>:
<t t-out="o.partner_id.l10n_latam_identification_type_id.name or o.company_id.account_fiscal_country_id.vat_label" id="inv_tax_id_label"/>:
</strong>
<span t-esc="o.partner_id.vat"/>
<span t-out="o.partner_id.vat"/>
<br/>
</t>
<strong>Address:</strong>
<span t-esc="o.partner_id._display_address(without_company=True)"/>
<span t-out="o.partner_id._display_address(without_company=True)"/>
</div>
<div class="col-6">
<strong>Due Date:</strong>
<span t-esc="o.invoice_date_due" t-options='{"widget": "date"}'/>
<span t-out="o.invoice_date_due" t-options='{"widget": "date"}'/>
<br/>
<strong>Payment Terms:</strong>
<span t-esc="o.invoice_payment_term_id.name or ''"/>
<t t-if="o.invoice_incoterm_id">
<br/>
<strong>Incoterm:</strong>
@ -117,11 +113,11 @@
<t t-if="o.partner_shipping_id and o.partner_id not in o.partner_shipping_id" >
<br/>
<strong>Delivery Address:</strong>
<span t-esc="o.partner_shipping_id._display_address(without_company=True)"/>
<span t-out="o.partner_shipping_id._display_address(without_company=True)"/>
</t>
<br/>
<strong>GIRO:</strong>
<span t-esc="o.partner_id.industry_id.name or ''"/>
<span t-out="o.partner_id.industry_id.name or ''"/>
</div>
</div>
<div id="references" class="row">
@ -150,11 +146,11 @@
<div name="no_shipping"/>
</xpath>
<xpath expr="//h2" position="replace"/>
<xpath expr="//t[@t-set='layout_document_title']" position="replace"/>
<t t-set="current_subtotal" t-value="current_subtotal + line.price_subtotal" position="before">
<xpath expr="//t[@t-foreach='lines_to_report']/t" position="before">
<t t-set="line_amounts" t-value="line._l10n_cl_get_line_amounts()"/>
</t>
</xpath>
<xpath expr="//span[@t-field='line.price_unit']" position="before">
<t t-if="'second_currency' in line_amounts" t-set="line_second_currency_round" t-value="line_amounts['second_currency']['round_currency']"/>
@ -162,37 +158,37 @@
<xpath expr="//span[@t-field='line.price_unit']" position="attributes">
<attribute name="t-field"></attribute>
<attribute t-if="not o.l10n_latam_document_type_id._is_doc_type_electronic_ticket()" name="t-esc">line_amounts['price_item_document']</attribute>
<attribute name="t-options">{"widget": "float", "precision": 2}</attribute>
<attribute name="t-out">line_amounts['price_item_document']</attribute>
<attribute name="t-options">{"widget": "float", "precision": line_amounts['main_currency'].decimal_places}</attribute>
</xpath>
<th name="th_price_unit" t-if="display_discount" t-attf-class="text-end {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}" position="after">
<th name="th_price_unit" t-if="display_discount" t-attf-class="text-end {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}">
<xpath expr="//th[@name='th_discount']" position="after">
<th name="th_discount_currency" t-if="display_discount" t-attf-class="text-end {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}">
<span>Disc.</span>
</th>
</th>
</xpath>
<td t-if="display_discount" t-attf-class="text-end {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}" position="after">
<td t-if="display_discount" t-attf-class="text-end {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}">
<span class="text-nowrap" t-esc="line_amounts['total_discount']" t-options="{'widget': 'monetary', 'display_currency': line_amounts['main_currency']}"/>
<td name="td_discount" t-if="display_discount" t-attf-class="text-end {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}" position="after">
<td name="td_discount_currency" t-if="display_discount" t-attf-class="text-end {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}" position="after">
<span class="text-nowrap" t-out="line_amounts['total_discount']" t-options="{'widget': 'monetary', 'display_currency': line_amounts['main_currency']}"/>
</td>
</td>
<xpath expr="//span[@id='line_tax_ids']" position="attributes">
<attribute name="t-esc">', '.join(map(lambda x: (x.description or x.name), line.tax_lines))</attribute>
<attribute name="t-out">', '.join(map(lambda x: (x.description or x.name), line.tax_lines))</attribute>
</xpath>
<span t-field="line.price_subtotal" position="attributes">
<attribute name="t-field"/>
<attribute name="t-esc">line_amounts['price_line_document']</attribute>
<attribute name="t-out">line_amounts['price_line_document']</attribute>
<attribute name="t-options">{"widget": "monetary", "display_currency": line_amounts['main_currency']}</attribute>
</span>
<xpath expr="//th[@name='th_taxes']" position="replace"/>
<xpath expr="//span[@id='line_tax_ids']/.." position="replace"/>
<div name="payment_term" position="replace"/>
<!-- To remove? <div name="payment_term" position="replace"/>-->
<xpath expr="//span[@t-field='o.payment_reference']/../.." position="replace"/>
<!-- replace information section and usage chilean style -->
@ -200,23 +196,14 @@
<t t-call="l10n_cl.informations"/>
</div>
<!-- we remove the ml auto and also give more space to avoid multiple lines on tax detail -->
<xpath expr="//div[@id='total']/div" position="attributes">
<attribute name="t-attf-class">#{'col-6' if report_type != 'html' else 'col-sm-7 col-md-6'}</attribute>
<xpath expr="//div[@id='right-elements']" position="after">
<div name="stamp" class="col-6 text-center"/>
</xpath>
<xpath expr="//div[@id='total']/div" position="before">
<div t-attf-class="#{'col-6' if report_type != 'html' else 'col-sm-7 col-md-6'}"/>
</xpath>
<xpath expr="//div[@id='total']/div" position="inside">
<div name="stamp" class="col-11 text-center"/>
</xpath>
<xpath expr="//div[@id='total']//div//table" position="after">
<xpath expr="//div[@id='right-elements']" position="inside">
<div class="row">
<div class="col-12 text-end" t-if="o.l10n_latam_document_type_id.code == '39'" name="vat_boleta">
The VAT tax of this boleta is: <span t-esc="o._l10n_cl_get_amounts()['vat_amount']" t-options="{'widget': 'monetary', 'display_currency': o.currency_id}"/>.
<div class="col-12 text-center" t-if="o.l10n_latam_document_type_id.code == '39'" name="vat_boleta">
The VAT tax of this boleta is: <span t-out="o._l10n_cl_get_amounts()['vat_amount']" t-options="{'widget': 'monetary', 'display_currency': o.currency_id}"/>.
</div>
<div name="transferable-table" class="col-6"/>
<div name="transferable-legend" class="col-6 text-end"/>
@ -226,7 +213,7 @@
<xpath expr="//span[@t-field='line.name']" position="replace">
<t t-set="all_taxes" t-value="'all_taxes'"/>
<t t-if="'second_currency' in line_amounts" t-set="line_second_currency_round" t-value="line_amounts['second_currency']['round_currency']"/>
<span t-esc="line_amounts['line_description']" t-options="{'widget': 'text'}"/>
<span t-out="line_amounts['line_description']" t-options="{'widget': 'text'}"/>
</xpath>
<t t-call="account.document_tax_totals" position="attributes">
@ -237,17 +224,11 @@
<!-- FIXME: Temp fix to allow fetching invoice_documemt in Studio Reports with localisation -->
<template id="report_invoice" inherit_id="account.report_invoice">
<xpath expr='//t[@t-call="account.report_invoice_document"]' position="after">
<xpath expr="//t[@t-call='account.report_invoice_document']" position="after">
<t t-if="o._get_name_invoice_report() == 'l10n_cl.report_invoice_document'"
t-call="l10n_cl.report_invoice_document" t-lang="lang"/>
</xpath>
</template>
<template id="report_invoice_with_payments" inherit_id="account.report_invoice_with_payments">
<xpath expr='//t[@t-call="account.report_invoice_document"]' position="after">
<t t-if="o._get_name_invoice_report() == 'l10n_cl.report_invoice_document'"
t-call="l10n_cl.report_invoice_document" t-lang="lang"/>
</xpath>
</template>
<template id="tax_totals_widget" inherit_id="account.document_tax_totals" primary="True">
@ -255,35 +236,35 @@
<t t-set="subtotal_amounts" t-value="o._l10n_cl_get_amounts()"/>
<t t-set="withholdings" t-value="o._l10n_cl_get_withholdings()"/>
<t t-if="subtotal_amounts['subtotal_amount_taxable'] != 0.0">
<tr class="border-black is-subtotal"><td><strong>Net Amount</strong></td><td class="text-end oe_subtotal_footer_separator" t-esc="subtotal_amounts['subtotal_amount_taxable']" t-options="{'widget': 'monetary', 'display_currency': subtotal_amounts['main_currency']}"/></tr>
<tr class="border-black is-subtotal"><td><strong>Net Amount</strong></td><td class="text-end oe_subtotal_footer_separator" t-out="subtotal_amounts['subtotal_amount_taxable']" t-options="{'widget': 'monetary', 'display_currency': subtotal_amounts['main_currency']}"/></tr>
</t>
<t t-if="subtotal_amounts['subtotal_amount_exempt'] != 0.0">
<tr class="border-black is-subtotal">
<td><strong>Exempt Amount</strong></td>
<td class="text-end oe_subtotal_footer_separator" t-esc="subtotal_amounts['subtotal_amount_exempt']"
<td class="text-end oe_subtotal_footer_separator" t-out="subtotal_amounts['subtotal_amount_exempt']"
t-options="{'widget': 'monetary', 'display_currency': subtotal_amounts['main_currency']}"/>
</tr>
</t>
<t t-if="subtotal_amounts['vat_amount'] != 0.0">
<tr>
<td>VAT <t t-esc="subtotal_amounts['vat_percent']"/></td>
<td class="text-end" t-esc="subtotal_amounts['vat_amount']"
<td>VAT <t t-esc="subtotal_amounts['vat_percent']"/>%</td>
<td class="text-end" t-out="subtotal_amounts['vat_amount']"
t-options="{'widget': 'monetary', 'display_currency': subtotal_amounts['main_currency']}"/></tr>
</t>
<t t-foreach="withholdings" t-as="wh">
<tr>
<td t-esc="'%s (base %s)' % (wh['tax_name'], o._format_lang_totals(wh['tax_base'], subtotal_amounts['main_currency']))"/>
<td class="text-end" t-esc="wh['tax_amount']" t-options="{'widget': 'monetary', 'display_currency': subtotal_amounts['main_currency']}"/></tr>
<td t-out="'%s (base %s)' % (wh['tax_name'], o._format_lang_totals(wh['tax_base'], subtotal_amounts['main_currency']))"/>
<td class="text-end" t-out="wh['tax_amount']" t-options="{'widget': 'monetary', 'display_currency': subtotal_amounts['main_currency']}"/></tr>
</t>
</t>
<tr class="border-black o_total" position="replace">
<tr class="border-black o_total">
<tr class="o_total" position="replace">
<tr class="o_total">
<td><strong>Total</strong></td>
<td class="text-end">
<span t-esc="subtotal_amounts['total_amount']" t-options="{'widget': 'monetary', 'display_currency': subtotal_amounts['main_currency']}"/>
<strong t-out="subtotal_amounts['total_amount']" t-options="{'widget': 'monetary', 'display_currency': subtotal_amounts['main_currency']}"/>
</td>
</tr>
</tr>
</template>
</odoo>
</odoo>