Skip to content

Commit

Permalink
[FIX] l10n_it_fatturapa_out: assign lineRef to docs
Browse files Browse the repository at this point in the history
FPA related documents that are associated to lines need
a lineRef, this is computed by the template by looping
over the lines.

This commit reverts a change made during the migration from
14.0 to 16.0. (0274a08)
  • Loading branch information
TheMule71 committed Mar 15, 2024
1 parent 90917e1 commit bceecf2
Show file tree
Hide file tree
Showing 3 changed files with 192 additions and 5 deletions.
10 changes: 5 additions & 5 deletions l10n_it_fatturapa_out/data/invoice_it_template.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,35 +38,35 @@ e 'line' per riga di fattura (a seconda del livello in cui sono chiamati)
t-foreach="line.related_documents.filtered(lambda doc: doc.type == 'order')"
t-as="doc"
>
<t t-set="doc_lineRef" t-value="line_counter" />
<t t-set="doc_lineRef" t-value="doc.setlineRef(line_counter)" />
<t t-set="related_orders" t-value="related_orders + doc" />
</t>
<t
t-foreach="line.related_documents.filtered(lambda doc: doc.type == 'contract')"
t-as="doc"
>
<t t-set="doc_lineRef" t-value="line_counter" />
<t t-set="doc_lineRef" t-value="doc.setlineRef(line_counter)" />
<t t-set="related_contracts" t-value="related_contracts + doc" />
</t>
<t
t-foreach="line.related_documents.filtered(lambda doc: doc.type == 'agreement')"
t-as="doc"
>
<t t-set="doc_lineRef" t-value="line_counter" />
<t t-set="doc_lineRef" t-value="doc.setlineRef(line_counter)" />
<t t-set="related_agreements" t-value="related_agreements + doc" />
</t>
<t
t-foreach="line.related_documents.filtered(lambda doc: doc.type == 'reception')"
t-as="doc"
>
<t t-set="doc_lineRef" t-value="line_counter" />
<t t-set="doc_lineRef" t-value="doc.setlineRef(line_counter)" />
<t t-set="related_receptions" t-value="related_receptions + doc" />
</t>
<t
t-foreach="line.related_documents.filtered(lambda doc: doc.type == 'invoice')"
t-as="doc"
>
<t t-set="doc_lineRef" t-value="line_counter" />
<t t-set="doc_lineRef" t-value="doc.setlineRef(line_counter)" />
<t t-set="related_invoices" t-value="related_invoices + doc" />
</t>
</t>
Expand Down
113 changes: 113 additions & 0 deletions l10n_it_fatturapa_out/tests/data/IT06363391001_00017.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8"?>
<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>00017</ProgressivoInvio>
<FormatoTrasmissione>FPA12</FormatoTrasmissione>
<CodiceDestinatario>UFPQ1O</CodiceDestinatario>
<ContattiTrasmittente>
<Telefono>06543534343</Telefono>
<Email>[email protected]</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>[email protected]</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>2016-06-15</Data>
<Numero>INV/2016/0014</Numero>
<ImportoTotaleDocumento>17.08</ImportoTotaleDocumento>
<Causale>prima riga</Causale>
<Causale>seconda riga</Causale>
<Art73>SI</Art73>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto>
<RiferimentoNumeroLinea>2</RiferimentoNumeroLinea>
<IdDocumento>PO123</IdDocumento>
<CodiceCUP>456</CodiceCUP>
<CodiceCIG>123</CodiceCIG>
</DatiOrdineAcquisto>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>Mouse, Optical</Descrizione>
<Quantita>1.000</Quantita>
<UnitaMisura>Unit(s)</UnitaMisura>
<PrezzoUnitario>10.00000</PrezzoUnitario>
<PrezzoTotale>10.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>Zed+ Antivirus</Descrizione>
<Quantita>1.000</Quantita>
<UnitaMisura>Unit(s)</UnitaMisura>
<PrezzoUnitario>4.00000</PrezzoUnitario>
<PrezzoTotale>4.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>14.00</ImponibileImporto>
<Imposta>3.08</Imposta>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP02</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP05</ModalitaPagamento>
<DataScadenzaPagamento>2016-07-31</DataScadenzaPagamento>
<ImportoPagamento>17.08</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</ns1:FatturaElettronica>
74 changes: 74 additions & 0 deletions l10n_it_fatturapa_out/tests/test_fatturapa_xml_validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -770,6 +770,80 @@ def test_16_xml_export(self):
xml_content = base64.decodebytes(attachment.datas)
self.check_content(xml_content, "IT06363391001_00016.xml")

def test_17_line_related_documents(self):
# this test is similar to test_2_xml_export, but the related document
# refers to a line, not the whole invoice
invoice = self.invoice_model.create(
{
"name": "INV/2016/0014",
"invoice_date": "2016-06-15",
"partner_id": self.res_partner_fatturapa_0.id,
"journal_id": self.sales_journal.id,
# "account_id": self.a_recv.id,
"invoice_payment_term_id": self.account_payment_term.id,
"user_id": self.user_demo.id,
"move_type": "out_invoice",
"currency_id": self.EUR.id,
"narration": "prima riga\nseconda riga",
"invoice_line_ids": [
(
0,
0,
{
"account_id": self.a_sale.id,
"product_id": self.product_product_10.id,
"name": "Mouse, Optical",
"quantity": 1,
"product_uom_id": self.product_uom_unit.id,
"price_unit": 10,
"tax_ids": [(6, 0, {self.tax_22.id})],
"sequence": 10,
},
),
(
0,
0,
{
"account_id": self.a_sale.id,
"product_id": self.product_order_01.id,
"name": "Zed+ Antivirus",
"quantity": 1,
"product_uom_id": self.product_uom_unit.id,
"price_unit": 4,
"tax_ids": [(6, 0, {self.tax_22.id})],
"sequence": 20,
"related_documents": [
(
0,
0,
{
"type": "order",
"name": "PO123",
"cig": "123",
"cup": "456",
},
)
],
},
),
],
}
)
invoice._post()
# by default, lineRef is assigned from sequence, potentially a wrong guess
self.assertEqual(invoice.line_ids[1].related_documents[0].lineRef, 20)

res = self.run_wizard(invoice.id)

# lineRef is assigned by the template to its actual output value in the XML
self.assertEqual(invoice.line_ids[1].related_documents[0].lineRef, 2)

attachment = self.attach_model.browse(res["res_id"])
self.set_e_invoice_file_id(attachment, "IT06363391001_00017.xml")

xml_content = base64.decodebytes(attachment.datas)
self.check_content(xml_content, "IT06363391001_00017.xml")

def test_no_tax_fail(self):
"""
- create an invoice with a product line without taxes
Expand Down

0 comments on commit bceecf2

Please sign in to comment.