This is mandatory for PA customers, and required by several enterprise customers as well. Related Ticket: 2425845 closes odoo/odoo#64443 X-original-commit: bb898e663019942a6fd99ce96ce5742a8ff7ea56 Signed-off-by: Josse Colpaert <jco@openerp.com> Signed-off-by: bfr-o <bfr-o@users.noreply.github.com>
201 lines
15 KiB
XML
201 lines
15 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<data>
|
|
<template id="account_invoice_line_it_FatturaPA">
|
|
<t t-set="taxes" t-value="line.tax_ids.compute_all(line.price_unit)"/>
|
|
<DettaglioLinee>
|
|
<NumeroLinea t-esc="line_counter"/>
|
|
<CodiceArticolo t-if="line.product_id.barcode">
|
|
<!--2.2.1.3-->
|
|
<CodiceTipo>EAN</CodiceTipo>
|
|
<CodiceValore t-esc="line.product_id.barcode"/>
|
|
</CodiceArticolo>
|
|
<CodiceArticolo t-if="line.product_id.default_code">
|
|
<CodiceTipo>INTERNAL</CodiceTipo>
|
|
<CodiceValore t-esc="line.product_id.default_code"/>
|
|
</CodiceArticolo>
|
|
<Descrizione>
|
|
<t t-esc="line.name[:1000]"/>
|
|
<t t-if="not line.name" t-esc="'NO NAME'"/>
|
|
</Descrizione>
|
|
<Quantita t-esc="format_numbers(line.quantity)"/>
|
|
<UnitaMisura t-if="line.product_uom_id.category_id != env.ref('uom.product_uom_categ_unit')" t-esc="line.product_uom_id.name"/>
|
|
<PrezzoUnitario t-esc="format_monetary(taxes['total_excluded'], currency)"/>
|
|
<ScontoMaggiorazione t-if="line.discount != 0">
|
|
<!-- [2.2.1.10] -->
|
|
<Tipo t-esc="discount_type(line.discount)"/>
|
|
<Percentuale t-esc="format_numbers(abs(line.discount))"/>
|
|
</ScontoMaggiorazione>
|
|
<PrezzoTotale t-esc="format_monetary(line.price_subtotal, currency)"/>
|
|
<!-- without tax, must include any discounts and any extra charge-->
|
|
<AliquotaIVA t-if="line.tax_ids.amount_type == 'percent'" t-esc="format_numbers(line.tax_ids.amount)"/>
|
|
<AliquotaIVA t-if="line.tax_ids.amount_type != 'percent'" t-esc="'0.00'"/>
|
|
<Natura t-if="line.tax_ids.l10n_it_has_exoneration" t-esc="line.tax_ids.l10n_it_kind_exoneration"/>
|
|
</DettaglioLinee>
|
|
</template>
|
|
|
|
<template id="account_invoice_it_FatturaPA_sede">
|
|
<Sede>
|
|
<Indirizzo><t t-if="partner.street" t-esc="partner.street"/> <t t-if="partner.street2" t-esc="partner.street2"/></Indirizzo>
|
|
<CAP><t t-if="partner.country_id.code != 'IT'" t-esc="'00000'"/><t t-else="" t-esc="partner.zip"/></CAP>
|
|
<Comune t-esc="partner.city"/>
|
|
<Provincia t-if="partner.country_id.code == 'IT'" t-esc="partner.state_id.code"/>
|
|
<Nazione t-esc="partner.country_id.code"/>
|
|
</Sede>
|
|
</template>
|
|
|
|
<template id="account_invoice_it_FatturaPA_export">
|
|
<t t-set="currency" t-value="record.currency_id or record.company_currency_id"/>
|
|
<t t-set="bank" t-value="record.partner_bank_id"/>
|
|
<p:FatturaElettronica t-att-versione="formato_trasmissione" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2/Schema_del_file_xml_FatturaPA_versione_1.2.xsd">
|
|
<FatturaElettronicaHeader>
|
|
<DatiTrasmissione>
|
|
<IdTrasmittente>
|
|
<IdPaese t-esc="get_vat_country(record.company_id.vat)"/>
|
|
<IdCodice t-esc="record.company_id.l10n_it_codice_fiscale"/>
|
|
</IdTrasmittente>
|
|
<ProgressivoInvio t-esc="record.name.replace('/','')[-10:]"/>
|
|
<FormatoTrasmissione t-esc="formato_trasmissione"/>
|
|
<CodiceDestinatario t-if="record.commercial_partner_id.l10n_it_pa_index and record.commercial_partner_id.country_id.code == 'IT'" t-esc="record.commercial_partner_id.l10n_it_pa_index.upper()"/>
|
|
<CodiceDestinatario t-if="not record.commercial_partner_id.l10n_it_pa_index and record.commercial_partner_id.country_id.code == 'IT'" t-esc="'0000000'"/>
|
|
<CodiceDestinatario t-if="record.commercial_partner_id.country_id.code != 'IT'" t-esc="'XXXXXXX'"/>
|
|
<ContattiTrasmittente>
|
|
<Telefono t-if="format_phone(record.company_id.partner_id.phone)" t-esc="format_phone(record.company_id.partner_id.phone)"/>
|
|
<Telefono t-if="not format_phone(record.company_id.partner_id.phone) and format_phone(record.company_id.partner_id.mobile)" t-esc="format_phone(record.company_id.partner_id.mobile)"/>
|
|
<Email t-if="record.company_id.email" t-esc="record.company_id.email"/>
|
|
</ContattiTrasmittente>
|
|
<PECDestinatario t-if="record.commercial_partner_id.l10n_it_pec_email" t-esc="record.commercial_partner_id.l10n_it_pec_email"/>
|
|
</DatiTrasmissione>
|
|
<CedentePrestatore>
|
|
<DatiAnagrafici>
|
|
<IdFiscaleIVA>
|
|
<IdPaese t-esc="get_vat_country(record.company_id.vat)"/>
|
|
<IdCodice t-esc="get_vat_number(record.company_id.vat)"/>
|
|
</IdFiscaleIVA>
|
|
<CodiceFiscale t-if="record.company_id.l10n_it_codice_fiscale" t-esc="record.company_id.l10n_it_codice_fiscale"/>
|
|
<Anagrafica>
|
|
<Denominazione t-esc="record.company_id.partner_id.display_name"/>
|
|
</Anagrafica>
|
|
<RegimeFiscale t-esc="record.company_id.l10n_it_tax_system"/>
|
|
</DatiAnagrafici>
|
|
<t t-call="l10n_it_edi.account_invoice_it_FatturaPA_sede">
|
|
<t t-set="partner" t-value="record.company_id.partner_id"/>
|
|
</t>
|
|
<IscrizioneREA t-if="record.company_id.l10n_it_has_eco_index">
|
|
<!--1.2.4-->
|
|
<Ufficio t-esc="record.company_id.l10n_it_eco_index_office.code"/>
|
|
<NumeroREA t-esc="record.company_id.l10n_it_eco_index_number"/>
|
|
<CapitaleSociale t-if="record.company_id.l10n_it_eco_index_share_capital != 0" t-esc="format_numbers_two(record.company_id.l10n_it_eco_index_share_capital)"/>
|
|
<SocioUnico t-if="record.company_id.l10n_it_eco_index_sole_shareholder != 'NO'" t-esc="record.company_id.l10n_it_eco_index_sole_shareholder"/>
|
|
<StatoLiquidazione t-esc="record.company_id.l10n_it_eco_index_liquidation_state"/>
|
|
</IscrizioneREA>
|
|
</CedentePrestatore>
|
|
<RappresentanteFiscale t-if="record.company_id.l10n_it_has_tax_representative">
|
|
<!--1.3-->
|
|
<DatiAnagrafici>
|
|
<IdFiscaleIVA>
|
|
<IdPaese t-esc="get_vat_country(record.company_id.l10n_it_tax_representative_partner_id.vat)"/>
|
|
<IdCodice t-esc="get_vat_number(record.company_id.l10n_it_tax_representative_partner_id.vat)"/>
|
|
</IdFiscaleIVA>
|
|
<CodiceFiscale t-if="record.company_id.l10n_it_tax_representative_partner_id.l10n_it_codice_fiscale" t-esc="record.company_id.l10n_it_tax_representative_partner_id.l10n_it_codice_fiscale"/>
|
|
<Anagrafica>
|
|
<Denominazione t-if="record.company_id.l10n_it_tax_representative_partner_id.is_company" t-esc="record.company_id.l10n_it_tax_representative_partner_id.display_name"/>
|
|
<Nome t-if="not record.company_id.l10n_it_tax_representative_partner_id.is_company" t-esc="' '.join(record.company_id.l10n_it_tax_representative_partner_id.name.split()[:1])"/>
|
|
<Cognome t-if="not record.company_id.l10n_it_tax_representative_partner_id.is_company" t-esc="' '.join(record.company_id.l10n_it_tax_representative_partner_id.name.split()[1:])"/>
|
|
</Anagrafica>
|
|
</DatiAnagrafici>
|
|
</RappresentanteFiscale>
|
|
<CessionarioCommittente>
|
|
<DatiAnagrafici>
|
|
<IdFiscaleIVA t-if="record.commercial_partner_id.vat and in_eu(record.commercial_partner_id)">
|
|
<IdPaese t-esc="get_vat_country(record.commercial_partner_id.vat)"/>
|
|
<IdCodice t-esc="get_vat_number(record.commercial_partner_id.vat)"/>
|
|
</IdFiscaleIVA>
|
|
<IdFiscaleIVA t-if="record.commercial_partner_id.vat and not in_eu(record.commercial_partner_id)">
|
|
<IdPaese t-esc="record.commercial_partner_id.country_id.code"/>
|
|
<IdCodice t-esc="'OO99999999999'"/>
|
|
</IdFiscaleIVA>
|
|
<IdFiscaleIVA t-if="not record.commercial_partner_id.vat and record.commercial_partner_id.country_id.code != 'IT'">
|
|
<IdCodice t-esc="'0000000'"/>
|
|
</IdFiscaleIVA>
|
|
<CodiceFiscale t-if="not record.commercial_partner_id.vat" t-esc="record.commercial_partner_id.l10n_it_codice_fiscale"/>
|
|
<CodiceFiscale t-if="not record.commercial_partner_id.vat and not record.commercial_partner_id.l10n_it_codice_fiscale" t-esc="99999999999"/>
|
|
<Anagrafica>
|
|
<Denominazione t-if="record.commercial_partner_id.is_company" t-esc="record.commercial_partner_id.display_name"/>
|
|
<Nome t-if="not record.commercial_partner_id.is_company" t-esc="' '.join(record.commercial_partner_id.name.split()[:1])"/>
|
|
<Cognome t-if="not record.commercial_partner_id.is_company" t-esc="' '.join(record.commercial_partner_id.name.split()[1:])"/>
|
|
</Anagrafica>
|
|
</DatiAnagrafici>
|
|
<t t-call="l10n_it_edi.account_invoice_it_FatturaPA_sede">
|
|
<t t-set="partner" t-value="record.commercial_partner_id"/>
|
|
</t>
|
|
</CessionarioCommittente>
|
|
</FatturaElettronicaHeader>
|
|
<FatturaElettronicaBody>
|
|
<DatiGenerali>
|
|
<DatiGeneraliDocumento>
|
|
<!--2.1.1-->
|
|
<TipoDocumento t-esc="document_type"/>
|
|
<Divisa t-esc="currency.name"/>
|
|
<Data t-esc="format_date(record.invoice_date)"/>
|
|
<Numero t-esc="record.name[-20:]"/>
|
|
<DatiBollo t-if="record.l10n_it_stamp_duty">
|
|
<!--2.1.1.6-->
|
|
<BolloVirtuale>SI</BolloVirtuale>
|
|
<ImportoBollo t-esc="format_numbers(record.l10n_it_stamp_duty)"/>
|
|
</DatiBollo>
|
|
</DatiGeneraliDocumento>
|
|
<DatiOrdineAcquisto t-if="record.ref">
|
|
<IdDocumento t-esc="record.ref" />
|
|
</DatiOrdineAcquisto>
|
|
<DatiDDT t-if="record.l10n_it_ddt_id">
|
|
<!--2.1.8-->
|
|
<NumeroDDT t-esc="record.l10n_it_ddt_id.name"/>
|
|
<DataDDT t-esc="format_date(record.l10n_it_ddt_id.date)"/>
|
|
</DatiDDT>
|
|
</DatiGenerali>
|
|
<DatiBeniServizi>
|
|
<!-- Invoice lines. -->
|
|
<t t-set="line_counter" t-value="0"/>
|
|
<t t-foreach="record.invoice_line_ids.filtered(lambda l: not l.display_type)" t-as="line">
|
|
<t t-set="line_counter" t-value="line_counter + 1"/>
|
|
<t t-call="l10n_it_edi.account_invoice_line_it_FatturaPA"/>
|
|
</t>
|
|
<t t-foreach="record.line_ids.filtered(lambda line: line.tax_line_id)" t-as="tax_line">
|
|
<DatiRiepilogo>
|
|
<!--2.2.2-->
|
|
<AliquotaIVA t-esc="format_numbers(tax_line.tax_line_id.amount)"/>
|
|
<Natura t-if="tax_line.tax_line_id.l10n_it_has_exoneration" t-esc="tax_line.tax_line_id.l10n_it_kind_exoneration"/>
|
|
<ImponibileImporto t-esc="format_monetary(tax_line.tax_base_amount, currency)"/>
|
|
<Imposta t-esc="format_monetary(tax_line.price_unit, currency)"/>
|
|
<EsigibilitaIVA t-if="not tax_line.tax_line_id.l10n_it_has_exoneration or tax_line.tax_line_id.l10n_it_kind_exoneration=='N6'" t-esc="tax_line.tax_line_id.l10n_it_vat_due_date"/>
|
|
<RiferimentoNormativo t-if="tax_line.tax_line_id.l10n_it_has_exoneration" t-esc="tax_line.tax_line_id.l10n_it_law_reference"/>
|
|
</DatiRiepilogo>
|
|
</t>
|
|
|
|
</DatiBeniServizi>
|
|
<DatiPagamento>
|
|
<t t-set="payments" t-value="record.line_ids.filtered(lambda line: line.account_id.user_type_id.type in ('receivable', 'payable'))"/>
|
|
<CondizioniPagamento><t t-if="len(payments) == 1">TP02</t><t t-else="">TP01</t></CondizioniPagamento>
|
|
<DettaglioPagamento>
|
|
<t t-set="company_bank_account" t-value="record.partner_bank_id"/>
|
|
<ModalitaPagamento t-if="company_bank_account">MP05</ModalitaPagamento>
|
|
<DataScadenzaPagamento t-esc="format_date(record.invoice_date_due)"/>
|
|
<ImportoPagamento t-esc="format_numbers_two(record.amount_total)"/>
|
|
<IstitutoFinanziario t-if="company_bank_account.bank_id" t-esc="company_bank_account.bank_id.name[:80]"/>
|
|
<IBAN t-if="company_bank_account.acc_type == 'iban'" t-esc="company_bank_account.sanitized_acc_number"/>
|
|
<BIC t-if="company_bank_account.acc_type == 'bank' and company_bank_account.bank_id.bic" t-esc="company_bank_account.bank_id.bic"/>
|
|
<CodicePagamento t-esc="record.payment_reference[:60]"/>
|
|
</DettaglioPagamento>
|
|
</DatiPagamento>
|
|
<Allegati t-if="pdf">
|
|
<NomeAttachment t-esc="pdf_name"/>
|
|
<FormatoAttachment>PDF</FormatoAttachment>
|
|
<Attachment t-esc="pdf"/>
|
|
</Allegati>
|
|
</FatturaElettronicaBody>
|
|
</p:FatturaElettronica>
|
|
</template>
|
|
</data>
|
|
</odoo>
|