Skip to content

Commit

Permalink
[IMP] supporto per la conversione degli importi in EUR per fatture in…
Browse files Browse the repository at this point in the history
… valuta estera
  • Loading branch information
TheMule71 committed Jan 14, 2022
1 parent fb6e9b2 commit d3f3aff
Show file tree
Hide file tree
Showing 8 changed files with 349 additions and 169 deletions.
43 changes: 37 additions & 6 deletions l10n_it_fatturapa_out/data/invoice_it_template.xml
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,9 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
<t
t-call="l10n_it_fatturapa_out.account_invoice_line_it_sconto_maggiorazione"
/>
<PrezzoTotale t-esc="format_monetary(line.price_subtotal, currency)" />
<PrezzoTotale
t-esc="format_monetary(fpa_to_eur(line.price_subtotal, record), euro)"
/>
<AliquotaIVA
t-if="not line_is_section_note"
t-esc="format_numbers(tax_ids.amount)"
Expand Down Expand Up @@ -205,6 +207,14 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
>
<TipoDato>INVCONT</TipoDato>
</AltriDatiGestionali>
<AltriDatiGestionali t-if="line.currency_id != euro">
<TipoDato>Valuta</TipoDato>
<RiferimentoTesto t-esc="line.currency_id.name" />
<RiferimentoNumero
t-esc="format_price(line, original_currency=True)"
/>
<RiferimentoData t-esc="format_date(record.date)" />
</AltriDatiGestionali>
</DettaglioLinee>
</template>

Expand All @@ -217,9 +227,11 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
<!-- <SpeseAccessorie t-esc=""/>-->
<!-- <Arrotondamento t-esc=""/>-->
<ImponibileImporto
t-esc="format_monetary(tax_line.tax_base_amount, currency)"
t-esc="format_monetary(fpa_to_eur(tax_line.tax_base_amount, record), euro)"
/>
<Imposta
t-esc="format_monetary(fpa_to_eur(tax_line.price_total, record), euro)"
/>
<Imposta t-esc="format_monetary(tax_line.price_total, currency)" />
<EsigibilitaIVA t-if="tax.payability" t-esc="tax.payability" />
<RiferimentoNormativo
t-if="tax.law_reference"
Expand Down Expand Up @@ -530,13 +542,21 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
t-set="currency"
t-value="record.currency_id or record.company_currency_id"
/>
<t t-set="euro" t-value="env.ref('base.EUR')" />
<t t-set="bank" t-value="record.partner_bank_id" />
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<!--2.1.1-->
<TipoDocumento t-esc="record.fiscal_document_type_id.code" />
<Divisa t-esc="currency.name" />
<Divisa
t-if="record.company_id.xml_divisa_value == 'keep_orig'"
t-esc="currency.name"
/>
<Divisa
t-if="not record.company_id.xml_divisa_value == 'keep_orig'"
t-esc="euro.name"
/>
<Data t-esc="format_date(record.invoice_date)" />
<Numero t-esc="record.name" />
<t
Expand All @@ -554,8 +574,13 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
<!-- <Importo t-esc=""/>-->
<!-- </ScontoMaggiorazione>-->
<ImportoTotaleDocumento
t-if="record.company_id.xml_divisa_value == 'keep_orig'"
t-esc="format_numbers_two(record.amount_total)"
/>
<ImportoTotaleDocumento
t-if="not record.company_id.xml_divisa_value == 'keep_orig'"
t-esc="format_numbers_two(fpa_to_eur(record.amount_total, record))"
/>
<!-- <Arrotondamento t-esc=""/>-->
<t t-foreach="get_causale(record)" t-as="causale">
<Causale t-if="causale" t-esc="causale" />
Expand Down Expand Up @@ -600,10 +625,10 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
<!-- <SpeseAccessorie t-esc=""/>-->
<!-- <Arrotondamento t-esc=""/>-->
<ImponibileImporto
t-esc="format_monetary(tax_data['ImponibileImporto'], currency)"
t-esc="format_monetary(fpa_to_eur(tax_data['ImponibileImporto'], record), euro)"
/>
<Imposta
t-esc="format_monetary(tax_data['Imposta'], currency)"
t-esc="format_monetary(fpa_to_eur(tax_data['Imposta'], record), euro)"
/>
<EsigibilitaIVA
t-if="tax_data.get('EsigibilitaIVA', False)"
Expand Down Expand Up @@ -646,8 +671,14 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
t-esc="format_date(move_line.date_maturity)"
/>
<ImportoPagamento
t-if="record.company_id.xml_divisa_value == 'keep_orig'"
t-esc="format_numbers_two(move_line.amount_currency or move_line.debit)"
/>
<ImportoPagamento
t-if="not record.company_id.xml_divisa_value == 'keep_orig'"
t-esc="format_numbers_two(fpa_to_eur(move_line.amount_currency or move_line.debit, record))"
/>

