summaryrefslogtreecommitdiff
path: root/addons/l10n_it_edi/data
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/l10n_it_edi/data
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/l10n_it_edi/data')
-rw-r--r--addons/l10n_it_edi/data/account_edi_data.xml11
-rw-r--r--addons/l10n_it_edi/data/account_invoice_demo.xml33
-rw-r--r--addons/l10n_it_edi/data/invoice_it_template.xml210
3 files changed, 254 insertions, 0 deletions
diff --git a/addons/l10n_it_edi/data/account_edi_data.xml b/addons/l10n_it_edi/data/account_edi_data.xml
new file mode 100644
index 00000000..fb454fff
--- /dev/null
+++ b/addons/l10n_it_edi/data/account_edi_data.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <data>
+
+ <record id="edi_fatturaPA" model="account.edi.format">
+ <field name="name">Fattura PA (IT)</field>
+ <field name="code">fattura_pa</field>
+ </record>
+
+ </data>
+</odoo> \ No newline at end of file
diff --git a/addons/l10n_it_edi/data/account_invoice_demo.xml b/addons/l10n_it_edi/data/account_invoice_demo.xml
new file mode 100644
index 00000000..e298f08c
--- /dev/null
+++ b/addons/l10n_it_edi/data/account_invoice_demo.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <data noupdate="1">
+ <!-- add VAT, codice fiscal and tax system for main company -->
+ <record id="l10n_it.demo_company_it" model="res.company">
+ <field name="l10n_it_codice_fiscale">09814700101</field>
+ <field name="l10n_it_tax_system">RF01</field>
+ <field name="zip">12345</field>
+ </record>
+
+ <record id="partner_demo_it" model="res.partner">
+ <field name="name">Palazzo dell'Arte</field>
+ <field name="vat">IT00000010215</field>
+ <field name="street">Piazza Marconi 5</field>
+ <field name="city">Cremona</field>
+ <field name="country_id" ref="base.it"/>
+ <field name="state_id" ref="base.state_it_cr"/>
+ <field name="zip">26000</field>
+ <field name="email">info@partner.itexample.com</field>
+ <field name="website">www.itexample.com</field>
+ </record>
+
+ <record id="base.res_partner_2" model="res.partner">
+ <field name="vat">IT00079760328</field>
+ <field name="l10n_it_pa_index">XS00001</field>
+ </record>
+ <record id="base.res_partner_12" model="res.partner">
+ <field name="vat">IT00140390501</field>
+ <field name="l10n_it_pa_index">XS00001</field>
+ </record>
+
+ </data>
+</odoo>
diff --git a/addons/l10n_it_edi/data/invoice_it_template.xml b/addons/l10n_it_edi/data/invoice_it_template.xml
new file mode 100644
index 00000000..d151aee6
--- /dev/null
+++ b/addons/l10n_it_edi/data/invoice_it_template.xml
@@ -0,0 +1,210 @@
+<?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="get_vat_number(record.company_id.vat)"/>
+ </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 and not test_mode" 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>
+ <!-- 0% tax lines -->
+ <t t-foreach="tax_map" t-as="tax">
+ <DatiRiepilogo>
+ <AliquotaIVA t-esc="format_numbers(tax.amount)"/>
+ <Natura t-if="tax.l10n_it_has_exoneration" t-esc="tax.l10n_it_kind_exoneration"/>
+ <ImponibileImporto t-esc="format_monetary(tax_map[tax], currency)"/>
+ <Imposta t-esc="format_monetary(0.00, currency)"/>
+ <EsigibilitaIVA t-if="not tax.l10n_it_has_exoneration or tax.l10n_it_kind_exoneration=='N6'" t-esc="tax.l10n_it_vat_due_date"/>
+ <RiferimentoNormativo t-if="tax.l10n_it_has_exoneration" t-esc="tax.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>