1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-10 05:02:36 +01:00

FatturaPA tests

This commit is contained in:
David Bomba 2024-05-21 20:20:40 +10:00
parent 755e5c7846
commit 46a2cbc7b4
6 changed files with 210 additions and 37 deletions

View File

@ -90,7 +90,7 @@
"shopify/shopify-api": "^4.3",
"socialiteproviders/apple": "dev-master",
"socialiteproviders/microsoft": "^4.1",
"spatie/laravel-data": "^3.5",
"spatie/laravel-data": "^4",
"sprain/swiss-qr-bill": "^4.3",
"square/square": "30.0.0.*",
"stripe/stripe-php": "^12",

47
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "1356155e46e797b140685c105df97b8e",
"content-hash": "fa16490174cf1031f3b7de1dba43be9f",
"packages": [
{
"name": "adrienrn/php-mimetyper",
@ -5034,18 +5034,18 @@
"source": {
"type": "git",
"url": "https://github.com/invoiceninja/einvoice.git",
"reference": "39aec367c528ba66d923dc1d9e5c96f673bb46c7"
"reference": "8ce5e3d1b70ac6e4a417da0d1752bf8dfb477fa5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/invoiceninja/einvoice/zipball/39aec367c528ba66d923dc1d9e5c96f673bb46c7",
"reference": "39aec367c528ba66d923dc1d9e5c96f673bb46c7",
"url": "https://api.github.com/repos/invoiceninja/einvoice/zipball/8ce5e3d1b70ac6e4a417da0d1752bf8dfb477fa5",
"reference": "8ce5e3d1b70ac6e4a417da0d1752bf8dfb477fa5",
"shasum": ""
},
"require": {
"illuminate/collections": "^10.48",
"sabre/xml": "^4.0",
"spatie/laravel-data": "^3.6"
"spatie/laravel-data": "^4"
},
"require-dev": {
"nesbot/carbon": "^2",
@ -5075,7 +5075,7 @@
"source": "https://github.com/invoiceninja/einvoice/tree/main",
"issues": "https://github.com/invoiceninja/einvoice/issues"
},
"time": "2024-05-20T11:42:32+00:00"
"time": "2024-05-21T10:01:09+00:00"
},
{
"name": "invoiceninja/inspector",
@ -11926,20 +11926,20 @@
},
{
"name": "spatie/laravel-data",
"version": "3.12.0",
"version": "4.6.0",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-data.git",
"reference": "d44e04839407bc32b029be59ba80090a5f720e91"
"reference": "ee513f693f8ab8f915dc26cae079d7b2e5999a65"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/spatie/laravel-data/zipball/d44e04839407bc32b029be59ba80090a5f720e91",
"reference": "d44e04839407bc32b029be59ba80090a5f720e91",
"url": "https://api.github.com/repos/spatie/laravel-data/zipball/ee513f693f8ab8f915dc26cae079d7b2e5999a65",
"reference": "ee513f693f8ab8f915dc26cae079d7b2e5999a65",
"shasum": ""
},
"require": {
"illuminate/contracts": "^9.30|^10.0|^11.0",
"illuminate/contracts": "^10.0|^11.0",
"php": "^8.1",
"phpdocumentor/type-resolver": "^1.5",
"spatie/laravel-package-tools": "^1.9.0",
@ -11948,21 +11948,21 @@
"require-dev": {
"fakerphp/faker": "^1.14",
"friendsofphp/php-cs-fixer": "^3.0",
"inertiajs/inertia-laravel": "^0.6.3",
"inertiajs/inertia-laravel": "dev-master#4508fd1",
"livewire/livewire": "^3.0",
"mockery/mockery": "^1.6",
"nesbot/carbon": "^2.63",
"nette/php-generator": "^3.5",
"nunomaduro/larastan": "^2.0",
"orchestra/testbench": "^7.6|^8.0",
"pestphp/pest": "^1.22",
"pestphp/pest-plugin-laravel": "^1.3",
"orchestra/testbench": "^8.0|^9.0",
"pestphp/pest": "^2.31",
"pestphp/pest-plugin-laravel": "^2.0",
"pestphp/pest-plugin-livewire": "^2.1",
"phpbench/phpbench": "^1.2",
"phpstan/extension-installer": "^1.1",
"phpunit/phpunit": "^9.3",
"phpunit/phpunit": "^10.0",
"spatie/invade": "^1.0",
"spatie/laravel-typescript-transformer": "^2.1.6",
"spatie/pest-plugin-snapshots": "^1.1",
"spatie/phpunit-snapshot-assertions": "^4.2",
"spatie/laravel-typescript-transformer": "^2.3",
"spatie/pest-plugin-snapshots": "^2.1",
"spatie/test-time": "^1.2"
},
"type": "library",
@ -11975,8 +11975,7 @@
},
"autoload": {
"psr-4": {
"Spatie\\LaravelData\\": "src",
"Spatie\\LaravelData\\Database\\Factories\\": "database/factories"
"Spatie\\LaravelData\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@ -11999,7 +11998,7 @@
],
"support": {
"issues": "https://github.com/spatie/laravel-data/issues",
"source": "https://github.com/spatie/laravel-data/tree/3.12.0"
"source": "https://github.com/spatie/laravel-data/tree/4.6.0"
},
"funding": [
{
@ -12007,7 +12006,7 @@
"type": "github"
}
],
"time": "2024-04-24T09:27:45+00:00"
"time": "2024-05-03T15:01:04+00:00"
},
{
"name": "spatie/laravel-package-tools",

View File

@ -50,7 +50,6 @@ class FACT1Test extends TestCase
$this->assertIsArray($rules);
$validation_array = Invoice::validate($array);
$this->assertIsArray($validation_array);

View File

@ -320,6 +320,7 @@ class FatturaPATest extends TestCase
{
$files = [
'tests/Integration/Einvoice/samples/fatturapa0.xml',
'tests/Integration/Einvoice/samples/fatturapa1.xml',
'tests/Integration/Einvoice/samples/fatturapa2.xml',
'tests/Integration/Einvoice/samples/fatturapa3.xml',
@ -337,15 +338,20 @@ class FatturaPATest extends TestCase
$json = json_encode($xml);
$payload = json_decode($json, true);
nlog($payload);
$validation_array = false;
try {
nlog($f);
$rules = FatturaElettronica::getValidationRules($this->payload);
nlog($rules);
// nlog($rules);
$this->assertIsArray($rules);
$payload = FatturaElettronica::from($payload)->toArray();
// nlog($payload);
nlog($payload);
$this->assertIsArray($payload);
$validation_array = FatturaElettronica::validate($payload);

View File

@ -77,7 +77,7 @@
<TaxCategory>
<ID>S</ID> // this is a speciffic identifier for the VAT type <Percent>
19</Percent>
<TaxScheme>
<TaxScheme>
<ID>VAT</ID>
</TaxScheme>
</TaxCategory>
@ -92,21 +92,20 @@
</LegalMonetaryTotal>
<InvoiceLine>
<ID>1</ID>
<InvoicedQuantity unitCode="H87">1</InvoicedQuantity> // unitcode is a speciffic
identifier for the type of product <LineExtensionAmount currencyID="RON">
335.00</LineExtensionAmount>
<Item>
<InvoicedQuantity unitCode="H87">1</InvoicedQuantity> // unitcode is a speciffic identifier for the type of product
<LineExtensionAmount currencyID="RON">335.00</LineExtensionAmount>
<Item>
<Description>Some Description</Description>
<Name>Some product</Name>
<ClassifiedTaxCategory>
<ID>S</ID> // this is a speciffic identifier for the VAT type <Percent>
19</Percent>
<TaxScheme>
<ID>S</ID> // this is a speciffic identifier for the VAT type
<Percent>19</Percent>
<TaxScheme>
<ID>VAT</ID>
</TaxScheme>
</ClassifiedTaxCategory>
</Item>
<Price>
<Price>
<PriceAmount currencyID="RON">335</PriceAmount>
</Price>
</InvoiceLine>

View File

@ -0,0 +1,170 @@
<?xml version="1.0" encoding="UTF-8"?>
<p:FatturaElettronica versione="FPR12" 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>IT</IdPaese>
<IdCodice>01234567890</IdCodice>
</IdTrasmittente>
<ProgressivoInvio>00001</ProgressivoInvio>
<FormatoTrasmissione>FPR12</FormatoTrasmissione>
<CodiceDestinatario>ABC1234</CodiceDestinatario>
<ContattiTrasmittente />
</DatiTrasmissione>
<CedentePrestatore>
<DatiAnagrafici>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>01234567890</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>SOCIETA' ALPHA SRL</Denominazione>
</Anagrafica>
<RegimeFiscale>RF01</RegimeFiscale>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIALE ROMA 543</Indirizzo>
<CAP>07100</CAP>
<Comune>SASSARI</Comune>
<Provincia>SS</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CedentePrestatore>
<CessionarioCommittente>
<DatiAnagrafici>
<CodiceFiscale>09876543210</CodiceFiscale>
<Anagrafica>
<Denominazione>BETA GAMMA</Denominazione>
</Anagrafica>
</DatiAnagrafici>
<Sede>
<Indirizzo>VIA TORINO 38-B</Indirizzo>
<CAP>00145</CAP>
<Comune>ROMA</Comune>
<Provincia>RM</Provincia>
<Nazione>IT</Nazione>
</Sede>
</CessionarioCommittente>
</FatturaElettronicaHeader>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2014-12-18</Data>
<Numero>123</Numero>
<Causale>LA FATTURA FA RIFERIMENTO AD UNA OPERAZIONE AAAA BBBBBBBBBBBBBBBBBB CCC
DDDDDDDDDDDDDDD E FFFFFFFFFFFFFFFFFFFF GGGGGGGGGG HHHHHHH II LLLLLLLLLLLLLLLLL
MMM NNNNN OO PPPPPPPPPPP QQQQ RRRR SSSSSSSSSSSSSS</Causale>
<Causale>SEGUE DESCRIZIONE CAUSALE NEL CASO IN CUI NON SIANO STATI SUFFICIENTI 200
CARATTERI AAAAAAAAAAA BBBBBBBBBBBBBBBBB</Causale>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>66685</IdDocumento>
<NumItem>1</NumItem>
</DatiOrdineAcquisto>
<DatiTrasporto>
<DatiAnagraficiVettore>
<IdFiscaleIVA>
<IdPaese>IT</IdPaese>
<IdCodice>24681012141</IdCodice>
</IdFiscaleIVA>
<Anagrafica>
<Denominazione>Trasporto spa</Denominazione>
</Anagrafica>
</DatiAnagraficiVettore>
<DataOraConsegna>2012-10-22T16:46:12.000+02:00</DataOraConsegna>
</DatiTrasporto>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>LA DESCRIZIONE DELLA FORNITURA PUO' SUPERARE I CENTO CARATTERI CHE
RAPPRESENTAVANO IL PRECEDENTE LIMITE DIMENSIONALE. TALE LIMITE NELLA NUOVA
VERSIONE E' STATO PORTATO A MILLE CARATTERI</Descrizione>
<Quantita>5.00</Quantita>
<PrezzoUnitario>1.00</PrezzoUnitario>
<PrezzoTotale>5.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>FORNITURE VARIE PER UFFICIO</Descrizione>
<Quantita>10.00</Quantita>
<PrezzoUnitario>2.00</PrezzoUnitario>
<PrezzoTotale>20.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>27.00</ImponibileImporto>
<Imposta>5.95</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>27.00</ImponibileImporto>
<Imposta>5.95</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP01</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP01</ModalitaPagamento>
<DataScadenzaPagamento>2015-01-30</DataScadenzaPagamento>
<ImportoPagamento>32.95</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
<FatturaElettronicaBody>
<DatiGenerali>
<DatiGeneraliDocumento>
<TipoDocumento>TD01</TipoDocumento>
<Divisa>EUR</Divisa>
<Data>2014-12-20</Data>
<Numero>456</Numero>
<Causale>LA FATTURA FA RIFERIMENTO AD UNA OPERAZIONE AAAA BBBBBBBBBBBBBBBBBB CCC
DDDDDDDDDDDDDDD E FFFFFFFFFFFFFFFFFFFF GGGGGGGGGG HHHHHHH II LLLLLLLLLLLLLLLLL
MMM NNNNN OO PPPPPPPPPPP QQQQ RRRR SSSSSSSSSSSSSS</Causale>
<Causale>SEGUE DESCRIZIONE CAUSALE NEL CASO IN CUI NON SIANO STATI SUFFICIENTI 200
CARATTERI AAAAAAAAAAA BBBBBBBBBBBBBBBBB</Causale>
</DatiGeneraliDocumento>
<DatiOrdineAcquisto>
<RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
<IdDocumento>66685</IdDocumento>
<NumItem>1</NumItem>
</DatiOrdineAcquisto>
</DatiGenerali>
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>PRESTAZIONE DEL SEGUENTE SERVIZIO PROFESSIONALE: LA DESCRIZIONE DELLA
PRESTAZIONE PUO' SUPERARE I CENTO CARATTERI CHE RAPPRESENTAVANO IL PRECEDENTE
LIMITE DIMENSIONALE. TALE LIMITE NELLA NUOVA VERSIONE E' STATO PORTATO A MILLE
CARATTERI</Descrizione>
<PrezzoUnitario>2000.00</PrezzoUnitario>
<PrezzoTotale>2000.00</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>
<DatiRiepilogo>
<AliquotaIVA>22.00</AliquotaIVA>
<ImponibileImporto>2000.00</ImponibileImporto>
<Imposta>440.00</Imposta>
<EsigibilitaIVA>I</EsigibilitaIVA>
</DatiRiepilogo>
</DatiBeniServizi>
<DatiPagamento>
<CondizioniPagamento>TP01</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP19</ModalitaPagamento>
<DataScadenzaPagamento>2015-01-28</DataScadenzaPagamento>
<ImportoPagamento>2440.00</ImportoPagamento>
</DettaglioPagamento>
</DatiPagamento>
</FatturaElettronicaBody>
</p:FatturaElettronica>