diff --git a/l10n_it_fatturapa_out/data/invoice_it_template.xml b/l10n_it_fatturapa_out/data/invoice_it_template.xml
index 7a5aa422dfe0..1f822658f26b 100644
--- a/l10n_it_fatturapa_out/data/invoice_it_template.xml
+++ b/l10n_it_fatturapa_out/data/invoice_it_template.xml
@@ -15,6 +15,7 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
+
@@ -22,8 +23,10 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
+
+
@@ -31,94 +34,96 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
+ t-foreach="record.invoice_line_ids.sorted(key=lambda l: (-l.sequence, l.date, l.move_name, -l.id), reverse=True)"
+ t-as="line"
+ >
+ t-foreach="line.related_documents.filtered(lambda doc: doc.type == 'order')"
+ t-as="doc"
+ >
+ t-foreach="line.related_documents.filtered(lambda doc: doc.type == 'contract')"
+ t-as="doc"
+ >
+ t-foreach="line.related_documents.filtered(lambda doc: doc.type == 'agreement')"
+ t-as="doc"
+ >
+ t-foreach="line.related_documents.filtered(lambda doc: doc.type == 'reception')"
+ t-as="doc"
+ >
+ t-foreach="line.related_documents.filtered(lambda doc: doc.type == 'invoice')"
+ t-as="doc"
+ >
+ t-set="related_orders"
+ t-value="related_orders + record.related_documents.filtered(lambda doc: doc.type == 'order')"
+ />
+ t-set="related_contracts"
+ t-value="related_contracts + record.related_documents.filtered(lambda doc: doc.type == 'contract')"
+ />
+ t-set="related_agreements"
+ t-value="related_agreements + record.related_documents.filtered(lambda doc: doc.type == 'agreement')"
+ />
+ t-set="related_receptions"
+ t-value="related_receptions + record.related_documents.filtered(lambda doc: doc.type == 'reception')"
+ />
+ t-set="related_invoices"
+ t-value="related_invoices + record.related_documents.filtered(lambda doc: doc.type == 'invoice')"
+ />
+ t-call="l10n_it_fatturapa_out.account_invoice_it_dati_documento_correlato"
+ />
+ t-call="l10n_it_fatturapa_out.account_invoice_it_dati_documento_correlato"
+ />
+ t-call="l10n_it_fatturapa_out.account_invoice_it_dati_documento_correlato"
+ />
+ t-call="l10n_it_fatturapa_out.account_invoice_it_dati_documento_correlato"
+ />
+ t-call="l10n_it_fatturapa_out.account_invoice_it_dati_documento_correlato"
+ />
+
+
@@ -133,13 +138,15 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
+
+
+ t-set="line_is_section_note"
+ t-value="line.display_type in ('line_section', 'line_note')"
+ />
@@ -151,76 +158,78 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
+ t-esc="env['ir.config_parameter'].sudo().get_param('fatturapa.codicetipo.odoo', 'ODOO')"
+ />
+ t-if="line.name"
+ t-esc="encode_for_export(line.name, 1000)"
+ />
+ t-if="line.product_uom_id.name"
+ t-esc="unidecode(line.product_uom_id.name)"
+ />
+ t-call="l10n_it_fatturapa_out.account_invoice_line_it_sconto_maggiorazione"
+ />
+ t-esc="format_monetary(fpa_to_eur(line.price_subtotal, record), euro)"
+ />
+ t-if="not line_is_section_note"
+ t-esc="format_numbers(tax_ids.amount)"
+ />
+ t-set="existing_tax_line"
+ t-value="list(all_taxes[line.move_id.id].values())[0]"
+ />
+ t-if="line_is_section_note"
+ t-esc="existing_tax_line['AliquotaIVA']"
+ />
+ t-if="not line_is_section_note and tax_ids.kind_id.code"
+ t-esc="tax_ids.kind_id.code"
+ />
+ t-if="line_is_section_note and existing_tax_line.get('Natura')"
+ t-esc="existing_tax_line['Natura']"
+ />
+ t-if="line.admin_ref"
+ t-esc="line.admin_ref"
+ />
+ t-if="tax_ids.kind_id.code == 'N2.1' and in_eu(line.move_id.partner_id)"
+ >
INVCONT
+ t-if="not line_is_section_note and line.currency_id != euro"
+ >
Valuta
+ t-esc="format_price(line, original_currency=True)"
+ />
+
+
@@ -229,111 +238,117 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
+ t-esc="format_monetary(fpa_to_eur(tax_line.tax_base_amount, record), euro)"
+ />
+ t-esc="format_monetary(fpa_to_eur(tax_line.price_total, record), euro)"
+ />
+ t-if="tax.law_reference"
+ t-esc="encode_for_export(tax.law_reference, 100)"
+ />
+
+
+ t-if="partner_id.street2"
+ t-esc="partner_id.street + '\n' + partner_id.street2"
+ />
+ t-if="partner_id.codice_destinatario == 'XXXXXXX' or not partner_id.zip"
+ t-esc="'00000'"
+ />
+ t-if="partner_id.codice_destinatario != 'XXXXXXX' and partner_id.zip"
+ t-esc="partner_id.zip"
+ />
+ t-if="partner_id.country_id.code == 'IT'"
+ t-esc="partner_id.state_id.code"
+ />
+ t-if="partner_id.codice_destinatario == 'XXXXXXX'"
+ t-esc="'EE'"
+ />
+
+
+ t-set="id_fiscale_iva"
+ t-value="get_id_fiscale_iva(transmitter, prefer_fiscalcode=True)"
+ />
+ t-if="codice_destinatario"
+ t-esc="codice_destinatario"
+ />
+ t-if="format_phone(transmitter.phone)"
+ t-esc="format_phone(transmitter.phone)"
+ />
+ t-if="not format_phone(transmitter.phone) and format_phone(transmitter.mobile)"
+ t-esc="format_phone(transmitter.mobile)"
+ />
+ t-if="codice_destinatario == '0000000' and partner_id.pec_destinatario"
+ t-esc="partner_id.pec_destinatario"
+ />
+
+
+ t-set="id_fiscale_iva"
+ t-value="get_id_fiscale_iva(partner_id)"
+ />
+ t-if="partner_id.fiscalcode"
+ t-esc="partner_id.fiscalcode"
+ />
+ t-if="not partner_id.is_company"
+ t-esc="partner_id.firstname"
+ />
+ t-if="not partner_id.is_company"
+ t-esc="partner_id.lastname"
+ />
+ t-if="partner_id.eori_code"
+ t-esc="partner_id.eori_code"
+ />
@@ -345,94 +360,98 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
+ t-call="l10n_it_fatturapa_out.account_invoice_it_FatturaPA_sede"
+ />
+ t-if="company_id and company_id.fatturapa_stabile_organizzazione"
+ >
+ t-set="partner_id"
+ t-value="company_id.fatturapa_stabile_organizzazione"
+ />
+ t-if="company_id and company_id.rea_office and company_id.rea_code and company_id.rea_liquidation_state"
+ >
+ t-if="company_id.rea_office.code"
+ t-esc="company_id.rea_office.code"
+ />
+ t-if="company_id.rea_capital"
+ t-esc="format_numbers_two(company_id.rea_capital)"
+ />
+ t-if="company_id.rea_member_type"
+ t-esc="company_id.rea_member_type"
+ />
+ t-if="format_phone(company_id.partner_id.phone)"
+ t-esc="format_phone(company_id.partner_id.phone)"
+ />
+ t-if="not format_phone(company_id.partner_id.phone) and format_phone(company_id.partner_id.mobile)"
+ t-esc="format_phone(company_id.partner_id.mobile)"
+ />
+ t-if="company_id and company_id.fatturapa_pub_administration_ref"
+ t-esc="company_id.fatturapa_pub_administration_ref"
+ />
+
+
+ t-set="id_fiscale_iva"
+ t-value="get_id_fiscale_iva(company_id.fatturapa_tax_representative)"
+ />
+ t-if="company_id.fatturapa_tax_representative.fiscalcode"
+ t-esc="company_id.fatturapa_tax_representative.fiscalcode"
+ />
+ t-if="company_id.fatturapa_tax_representative.is_company"
+ t-esc="company_id.fatturapa_tax_representative.display_name"
+ />
+ t-if="not company_id.fatturapa_tax_representative.is_company"
+ t-esc="company_id.fatturapa_tax_representative.firstname"
+ />
+ t-if="not company_id.fatturapa_tax_representative.is_company"
+ t-esc="company_id.fatturapa_tax_representative.lastname"
+ />
+ t-if="company_id.fatturapa_tax_representative.eori_code"
+ t-esc="company_id.fatturapa_tax_representative.eori_code"
+ />
+
+
+ t-if="partner_id.commercial_partner_id.fiscalcode"
+ t-esc="partner_id.commercial_partner_id.fiscalcode"
+ />
+ t-if="partner_id.commercial_partner_id.is_company"
+ t-esc="encode_for_export(partner_id.commercial_partner_id.display_name, 80)"
+ />
+ t-if="not partner_id.commercial_partner_id.is_company"
+ t-esc="encode_for_export(partner_id.commercial_partner_id.firstname, 60)"
+ />
+ t-if="not partner_id.commercial_partner_id.is_company"
+ t-esc="encode_for_export(partner_id.commercial_partner_id.lastname, 60)"
+ />
+ t-if="partner_id.commercial_partner_id.eori_code"
+ t-esc="partner_id.commercial_partner_id.eori_code"
+ />
@@ -473,52 +492,56 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
+
+
+ t-if="company_id.fatturapa_sender_partner"
+ >
+ t-set="id_fiscale_iva"
+ t-value="get_id_fiscale_iva(company_id.fatturapa_sender_partner)"
+ />
+ t-if="company_id.fatturapa_sender_partner.fiscalcode"
+ t-esc="company_id.fatturapa_sender_partner.fiscalcode"
+ />
+ t-if="company_id.fatturapa_sender_partner.is_company"
+ t-esc="company_id.fatturapa_sender_partner.display_name"
+ />
+ t-if="not company_id.fatturapa_sender_partner.is_company"
+ t-esc="company_id.fatturapa_sender_partner.firstname"
+ />
+ t-if="not company_id.fatturapa_sender_partner.is_company"
+ t-esc="company_id.fatturapa_sender_partner.lastname"
+ />
+ t-if="company_id.fatturapa_sender_partner.eori_code"
+ t-esc="company_id.fatturapa_sender_partner.eori_code"
+ />
+
+
+ t-set="currency"
+ t-value="record.currency_id or record.company_currency_id"
+ />
@@ -527,37 +550,37 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
+ t-if="record.company_id.xml_divisa_value == 'keep_orig'"
+ t-esc="currency.name"
+ />
+ t-if="not record.company_id.xml_divisa_value == 'keep_orig'"
+ t-esc="euro.name"
+ />
+ t-call="l10n_it_fatturapa_out.account_invoice_it_dati_ritenuta"
+ />
+ t-call="l10n_it_fatturapa_out.account_invoice_it_dati_bollo"
+ />
+ t-call="l10n_it_fatturapa_out.account_invoice_it_dati_cassa_previdenziale"
+ />
+ t-if="record.company_id.xml_divisa_value == 'keep_orig'"
+ t-esc="format_numbers_two(get_importo_totale(record))"
+ />
+ t-if="not record.company_id.xml_divisa_value == 'keep_orig'"
+ t-esc="format_numbers_two(fpa_to_eur(get_importo_totale(record), record))"
+ />
@@ -565,15 +588,15 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
SI
+ t-call="l10n_it_fatturapa_out.account_invoice_it_dati_documenti_correlati"
+ />
+ t-call="l10n_it_fatturapa_out.account_invoice_it_dati_trasporto"
+ />
@@ -583,38 +606,38 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
+ t-foreach="record.invoice_line_ids.sorted(key=lambda l: (-l.sequence, l.date, l.move_name, -l.id), reverse=True)"
+ t-as="line"
+ >
+ t-call="l10n_it_fatturapa_out.account_invoice_line_it_FatturaPA"
+ />
+ t-if="tax_data.get('Natura', False)"
+ t-esc="tax_data['Natura']"
+ />
+ t-esc="format_monetary(fpa_to_eur(tax_data['ImponibileImporto'], record), euro)"
+ />
+ t-esc="format_monetary(fpa_to_eur(tax_data['Imposta'], record), euro)"
+ />
+ t-if="tax_data.get('EsigibilitaIVA', False)"
+ t-esc="tax_data['EsigibilitaIVA']"
+ />
+ t-if="tax_data.get('RiferimentoNormativo', False)"
+ t-esc="encode_for_export(tax_data['RiferimentoNormativo'], 100)"
+ />
@@ -626,32 +649,32 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
+ t-esc="record.invoice_payment_term_id.fatturapa_pt_id.code"
+ />
+ t-set="company_bank_account"
+ t-value="record.partner_bank_id"
+ />
+ t-esc="record.invoice_payment_term_id.fatturapa_pm_id.code"
+ />
+ t-if="payment.date_maturity"
+ t-esc="format_date(payment.date_maturity)"
+ />
+ t-if="record.company_id.xml_divisa_value == 'keep_orig'"
+ t-esc="format_numbers_two(payment.amount_currency or payment.debit)"
+ />
+ t-if="not record.company_id.xml_divisa_value == 'keep_orig'"
+ t-esc="format_numbers_two(fpa_to_eur(payment.amount_currency or payment.debit, record))"
+ />
@@ -659,19 +682,19 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
+ t-if="company_bank_account.bank_id"
+ t-esc="company_bank_account.bank_id.name[:80]"
+ />
+ t-if="company_bank_account.acc_type == 'iban' and company_bank_account.sanitized_acc_number"
+ t-esc="company_bank_account.sanitized_acc_number"
+ />
+ t-if="company_bank_account.acc_type == 'bank' and company_bank_account.bank_id.bic"
+ t-esc="company_bank_account.bank_id.bic"
+ />
@@ -681,54 +704,57 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
+ t-foreach="record.fatturapa_doc_attachments.ir_attachment_id"
+ t-as="doc_id"
+ >
+ t-if="get_type_attachment(doc_id)"
+ t-esc="get_type_attachment(doc_id)"
+ />
+
+
+ xmlns:ns1="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2"
+ t-att-versione="formato_trasmissione"
+ >
+ t-call="l10n_it_fatturapa_out.account_invoice_it_dati_trasmissione"
+ />
+ t-call="l10n_it_fatturapa_out.account_invoice_it_cedente_prestatore"
+ >
+ t-call="l10n_it_fatturapa_out.account_invoice_it_rappresentante_fiscale"
+ />
+ t-call="l10n_it_fatturapa_out.account_invoice_it_cessionario_committente"
+ />
+ t-call="l10n_it_fatturapa_out.account_invoice_it_terzo_intermediario_soggetto_emittente"
+ />
TZ
+ t-if="company_id.fatturapa_sender_partner"
+ >TZ
+ t-call="l10n_it_fatturapa_out.account_invoice_it_fattura_elettronica_body"
+ />
-
+
+
diff --git a/l10n_it_fatturapa_out_di/data/invoice_it_template.xml b/l10n_it_fatturapa_out_di/data/invoice_it_template.xml
index 4f5a527f84d5..666dabf2008c 100644
--- a/l10n_it_fatturapa_out_di/data/invoice_it_template.xml
+++ b/l10n_it_fatturapa_out_di/data/invoice_it_template.xml
@@ -8,10 +8,11 @@
+
+ t-set="to_add"
+ t-value="record.declaration_of_intent_ids - record.declaration_of_intent_ids.browse(force_declaration_of_intent_ids)"
+ />
@@ -23,13 +24,15 @@
INTENTO
+ t-esc="encode_for_export(dec.telematic_protocol, 60)"
+ />
+
+
0.00
N1
@@ -37,6 +40,7 @@
0.00
Esclusa ex. Art. 15
+
+
+ t-set="foo"
+ t-value="force_declaration_of_intent_ids.append(line.force_declaration_of_intent_id.id)"
+ />
INTENTO
+ t-esc="encode_for_export(line.force_declaration_of_intent_id.telematic_protocol, 60)"
+ />
+ t-esc="format_date(line.force_declaration_of_intent_id.date)"
+ />
+
diff --git a/l10n_it_fatturapa_out_stamp/views/account_invoice_it_dati_bollo.xml b/l10n_it_fatturapa_out_stamp/views/account_invoice_it_dati_bollo.xml
index 48025a8988b6..21b03dae89a2 100644
--- a/l10n_it_fatturapa_out_stamp/views/account_invoice_it_dati_bollo.xml
+++ b/l10n_it_fatturapa_out_stamp/views/account_invoice_it_dati_bollo.xml
@@ -6,16 +6,18 @@
inherit_id="l10n_it_fatturapa_out.account_invoice_it_dati_bollo"
>
+
+ t-if="record.tax_stamp and record.company_id.tax_stamp_product_id"
+ >
SI
+ t-set="stamp_price"
+ t-value="format_numbers_two(record.company_id.tax_stamp_product_id.list_price)"
+ />
+
diff --git a/l10n_it_fatturapa_out_wt/views/account_invoice_it_dati_ritenuta.xml b/l10n_it_fatturapa_out_wt/views/account_invoice_it_dati_ritenuta.xml
index 7e53db25bd4a..ef47f1443868 100644
--- a/l10n_it_fatturapa_out_wt/views/account_invoice_it_dati_ritenuta.xml
+++ b/l10n_it_fatturapa_out_wt/views/account_invoice_it_dati_ritenuta.xml
@@ -7,25 +7,27 @@
>
+
+ t-set="ritenuta_lines"
+ t-value="record.withholding_tax_line_ids.sorted(key=lambda l: l.withholding_tax_id.code)"
+ />
+ t-set="tipo_ritenuta"
+ t-value="get_withholding_type(wt_line.withholding_tax_id.wt_types, record.company_id.partner_id)"
+ />
+ t-esc="format_numbers_two(wt_line.withholding_tax_id.tax)"
+ />
+ t-esc="wt_line.withholding_tax_id.payment_reason_id.code"
+ />
+
@@ -35,27 +37,29 @@
>
+
+ t-set="TC_CODE"
+ t-value="{'inps': 'TC22', 'enasarco': 'TC07', 'enpam': 'TC09',}"
+ />
+ t-set="ritenuta_lines"
+ t-value="record.withholding_tax_line_ids.sorted(key=lambda l: l.withholding_tax_id.code)"
+ />
+ t-foreach="ritenuta_lines.filtered(lambda wtl: wtl.withholding_tax_id.use_daticassaprev)"
+ t-as="wt_line"
+ >
0.00
+ t-esc="wt_line.withholding_tax_id.daticassprev_tax_id.kind_id.code"
+ />
+
@@ -66,10 +70,12 @@
>
+
SI
+