<!-- <CodUfficioPostale t-esc=""/>-->
<!-- <CognomeQuietanzante t-esc=""/>-->
<!-- <NomeQuietanzante t-esc=""/>-->
Expand Down
20 changes: 20 additions & 0 deletions l10n_it_fatturapa_out/models/company.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
# Copyright 2019 Roberto Fichera <roberto.fichera@levelprime.com>
# Copyright 2022 Marco Colombo <marco.colombo@phi.technology>
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).

from odoo import _, api, fields, models
from odoo.exceptions import ValidationError

_DEFAULT_XML_DIVISA_VALUE = "force_eur"


class ResCompany(models.Model):
_inherit = "res.company"
Expand All @@ -15,6 +18,15 @@ class ResCompany(models.Model):
"in a single XML file. 0=Unlimited",
)

xml_divisa_value = fields.Selection(
[
("keep_orig", "Keep original"),
("force_eur", "Force euro"),
],
string="XML Divisa value",
default=_DEFAULT_XML_DIVISA_VALUE,
)

@api.constrains("max_invoice_in_xml")
def _validate_max_invoice_in_xml(self):
if self.max_invoice_in_xml < 0:
Expand All @@ -33,12 +45,20 @@ class AccountConfigSettings(models.TransientModel):
related="company_id.max_invoice_in_xml", readonly=False
)

xml_divisa_value = fields.Selection(
related="company_id.xml_divisa_value", readonly=False
)

@api.onchange("company_id")
def onchange_company_id(self):
res = super(AccountConfigSettings, self).onchange_company_id()
if self.company_id:
company = self.company_id
self.max_invoice_in_xml = company.max_invoice_in_xml or 0
self.xml_divisa_value = (
company.xml_divisa_value or _DEFAULT_XML_DIVISA_VALUE
)
else:
self.max_invoice_in_xml = 0
self.xml_divisa_value = _DEFAULT_XML_DIVISA_VALUE
return res
104 changes: 0 additions & 104 deletions l10n_it_fatturapa_out/tests/data/IT06363391001_00009.xml

This file was deleted.

105 changes: 105 additions & 0 deletions l10n_it_fatturapa_out/tests/data/IT06363391001_00015.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
<?xml version="1.0"?>
<ns1:FatturaElettronica xmlns:ns1="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" versione="FPA12">
<FatturaElettronicaHeader>
<DatiTrasmissione>
<IdTrasmittente>
<IdPaese>IT</IdPaese>
<IdCodice>06363391001</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>00015</ProgressivoInvio>
<FormatoTrasmissione>FPA12</FormatoTrasmissione>
<CodiceDestinatario>UFPQ1O</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>06543534343</Telefono>
<Email>info@yourcompany.example.com</Email>
</ContattiTrasmittente>
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>06363391001</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>YourCompany</Denominazione>
</Anagrafica>
<RegimeFiscale>RF01</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>Via Milano, 1</Indirizzo>
<CAP>00100</CAP>
<Comune>Roma</Comune>
<Provincia>AK</Provincia>
<Nazione>IT</Nazione>
</Sede>
<Contatti>
<Telefono>06543534343</Telefono>
<Email>info@yourcompany.example.com</Email>
</Contatti>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>06363391001</IdCodice>
</IdFiscaleIVA>
<CodiceFiscale>06363391001</CodiceFiscale>
<Anagrafica>
<Denominazione>Public Administration</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>Via Roma, 1</Indirizzo>
<CAP>10100</CAP>
<Comune>Torino</Comune>
<Provincia>AK</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2021-12-16</Data>
<Numero>INV/2021/12/0001</Numero>
<ImportoTotaleDocumento>14.00</ImportoTotaleDocumento>
<Art73>SI</Art73>
</DatiGeneraliDocumento>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>Cabinet with Doors</Descrizione>
<Quantita>1.000</Quantita>
<UnitaMisura>Unit(s)</UnitaMisura>
<PrezzoUnitario>14.00000</PrezzoUnitario>
<PrezzoTotale>14.00</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N3.2</Natura>
<AltriDatiGestionali>
<TipoDato>Valuta</TipoDato>
<RiferimentoTesto>USD</RiferimentoTesto>
<RiferimentoNumero>16.38000</RiferimentoNumero>
<RiferimentoData>2021-12-16</RiferimentoData>
</AltriDatiGestionali>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N3.2</Natura>
<ImponibileImporto>14.00</ImponibileImporto>
<Imposta>0.00</Imposta>
<RiferimentoNormativo>Not subject to VAT law</RiferimentoNormativo>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2022-01-31</DataScadenzaPagamento>
<ImportoPagamento>14.00</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</ns1:FatturaElettronica>
Loading

0 comments on commit d3f3aff

Please sign in to comment.