[FIX] l10n_it_edi_withholding: Fix Natura field on Pension Fund
Reproduce:
Install l10n_it_edi_withholding
Have an invoice with lines with two taxes:
. 4% INPS
. 0% with exoneration and exoneration kind
Post
Send to Tax Agency
Tax Agency rejects it
The Exoneration Kind tag is related to the VAT tax it is applied to, not
to the Pension Fund tax itself, so we have to modify the template.
A test has been added for the case.
Task link: https://www.odoo.com/web#model=project.task&id=3495670
opw-3495670
closes odoo/odoo#142543
X-original-commit: cbbdd974da4ce55a7b10fba39db4f9278f161808
Signed-off-by: Josse Colpaert <jco@odoo.com>
Signed-off-by: Paolo Gatti (pgi) <pgi@odoo.com>
This commit is contained in:
@@ -21,8 +21,8 @@
|
||||
<ImponibileCassa t-esc="format_monetary(pension_fund.base_amount, currency)"/>
|
||||
<AliquotaIVA t-esc="format_numbers(pension_fund.vat_tax.amount or 0.0)"/>
|
||||
<Ritenuta t-if="pension_fund.withholding_tax and pension_fund.withholding_tax.sequence > pension_fund.tax.sequence">SI</Ritenuta>
|
||||
<Natura t-if="pension_fund.tax.l10n_it_exempt_reason" t-esc="format_alphanumeric(pension_fund.tax.l10n_it_exempt_reason)"/>
|
||||
<RiferimentoAmministrazione t-if="pension_fund.tax.description" t-esc="format_alphanumeric(pension_fund.tax.description, 20)"/>
|
||||
<Natura t-if="pension_fund.vat_tax.l10n_it_exempt_reason" t-esc="format_alphanumeric(pension_fund.vat_tax.l10n_it_exempt_reason)"/>
|
||||
<RiferimentoAmministrazione t-if="pension_fund.vat_tax.description" t-esc="format_alphanumeric(pension_fund.vat_tax.description, 20)"/>
|
||||
</DatiCassaPrevidenziale>
|
||||
</t>
|
||||
</xpath>
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<p:FatturaElettronica xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 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" versione="FPR12">
|
||||
<FatturaElettronicaHeader>
|
||||
<DatiTrasmissione>
|
||||
<IdTrasmittente>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>01234560157</IdCodice>
|
||||
</IdTrasmittente>
|
||||
<ProgressivoInvio>___ignore___</ProgressivoInvio>
|
||||
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
|
||||
<CodiceDestinatario>0000000</CodiceDestinatario>
|
||||
<ContattiTrasmittente>
|
||||
<Telefono>0266766700</Telefono>
|
||||
<Email>test@test.it</Email>
|
||||
</ContattiTrasmittente>
|
||||
</DatiTrasmissione>
|
||||
<CedentePrestatore>
|
||||
<DatiAnagrafici>
|
||||
<IdFiscaleIVA>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>01234560157</IdCodice>
|
||||
</IdFiscaleIVA>
|
||||
<CodiceFiscale>01234560157</CodiceFiscale>
|
||||
<Anagrafica>
|
||||
<Denominazione>company_2_data</Denominazione>
|
||||
</Anagrafica>
|
||||
<RegimeFiscale>RF01</RegimeFiscale>
|
||||
</DatiAnagrafici>
|
||||
<Sede>
|
||||
<Indirizzo>1234 Test Street </Indirizzo>
|
||||
<CAP>12345</CAP>
|
||||
<Comune>Prova</Comune>
|
||||
<Nazione>IT</Nazione>
|
||||
</Sede>
|
||||
</CedentePrestatore>
|
||||
<CessionarioCommittente>
|
||||
<DatiAnagrafici>
|
||||
<IdFiscaleIVA>
|
||||
<IdPaese>IT</IdPaese>
|
||||
<IdCodice>00465840031</IdCodice>
|
||||
</IdFiscaleIVA>
|
||||
<CodiceFiscale>93026890017</CodiceFiscale>
|
||||
<Anagrafica>
|
||||
<Denominazione>Alessi</Denominazione>
|
||||
</Anagrafica>
|
||||
</DatiAnagrafici>
|
||||
<Sede>
|
||||
<Indirizzo>Via Privata Alessi 6</Indirizzo>
|
||||
<CAP>28887</CAP>
|
||||
<Comune>Milan</Comune>
|
||||
<Nazione>IT</Nazione>
|
||||
</Sede>
|
||||
</CessionarioCommittente>
|
||||
</FatturaElettronicaHeader>
|
||||
<FatturaElettronicaBody>
|
||||
<DatiGenerali>
|
||||
<DatiGeneraliDocumento>
|
||||
<TipoDocumento>TD01</TipoDocumento>
|
||||
<Divisa>EUR</Divisa>
|
||||
<Data>___ignore___</Data>
|
||||
<Numero>___ignore___</Numero>
|
||||
<DatiCassaPrevidenziale>
|
||||
<TipoCassa>TC22</TipoCassa>
|
||||
<AlCassa>4.00</AlCassa>
|
||||
<ImportoContributoCassa>30.00</ImportoContributoCassa>
|
||||
<ImponibileCassa>750.00</ImponibileCassa>
|
||||
<AliquotaIVA>0.00</AliquotaIVA>
|
||||
<Natura>N2.2</Natura>
|
||||
</DatiCassaPrevidenziale>
|
||||
<ImportoTotaleDocumento>780.00</ImportoTotaleDocumento>
|
||||
</DatiGeneraliDocumento>
|
||||
</DatiGenerali>
|
||||
<DatiBeniServizi>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>1</NumeroLinea>
|
||||
<Descrizione>
|
||||
Ordinary accounting service for the year
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>350.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>350.00</PrezzoTotale>
|
||||
<AliquotaIVA>0.00</AliquotaIVA>
|
||||
<Natura>N2.2</Natura>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>2</NumeroLinea>
|
||||
<Descrizione>
|
||||
Balance deposit for the past year
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>300.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>300.00</PrezzoTotale>
|
||||
<AliquotaIVA>0.00</AliquotaIVA>
|
||||
<Natura>N2.2</Natura>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>3</NumeroLinea>
|
||||
<Descrizione>
|
||||
Ordinary accounting service for the trimester
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>50.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>50.00</PrezzoTotale>
|
||||
<AliquotaIVA>0.00</AliquotaIVA>
|
||||
<Natura>N2.2</Natura>
|
||||
</DettaglioLinee>
|
||||
<DettaglioLinee>
|
||||
<NumeroLinea>4</NumeroLinea>
|
||||
<Descrizione>
|
||||
Electronic invoices management
|
||||
</Descrizione>
|
||||
<Quantita>1.00</Quantita>
|
||||
<PrezzoUnitario>50.000000</PrezzoUnitario>
|
||||
<PrezzoTotale>50.00</PrezzoTotale>
|
||||
<AliquotaIVA>0.00</AliquotaIVA>
|
||||
<Natura>N2.2</Natura>
|
||||
</DettaglioLinee>
|
||||
<DatiRiepilogo>
|
||||
<AliquotaIVA>0.00</AliquotaIVA>
|
||||
<Natura>N2.2</Natura>
|
||||
<ImponibileImporto>780.00</ImponibileImporto>
|
||||
<Imposta>0.00</Imposta>
|
||||
<EsigibilitaIVA>I</EsigibilitaIVA>
|
||||
<RiferimentoNormativo>Fatture emesse o ricevute da contribuenti forfettari o minimi</RiferimentoNormativo>
|
||||
</DatiRiepilogo>
|
||||
</DatiBeniServizi>
|
||||
<DatiPagamento>
|
||||
<CondizioniPagamento>TP02</CondizioniPagamento>
|
||||
<DettaglioPagamento>
|
||||
<ModalitaPagamento>MP05</ModalitaPagamento>
|
||||
<DataScadenzaPagamento>___ignore___</DataScadenzaPagamento>
|
||||
<ImportoPagamento>780.00</ImportoPagamento>
|
||||
<CodicePagamento>___ignore___</CodicePagamento>
|
||||
</DettaglioPagamento>
|
||||
</DatiPagamento>
|
||||
</FatturaElettronicaBody>
|
||||
</p:FatturaElettronica>
|
||||
@@ -26,6 +26,17 @@ class TestWithholdingAndPensionFundTaxes(TestItEdi):
|
||||
cls.enasarco_sale_tax = find_tax_by_ref('enasarcov')
|
||||
cls.withholding_purchase_tax_23 = find_tax_by_ref('23awo')
|
||||
cls.enasarco_purchase_tax = find_tax_by_ref('enasarcoa')
|
||||
cls.inps_tax = find_tax_by_ref('4vinps')
|
||||
|
||||
cls.zero_tax = cls.env['account.tax'].with_company(cls.company).create({
|
||||
'name': 'ZeroTax',
|
||||
'sequence': 31,
|
||||
'type_tax_use': 'sale',
|
||||
'amount': 0.0,
|
||||
'amount_type': 'percent',
|
||||
'l10n_it_exempt_reason': 'N2.2',
|
||||
'l10n_it_law_reference': 'Fatture emesse o ricevute da contribuenti forfettari o minimi',
|
||||
})
|
||||
|
||||
cls.withholding_sale_line = {
|
||||
'name': 'withholding_line',
|
||||
@@ -56,6 +67,12 @@ class TestWithholdingAndPensionFundTaxes(TestItEdi):
|
||||
])]
|
||||
}
|
||||
|
||||
cls.inps_sale_line = {
|
||||
'name': 'inps_line',
|
||||
'quantity': 1,
|
||||
'tax_ids': [(6, 0, [cls.inps_tax.id, cls.zero_tax.id])]
|
||||
}
|
||||
|
||||
invoice_data = cls.get_real_client_invoice_data()
|
||||
|
||||
cls.withholding_tax_invoice = cls.env['account.move'].with_company(cls.company).create({
|
||||
@@ -103,9 +120,25 @@ class TestWithholdingAndPensionFundTaxes(TestItEdi):
|
||||
]
|
||||
})
|
||||
|
||||
cls.inps_tax_invoice = cls.env['account.move'].with_company(cls.company).create({
|
||||
'move_type': 'out_invoice',
|
||||
'company_id': cls.company.id,
|
||||
'partner_id': cls.italian_partner_a.id,
|
||||
'invoice_date': datetime.date(2022, 3, 24),
|
||||
'invoice_date_due': datetime.date(2022, 3, 24),
|
||||
'invoice_line_ids': [
|
||||
(0, 0, {
|
||||
**cls.inps_sale_line,
|
||||
'name': name,
|
||||
'price_unit': price,
|
||||
}) for (name, price) in invoice_data.lines
|
||||
]
|
||||
})
|
||||
|
||||
cls.withholding_tax_invoice._post()
|
||||
cls.pension_fund_tax_invoice._post()
|
||||
cls.enasarco_tax_invoice._post()
|
||||
cls.inps_tax_invoice._post()
|
||||
|
||||
cls.module = 'l10n_it_edi_withholding'
|
||||
|
||||
@@ -261,3 +294,20 @@ class TestWithholdingAndPensionFundTaxes(TestItEdi):
|
||||
self.assertEqual(self.enasarco_purchase_tax, enasarco_imported_tax)
|
||||
self.assertEqual(-8.5, enasarco_imported_tax.amount)
|
||||
self.assertEqual(self.withholding_purchase_tax_23, line.tax_ids.filtered(lambda x: x.l10n_it_withholding_reason == 'ZO'))
|
||||
|
||||
def test_inps_tax_export(self):
|
||||
"""
|
||||
Invoice
|
||||
-----------------------------------------------------------------
|
||||
Ordinary accounting service for the year 350.00
|
||||
Balance deposit for the past year 300.00
|
||||
Ordinary accounting service for the trimester 50.00
|
||||
Electronic invoices management 50.00
|
||||
-----------------------------------------------------------------
|
||||
Total untaxed: 750.00
|
||||
VAT: 0% of Untaxed Amount 0.00
|
||||
INPS: 4% of Untaxed Amount 30.00
|
||||
Document total: Taxed Amount 780.00
|
||||
Payment amount: Document total 780.00
|
||||
"""
|
||||
self._assert_export_invoice(self.inps_tax_invoice, 'inps_tax_invoice.xml')
|
||||
|
||||
Reference in New Issue
Block a user