mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Validation
This commit is contained in:
parent
1db95e3e32
commit
34eb936927
@ -13,30 +13,19 @@ namespace App\DataMapper\EDoc;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
|
||||
use Spatie\LaravelData\Optional;
|
||||
use App\DataMapper\EDoc\FatturaPA\DatiContratto;
|
||||
use App\DataMapper\EDoc\FatturaPA\DatiRicezione;
|
||||
use App\DataMapper\EDoc\FatturaPA\DatiOrdineAcquisto;
|
||||
use App\DataMapper\EDoc\FatturaPA\DatiAnagraficiVettore;
|
||||
use App\DataMapper\EDoc\FatturaPA\FatturaElettronicaHeader;
|
||||
use App\DataMapper\EDoc\FatturaPA\FatturaElettronicaBody;
|
||||
|
||||
|
||||
// minimum required fields
|
||||
// public string $RegimeFiscale = 'RF01',
|
||||
// public string $TipoDocumento = 'TD01',
|
||||
// public string $ModalitaPagamento = 'MP01',
|
||||
// public string $CondizioniPagamento = 'TP02',
|
||||
|
||||
class FatturaPA extends Data
|
||||
{
|
||||
public FatturaElettronicaHeader $FatturaElettronicaHeader;
|
||||
public FatturaElettronicaBody $FatturaElettronicaBody;
|
||||
// public DatiRicezione|Optional $DatiRicezione;
|
||||
// public DatiContratto|Optional $DatiContratto;
|
||||
// public DatiOrdineAcquisto|Optional $DatiOrdineAcquisto;
|
||||
// public DatiAnagraficiVettore|Optional $DatiAnagraficiVettore;
|
||||
|
||||
public function __construct(
|
||||
// public string $RegimeFiscale = 'RF01',
|
||||
// public string $TipoDocumento = 'TD01',
|
||||
// public string $ModalitaPagamento = 'MP01',
|
||||
// public string $CondizioniPagamento = 'TP02',
|
||||
) {
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -15,21 +15,26 @@ use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Optional;
|
||||
use App\DataMapper\EDoc\FatturaPA\DatiVeicoli;
|
||||
use App\DataMapper\EDoc\FatturaPA\Body\DatiGenerali;
|
||||
use Spatie\LaravelData\Attributes\Validation\Max;
|
||||
|
||||
class Allegati extends Data
|
||||
{
|
||||
//string 60
|
||||
#[Max(60)]
|
||||
public string $NomeAttachment;
|
||||
|
||||
//base64 binary
|
||||
public mixed $Attachment;
|
||||
|
||||
//string 10
|
||||
#[Max(10)]
|
||||
public string|Optional $AlgoritmoCompressione;
|
||||
|
||||
//string 10
|
||||
#[Max(10)]
|
||||
public string|Optional $FormatoAttachment;
|
||||
|
||||
//string 100
|
||||
#[Max(100)]
|
||||
public string|Optional $DescrizioneAttachment;
|
||||
}
|
@ -12,24 +12,30 @@
|
||||
namespace App\DataMapper\EDoc\FatturaPA;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Spatie\LaravelData\Optional;
|
||||
use Spatie\LaravelData\Attributes\Validation\Max;
|
||||
use Spatie\LaravelData\Attributes\WithTransformer;
|
||||
use Spatie\LaravelData\Attributes\Validation\Regex;
|
||||
use Spatie\LaravelData\Transformers\DateTimeInterfaceTransformer;
|
||||
|
||||
class AltriDatiGestionali extends Data
|
||||
{
|
||||
//string 10
|
||||
#[Max(10)]
|
||||
public string $TipoDato;
|
||||
|
||||
//String60LatinType
|
||||
#[Max(60)]
|
||||
public string|Optional $RiferimentoTesto;
|
||||
|
||||
//Amount8DecimalType
|
||||
#[Regex('/^[\-]?[0-9]{1,11}\.[0-9]{2,8}$/')]
|
||||
public float|Optional $RiferimentoNumero;
|
||||
|
||||
//date
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public \DateTime|Optional $RiferimentoData;
|
||||
public Carbon|Optional $RiferimentoData;
|
||||
}
|
||||
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace App\DataMapper\EDoc\FatturaPA;
|
||||
|
||||
use Spatie\LaravelData\Attributes\Validation\Max;
|
||||
use Spatie\LaravelData\Data;
|
||||
|
||||
class Anagrafica extends Data
|
||||
@ -19,13 +20,16 @@ class Anagrafica extends Data
|
||||
|
||||
//either Deminominazione OR
|
||||
//string length 80
|
||||
public string $Denominazione;
|
||||
#[Max(80)]
|
||||
public string $Denominazione = '';
|
||||
|
||||
////////////////////////////////////////////
|
||||
//2. Nome AND CogNome
|
||||
//string length 60
|
||||
public string $Nome;
|
||||
#[Max(60)]
|
||||
public string $Nome = '';
|
||||
|
||||
//string length 60
|
||||
public string $CogNome;
|
||||
#[Max(60)]
|
||||
public string $CogNome = '';
|
||||
}
|
||||
|
@ -13,14 +13,18 @@ namespace App\DataMapper\EDoc\FatturaPA\Body;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Optional;
|
||||
use Spatie\LaravelData\Attributes\Validation\Size;
|
||||
use Spatie\LaravelData\Attributes\Validation\Regex;
|
||||
|
||||
class DatiBollo extends Data
|
||||
{
|
||||
|
||||
//SI
|
||||
#[Size(2)]
|
||||
public string $BolloVirtuale = 'SI';
|
||||
|
||||
//Amount2DecimalType
|
||||
#[Regex('/^[\-]?[0-9]{1,11}\.[0-9]{2}$/')]
|
||||
public float|Optional $ImportoBollo;
|
||||
|
||||
}
|
@ -13,33 +13,41 @@ namespace App\DataMapper\EDoc\FatturaPA\Body;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Optional;
|
||||
use Spatie\LaravelData\Attributes\Validation\Max;
|
||||
use Spatie\LaravelData\Attributes\Validation\Size;
|
||||
use Spatie\LaravelData\Attributes\Validation\Regex;
|
||||
|
||||
class DatiCassaPrevidenziale extends Data
|
||||
{
|
||||
//string 4char options
|
||||
#[Size(4)]
|
||||
public string $TipoCassa;
|
||||
|
||||
|
||||
//rate type 0-100
|
||||
#[Regex('/^[0-9]{1,3}\.[0-9]{2}$/')]
|
||||
public float $AlCassa = 0;
|
||||
|
||||
//Amount2DecimalType
|
||||
#[Regex('/^[\-]?[0-9]{1,11}\.[0-9]{2}$/')]
|
||||
public float $ImportoContributoCassa;
|
||||
|
||||
|
||||
//rate type 0-100
|
||||
#[Regex('/^[0-9]{1,3}\.[0-9]{2}$/')]
|
||||
public float $AliquotaIVA;
|
||||
|
||||
//Amount2DecimalType
|
||||
#[Regex('/^[\-]?[0-9]{1,11}\.[0-9]{2}$/')]
|
||||
public float|Optional $ImponibileCassa;
|
||||
|
||||
//string string options
|
||||
#[Size(4)]
|
||||
public string|Optional $Ritenuta;
|
||||
|
||||
//string 2char options
|
||||
public string|Optional $Natura;
|
||||
|
||||
//String20Type
|
||||
#[Max(20)]
|
||||
public string|Optional $RiferimentoAmministrazione;
|
||||
|
||||
}
|
||||
|
@ -14,22 +14,24 @@ namespace App\DataMapper\EDoc\FatturaPA\Body;
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Optional;
|
||||
use App\DataMapper\EDoc\FatturaPA\Body\DatiBollo;
|
||||
use Spatie\LaravelData\Attributes\Validation\Max;
|
||||
use Spatie\LaravelData\Attributes\Validation\Size;
|
||||
use Spatie\LaravelData\Attributes\WithTransformer;
|
||||
use Spatie\LaravelData\Attributes\Validation\Regex;
|
||||
use App\DataMapper\EDoc\FatturaPA\Body\DatiRitenuta;
|
||||
use Spatie\LaravelData\Transformers\DateTimeInterfaceTransformer;
|
||||
|
||||
class DatiGeneraliDocumento extends Data
|
||||
{
|
||||
//length 4 - optional
|
||||
public string $TipoDocumento;
|
||||
|
||||
//string regex [A-Z]{3}
|
||||
public string $Divisa;
|
||||
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public \DateTime $Data;
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d\TH:i:s.uP')]
|
||||
public \Illuminate\Support\Carbon $Data;
|
||||
|
||||
//string max 20 char
|
||||
#[Max(20)]
|
||||
public string $Numero;
|
||||
|
||||
public DatiRitenuta|Optional $DatiRitenuta;
|
||||
@ -38,15 +40,25 @@ class DatiGeneraliDocumento extends Data
|
||||
public ScontoMaggiorazione|Optional $ScontoMaggiorazione;
|
||||
|
||||
//float 2 decimal type
|
||||
#[Regex('/^[\-]?[0-9]{1,11}\.[0-9]{2}$/')]
|
||||
public float|Optional $ImportoTotaleDocumento;
|
||||
|
||||
//float 2 decimal type
|
||||
public float|Optional $Arrotondamento;
|
||||
|
||||
#[Regex('/^[\-]?[0-9]{1,11}\.[0-9]{2}$/')]
|
||||
public float|Optional $Arrotondamento;
|
||||
|
||||
//string 200char
|
||||
public string|Optional $Causale;
|
||||
/** @var string[] */
|
||||
public array|Optional $Causale;
|
||||
|
||||
//SI = Documento emesso secondo modalità e termini stabiliti con DM ai sensi dell'art. 73 DPR 633/72
|
||||
//optional 2 char - only value possible = SI
|
||||
public string|Optional $Art73;
|
||||
#[Size(2)]
|
||||
public string|Optional $Art73;
|
||||
|
||||
//length 4 - optional
|
||||
#[Size(4)]
|
||||
public string $TipoDocumento = 'TD01';
|
||||
|
||||
}
|
||||
|
@ -12,18 +12,24 @@
|
||||
namespace App\DataMapper\EDoc\FatturaPA\Body;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Attributes\Validation\Max;
|
||||
use Spatie\LaravelData\Attributes\Validation\Size;
|
||||
use Spatie\LaravelData\Attributes\Validation\Regex;
|
||||
|
||||
class DatiRitenuta extends Data
|
||||
{
|
||||
//string 4 char options
|
||||
#[Size(4)]
|
||||
public string $TipoRitenuta;
|
||||
|
||||
//float 2 decimal
|
||||
#[Regex('/^[\-]?[0-9]{1,11}\.[0-9]{2}$/')]
|
||||
public float $ImportoRitenuta;
|
||||
|
||||
// <xs:restriction base="xs:decimal">
|
||||
// <xs:maxInclusive value="100.00" />
|
||||
// <xs:pattern value="[0-9]{1,3}\.[0-9]{2}" />
|
||||
// <xs:pattern value="/^[0-9]{1,3}\.[0-9]{2}$/" />
|
||||
#[Regex('/^[\-]?[0-9]{1,11}\.[0-9]{2}$/')]
|
||||
public float $AliquotaRitenuta;
|
||||
|
||||
/*
|
||||
@ -58,6 +64,7 @@ class DatiRitenuta extends Data
|
||||
<xs:enumeration value="V1" />
|
||||
<xs:enumeration value="ZO" />
|
||||
*/
|
||||
#[Max(2)]
|
||||
public string $CausalePagamento;
|
||||
|
||||
}
|
||||
|
@ -13,16 +13,21 @@ namespace App\DataMapper\EDoc\FatturaPA\Body;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Optional;
|
||||
use Spatie\LaravelData\Attributes\Validation\Size;
|
||||
use Spatie\LaravelData\Attributes\Validation\Regex;
|
||||
|
||||
class ScontoMaggiorazione extends Data
|
||||
{
|
||||
//string options
|
||||
//SC - Sconto //discount
|
||||
//MG - Maggiorazione //surcharge
|
||||
#[Size(2)]
|
||||
public string $Tipo;
|
||||
//float 0-100
|
||||
#[Regex('/^[0-9]{1,3}\.[0-9]{2}$/')]
|
||||
public float|Optional $Percentuale;
|
||||
|
||||
//Amount8DecimalType
|
||||
#[Regex('/^[\-]?[0-9]{1,11}\.[0-9]{2,8}$/')]
|
||||
public float|Optional $Importo;
|
||||
}
|
||||
|
@ -12,17 +12,17 @@
|
||||
namespace App\DataMapper\EDoc\FatturaPA;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Attributes\WithTransformer;
|
||||
use Spatie\LaravelData\Transformers\DateTimeInterfaceTransformer;
|
||||
use Spatie\LaravelData\Optional;
|
||||
use App\DataMapper\EDoc\FatturaPA\Header\IdFiscaleIVA;
|
||||
|
||||
class DatiAnagraficiVettore extends Data
|
||||
{
|
||||
|
||||
public function __construct(
|
||||
public string $IdFiscaleIVA = '',
|
||||
public string $CodiceFiscale = '',
|
||||
public string $Anagrafica = '',
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d\TH:i:s.uP')]
|
||||
public \DateTime $DataOraConsegna = new \DateTime(),
|
||||
){}
|
||||
public IdFiscaleIVA $IdFiscaleIVA;
|
||||
|
||||
public Anagrafica $Anagrafica;
|
||||
|
||||
public string|Optional $CodiceFiscale;
|
||||
|
||||
//String20Type
|
||||
public string|Optional $NumeroLicenzaGuida;
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ use Spatie\LaravelData\Data;
|
||||
class DatiPagamento extends Data
|
||||
{
|
||||
//string min4 max4 - optionlist
|
||||
public string $CondizioniPagamento;
|
||||
public string $CondizioniPagamento = 'TP02';
|
||||
|
||||
public DettaglioPagamento $DettaglioPagamento;
|
||||
}
|
@ -36,7 +36,7 @@ class DatiRiepilogo extends Data
|
||||
public float|Optional $Arrotondamento;
|
||||
|
||||
//string options D/I/S
|
||||
public float|Optional $EsigibilitaIVA;
|
||||
public string|Optional $EsigibilitaIVA;
|
||||
|
||||
//String100LatinType
|
||||
public string|Optional $RiferimentoNormativo;
|
||||
|
@ -12,6 +12,7 @@
|
||||
namespace App\DataMapper\EDoc\FatturaPA;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Spatie\LaravelData\Optional;
|
||||
use Spatie\LaravelData\Attributes\WithTransformer;
|
||||
use Spatie\LaravelData\Transformers\DateTimeInterfaceTransformer;
|
||||
@ -44,10 +45,10 @@ class DatiTrasporto extends Data
|
||||
|
||||
//dateTime
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d\TH:i:s.uP')]
|
||||
public \DateTime|Optional $DataOraRitiro;
|
||||
public Carbon|Optional $DataOraRitiro;
|
||||
//date
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public \DateTime|Optional $DataInizioTrasporto;
|
||||
public Carbon|Optional $DataInizioTrasporto;
|
||||
|
||||
//[A-Z]{3}
|
||||
public string|Optional $TipoResa;
|
||||
@ -55,7 +56,15 @@ class DatiTrasporto extends Data
|
||||
public Sede|Optional $IndirizzoResa;
|
||||
|
||||
//dateTime
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d\TH:i:s.uP')]
|
||||
public \DateTime|Optional $DataOraConsegna;
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public Carbon|Optional $DataOraConsegna;
|
||||
|
||||
|
||||
// public function __construct()
|
||||
// {
|
||||
// $this->DataOraConsegna = new \DateTime();
|
||||
// $this->DataInizioTrasporto = new \DateTime();
|
||||
// $this->DataInizioTrasporto = new \DateTime();
|
||||
// }
|
||||
|
||||
}
|
||||
|
@ -12,6 +12,7 @@
|
||||
namespace App\DataMapper\EDoc\FatturaPA;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Spatie\LaravelData\Optional;
|
||||
use Spatie\LaravelData\Attributes\WithTransformer;
|
||||
use Spatie\LaravelData\Transformers\DateTimeInterfaceTransformer;
|
||||
@ -19,8 +20,13 @@ use Spatie\LaravelData\Transformers\DateTimeInterfaceTransformer;
|
||||
class DatiVeicoli extends Data
|
||||
{
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public \DateTime|Optional $Data;
|
||||
public Carbon|Optional $Data;
|
||||
|
||||
//String15Type
|
||||
public string $TotalePercorso;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
// $this->Data = new \DateTime();
|
||||
}
|
||||
}
|
@ -35,7 +35,7 @@ class DettaglioLinee extends Data
|
||||
|
||||
// <xs:restriction base="xs:decimal">
|
||||
// <xs:maxInclusive value="100.00" />
|
||||
// <xs:pattern value="[0-9]{1,3}\.[0-9]{2}" />
|
||||
// <xs:pattern value="/^[0-9]{1,3}\.[0-9]{2}$/" />
|
||||
// 0-100
|
||||
public float $AliquotaIVA;
|
||||
|
||||
@ -53,11 +53,11 @@ class DettaglioLinee extends Data
|
||||
|
||||
//date
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public \DateTime|Optional $DataInizioPeriodo;
|
||||
public \Illuminate\Support\Carbon|Optional $DataInizioPeriodo;
|
||||
|
||||
//date
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public \DateTime|Optional $DataFinePeriodo;
|
||||
public \Illuminate\Support\Carbon|Optional $DataFinePeriodo;
|
||||
|
||||
public ScontoMaggiorazione|Optional $ScontoMaggiorazione;
|
||||
|
||||
|
@ -22,7 +22,7 @@ class DettaglioPagamento extends Data
|
||||
{
|
||||
|
||||
//string length 4 - options
|
||||
public string $ModalitaPagamento;
|
||||
public string $ModalitaPagamento = 'MP01';
|
||||
|
||||
// Amount2DecimalType
|
||||
public float $ImportoPagamento;
|
||||
@ -40,7 +40,7 @@ class DettaglioPagamento extends Data
|
||||
|
||||
//date
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public \Datetime|Optional $DataScadenzaPagamento;
|
||||
public \Illuminate\Support\Carbon|Optional $DataScadenzaPagamento;
|
||||
|
||||
//String20Type
|
||||
public string|Optional $CodUfficioPostale;
|
||||
@ -77,14 +77,14 @@ class DettaglioPagamento extends Data
|
||||
|
||||
//Date
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public string|Optional $DataLimitePagamentoAnticipato;
|
||||
public \Illuminate\Support\Carbon|Optional $DataLimitePagamentoAnticipato;
|
||||
|
||||
//Amount2DecimalType
|
||||
public float|Optional $PenalitaPagamentiRitardati;
|
||||
|
||||
//date
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public \DateTime|Optional $DataDecorrenzaPenale;
|
||||
public \Illuminate\Support\Carbon|Optional $DataDecorrenzaPenale;
|
||||
|
||||
//String60Type
|
||||
public string|Optional $CodicePagamento;
|
||||
|
@ -22,5 +22,5 @@ class FatturaPrincipale extends Data
|
||||
public string $NumeroFatturaPrincipale;
|
||||
//dateTime
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public \DateTime|Optional $DataFatturaPrincipale;
|
||||
public \Illuminate\Support\Carbon|Optional $DataFatturaPrincipale;
|
||||
}
|
||||
|
@ -12,13 +12,16 @@
|
||||
namespace App\DataMapper\EDoc\FatturaPA\Generics;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Attributes\Validation\Max;
|
||||
|
||||
class CodiceArticolo extends Data
|
||||
{
|
||||
//string 35 char
|
||||
#[Max(35)]
|
||||
public string $CodiceTipo;
|
||||
|
||||
//string 35 char
|
||||
#[Max(35)]
|
||||
public string $CodiceValore;
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace App\DataMapper\EDoc\FatturaPA\Generics;
|
||||
|
||||
use Spatie\LaravelData\Attributes\Validation\Between;
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Optional;
|
||||
use Spatie\LaravelData\Attributes\WithTransformer;
|
||||
@ -22,9 +23,10 @@ class DatiDDT extends Data
|
||||
public string $NumeroDDT;
|
||||
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public \DateTime $DataDDT;
|
||||
public \Illuminate\Support\Carbon $DataDDT;
|
||||
|
||||
//int 1-9999
|
||||
#[Between(1,9999)]
|
||||
public int|Optional $RiferimentoNumeroLinea;
|
||||
|
||||
}
|
||||
|
@ -13,23 +13,31 @@ namespace App\DataMapper\EDoc\FatturaPA\Generics;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Optional;
|
||||
use Spatie\LaravelData\Attributes\Validation\Max;
|
||||
use Spatie\LaravelData\Attributes\WithTransformer;
|
||||
use Spatie\LaravelData\Attributes\Validation\Between;
|
||||
use Spatie\LaravelData\Transformers\DateTimeInterfaceTransformer;
|
||||
|
||||
class DatiDocumentiCorrelatiType extends Data
|
||||
{
|
||||
//String20Type
|
||||
#[Max(20)]
|
||||
public string $IdDocumento;
|
||||
//int 1-9999
|
||||
#[Between(1,9999)]
|
||||
public int|Optional $RiferimentoNumeroLinea;
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public \DateTime|Optional $Data;
|
||||
public \Illuminate\Support\Carbon|Optional $Data;
|
||||
//String20Type
|
||||
#[Max(20)]
|
||||
public string|Optional $NumItem;
|
||||
//String100LatinType
|
||||
#[Max(100)]
|
||||
public string|Optional $CodiceCommessaConvenzione;
|
||||
//String15Type
|
||||
#[Max(15)]
|
||||
public string|Optional $CodiceCUP;
|
||||
//String15Type
|
||||
#[Max(15)]
|
||||
public string|Optional $CodiceCIG;
|
||||
}
|
@ -11,12 +11,14 @@
|
||||
|
||||
namespace App\DataMapper\EDoc\FatturaPA\Generics;
|
||||
|
||||
use Spatie\LaravelData\Attributes\Validation\Between;
|
||||
use Spatie\LaravelData\Data;
|
||||
|
||||
class DatiSAL extends Data
|
||||
{
|
||||
|
||||
//int 1-999
|
||||
#[Between(1,999)]
|
||||
public int $RiferimentoFase;
|
||||
|
||||
}
|
||||
|
@ -16,14 +16,25 @@ use Spatie\LaravelData\Optional;
|
||||
use App\DataMapper\EDoc\FatturaPA\Sede;
|
||||
use App\DataMapper\EDoc\FatturaPA\Contatti;
|
||||
use App\DataMapper\EDoc\FatturaPA\IscrizioneREA;
|
||||
use App\DataMapper\EDoc\FatturaPA\Header\DatiAnagrafici;
|
||||
use App\DataMapper\EDoc\FatturaPA\StabileOrganizzazione;
|
||||
|
||||
class CedentePrestatore extends Data
|
||||
{
|
||||
public DatiAnagrafici $DatiAnagrafici;
|
||||
public Sede $sede;
|
||||
public Sede|Optional $StabileOrganizzazione;
|
||||
public IscrizioneREA|Optional $IscrizioneREA;
|
||||
public Contatti|Optional $Contatti;
|
||||
public string|Optional $RiferimentoAmministrazione;
|
||||
|
||||
}
|
||||
public function __construct(
|
||||
|
||||
public DatiAnagrafici $DatiAnagrafici,
|
||||
|
||||
public Sede $Sede,
|
||||
|
||||
public StabileOrganizzazione|Optional $StabileOrganizzazione,
|
||||
|
||||
public IscrizioneREA|Optional $IscrizioneREA,
|
||||
|
||||
public Contatti|Optional $Contatti,
|
||||
|
||||
public string|Optional $RiferimentoAmministrazione,
|
||||
){}
|
||||
|
||||
}
|
@ -13,16 +13,19 @@ namespace App\DataMapper\EDoc\FatturaPA\Header;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Optional;
|
||||
use CleverIt\UBL\Invoice\FatturaPA\common\Sede;
|
||||
use App\DataMapper\EDoc\FatturaPA\Sede;
|
||||
use App\DataMapper\EDoc\FatturaPA\RappresentanteFiscale;
|
||||
use App\DataMapper\EDoc\FatturaPA\Header\DatiAnagraficiCedenteType;
|
||||
|
||||
class CessionarioCommittente extends Data
|
||||
{
|
||||
public DatiAnagrafici $DatiAnagrafici;
|
||||
public DatiAnagraficiCedenteType $DatiAnagrafici;
|
||||
|
||||
/** @var Sede[] */
|
||||
public array $Sede;
|
||||
|
||||
public Sede $Sede;
|
||||
|
||||
public Sede|Optional $StabileOrganizzazione;
|
||||
/** @var Sede[] */
|
||||
public array|Optional $StabileOrganizzazione;
|
||||
|
||||
public RappresentanteFiscale|Optional $RappresentanteFiscale;
|
||||
}
|
||||
|
@ -14,31 +14,44 @@ namespace App\DataMapper\EDoc\FatturaPA\Header;
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Optional;
|
||||
use App\DataMapper\EDoc\FatturaPA\Anagrafica;
|
||||
use Spatie\LaravelData\Attributes\Validation\Max;
|
||||
use Spatie\LaravelData\Attributes\Validation\Size;
|
||||
use Spatie\LaravelData\Attributes\WithTransformer;
|
||||
use Spatie\LaravelData\Attributes\Validation\Regex;
|
||||
use App\DataMapper\EDoc\FatturaPA\Header\IdFiscaleIVA;
|
||||
use Spatie\LaravelData\Transformers\DateTimeInterfaceTransformer;
|
||||
|
||||
class DatiAnagrafici extends Data
|
||||
{
|
||||
public IdFiscaleIVA $IdFiscaleIVA;
|
||||
public Anagrafica $Anagrafica;
|
||||
public function __construct(
|
||||
|
||||
// string length 4 - options
|
||||
public string|Optional $RegimeFiscale;
|
||||
public Anagrafica $Anagrafica,
|
||||
|
||||
public IdFiscaleIVA $IdFiscaleIVA,
|
||||
|
||||
// string length 4 - options = 'RF01'
|
||||
#[Max(4)]
|
||||
public string|Optional $RegimeFiscale,
|
||||
|
||||
#[Regex('/^[A-Z0-9]{11,16}$/')]
|
||||
public string|Optional $CodiceFiscale,
|
||||
|
||||
//string 60 char
|
||||
#[Max(60)]
|
||||
public string|Optional $AlboProfessionale,
|
||||
|
||||
//string 2 char
|
||||
#[Regex('/^[A-Z]{2}$/')]
|
||||
#[Size(2)]
|
||||
public string|Optional $ProvinciaAlbo,
|
||||
|
||||
//string 60 char
|
||||
#[Max(60)]
|
||||
public string|Optional $NumeroIscrizioneAlbo,
|
||||
|
||||
//Date
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public \Datetime|Optional $DataIscrizioneAlbo,
|
||||
|
||||
//[A-Z0-9]{11,16}
|
||||
public string|Optional $CodiceFiscale;
|
||||
|
||||
//string 60 char
|
||||
public string|Optional $AlboProfessionale;
|
||||
|
||||
//string 2 chat [A-Z]{2}
|
||||
public string|Optional $ProvinciaAlbo;
|
||||
|
||||
//string 60 char
|
||||
public string|Optional $NumeroIscrizioneAlbo;
|
||||
|
||||
//Date
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public \DateTime|Optional $DataIscrizioneAlbo;
|
||||
|
||||
){}
|
||||
}
|
||||
|
@ -0,0 +1,58 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2024. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\DataMapper\EDoc\FatturaPA\Header;
|
||||
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Optional;
|
||||
use App\DataMapper\EDoc\FatturaPA\Anagrafica;
|
||||
use Spatie\LaravelData\Attributes\WithTransformer;
|
||||
use App\DataMapper\EDoc\FatturaPA\Header\IdFiscaleIVA;
|
||||
use Spatie\LaravelData\Attributes\Validation\Max;
|
||||
use Spatie\LaravelData\Attributes\Validation\Regex;
|
||||
use Spatie\LaravelData\Attributes\Validation\Size;
|
||||
use Spatie\LaravelData\Transformers\DateTimeInterfaceTransformer;
|
||||
|
||||
class DatiAnagraficiCedenteType extends Data
|
||||
{
|
||||
public function __construct(
|
||||
|
||||
public Anagrafica $Anagrafica,
|
||||
|
||||
public IdFiscaleIVA|Optional $IdFiscaleIVA,
|
||||
|
||||
// string length 4 - options = 'RF01'
|
||||
#[Size(4)]
|
||||
public string|Optional $RegimeFiscale,
|
||||
|
||||
//[A-Z0-9]{11,16}
|
||||
#[Regex('/^[A-Z0-9]{11,16}$/')]
|
||||
public string|Optional $CodiceFiscale,
|
||||
|
||||
//string 60 char
|
||||
#[Max(20)]
|
||||
public string|Optional $AlboProfessionale,
|
||||
|
||||
//string 2 chat [A-Z]{2}
|
||||
#[Size(2)]
|
||||
#[Regex('/^[A-Z]{2}$/')]
|
||||
public string|Optional $ProvinciaAlbo,
|
||||
|
||||
//string 60 char
|
||||
#[Max(60)]
|
||||
public string|Optional $NumeroIscrizioneAlbo,
|
||||
|
||||
//Date
|
||||
#[WithTransformer(DateTimeInterfaceTransformer::class, format: 'Y-m-d')]
|
||||
public \Datetime|Optional $DataIscrizioneAlbo,
|
||||
){}
|
||||
}
|
@ -12,12 +12,21 @@
|
||||
namespace App\DataMapper\EDoc\FatturaPA\Header;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Attributes\Validation\Max;
|
||||
use Spatie\LaravelData\Attributes\Validation\Regex;
|
||||
use Spatie\LaravelData\Attributes\Validation\Size;
|
||||
|
||||
class DatiTrasmissione extends Data
|
||||
{
|
||||
public IdTrasmittente $IdTrasmittente; //IdTrasmittente
|
||||
|
||||
#[Max(10)]
|
||||
public string $ProgressivoInvio = ''; //String
|
||||
|
||||
#[Size(5)]
|
||||
public string $FormatoTrasmissione = ''; //String
|
||||
|
||||
#[Regex('/^[A-Z0-9]{6,7}$/')]
|
||||
public string $CodiceDestinatario = ''; //String
|
||||
|
||||
|
||||
|
@ -11,14 +11,21 @@
|
||||
|
||||
namespace App\DataMapper\EDoc\FatturaPA\Header;
|
||||
|
||||
use Spatie\LaravelData\Attributes\Validation\Max;
|
||||
use Spatie\LaravelData\Attributes\Validation\Min;
|
||||
use Spatie\LaravelData\Attributes\Validation\Regex;
|
||||
use Spatie\LaravelData\Data;
|
||||
|
||||
class IdFiscaleIVA extends Data
|
||||
{
|
||||
public function __construct(
|
||||
// #[\Required]
|
||||
#[Regex('/^[A-Z]{2}$/')]
|
||||
public string $IdPaese = '',
|
||||
|
||||
#[\Required]
|
||||
public string $IdPaese = '';
|
||||
|
||||
#[\Required]
|
||||
public string $IdCodice = '';
|
||||
// #[\Required]
|
||||
#[Min(1)]
|
||||
#[Max(28)]
|
||||
public string $IdCodice = '',
|
||||
){}
|
||||
}
|
||||
|
@ -12,10 +12,17 @@
|
||||
namespace App\DataMapper\EDoc\FatturaPA\Header;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
use Spatie\LaravelData\Attributes\Validation\Max;
|
||||
use Spatie\LaravelData\Attributes\Validation\Min;
|
||||
use Spatie\LaravelData\Attributes\Validation\Regex;
|
||||
|
||||
class IdTrasmittente extends Data
|
||||
{
|
||||
#[Regex('/^[A-Z]{2}$/')]
|
||||
public string $IdPaese; //String
|
||||
|
||||
#[Min(1)]
|
||||
#[Max(28)]
|
||||
public string $IdCodice; //String
|
||||
|
||||
}
|
||||
|
@ -17,10 +17,14 @@ use Spatie\LaravelData\Optional;
|
||||
class Sede extends Data
|
||||
{
|
||||
public string $Indirizzo = ''; //string - address, 60char limit
|
||||
|
||||
public int $CAP = 12345; //[0-9][0-9][0-9][0-9][0-9] ie 12345
|
||||
|
||||
public string $Comune = ''; //String 60char limit
|
||||
|
||||
public string $Nazione = 'IT'; //String default IT
|
||||
|
||||
public string|Optional $Provincia; //String [A-Z]{2}
|
||||
|
||||
public string|Optional $NumeroCivico; // regex \p{IsBasicLatin}{1,8})
|
||||
public string $Nazione = 'IT'; //String default IT
|
||||
}
|
@ -11,9 +11,7 @@
|
||||
|
||||
namespace App\DataMapper\EDoc\FatturaPA;
|
||||
|
||||
use Spatie\LaravelData\Data;
|
||||
|
||||
class StabileOrganizzazione extends Data
|
||||
class StabileOrganizzazione extends Sede
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -6,7 +6,10 @@ return [
|
||||
* is an array, it will try to convert from the first format that works,
|
||||
* and will serialize dates using the first format from the array.
|
||||
*/
|
||||
'date_format' => DATE_ATOM,
|
||||
'date_format' => [
|
||||
'Y-m-d',
|
||||
'Y-m-d\TH:i:s.uP',
|
||||
],
|
||||
|
||||
/*
|
||||
* Global transformers will take complex types and transform them into simple
|
||||
|
Loading…
x
Reference in New Issue
Block a user