# Struttura del pacchetto Fattura Elettronica
Il pacchetto contiene una struttura di classi costruita sulla base del tracciato XML Fattura Elettronica così come ufficialmente documentato dall'Agenzia delle Entrate: Documentazione FatturaPA Agenzia delle Entrate (opens new window) Il riferimento ufficiale utilizzato per la lettura e la scrittura di file XML è: Rappresentazione tabellare del tracciato FatturaPA versione 1.2.1.xls.
# Dati enumerabili
L'XML della fattura elettronica prevede diversi dati enumerabili: alcuni sono indicati in apposite tabelle (RegimeFiscale, TipoCassa, ecc.), altri sono invece riportati nei campi in cui vengono utilizzati (tipo sconto/maggiorazione, quantità di soci, ecc.).
Ognuno di questi dati è tradotto in una apposita classe Enum nel namespace FatturaElettronicaPhp\FatturaElettronica\Enums.
- Socio unico/più soci:
FatturaElettronicaPhp\FatturaElettronica\Enums\AssociateType - Tipo cessione/prestazione:
FatturaElettronicaPhp\FatturaElettronica\Enums\CancelType - Tipo ritenuta:
FatturaElettronicaPhp\FatturaElettronica\Enums\DeductionType - Tipo sconto/maggiorazione:
FatturaElettronicaPhp\FatturaElettronica\Enums\DiscountType - Formato documento:
FatturaElettronicaPhp\FatturaElettronica\Enums\DocumentFormat - Tipo documento:
FatturaElettronicaPhp\FatturaElettronica\Enums\DocumentType - Individuazione soggetto emittente:
FatturaElettronicaPhp\FatturaElettronica\Enums\EmittingSubject - Tipo cassa previdenziale:
FatturaElettronicaPhp\FatturaElettronica\Enums\FundType - Metodo di pagamento:
FatturaElettronicaPhp\FatturaElettronica\Enums\PaymentMethod - Termini di pagamento:
FatturaElettronicaPhp\FatturaElettronica\Enums\PaymentTerm - Codici destinatario di default (cliente estero o codice destinatario B2B/B2C sconosciuto o non presente):
FatturaElettronicaPhp\FatturaElettronica\Enums\RecipientCode - Regime fiscale:
FatturaElettronicaPhp\FatturaElettronica\Enums\TaxRegime - Formato trasmissione:
FatturaElettronicaPhp\FatturaElettronica\Enums\TransmissionFormat - Esigibilità IVA:
FatturaElettronicaPhp\FatturaElettronica\Enums\VatEligibility - Tipologia di Natura IVA:
FatturaElettronicaPhp\FatturaElettronica\Enums\VatNature - Stato liquidazione:
FatturaElettronicaPhp\FatturaElettronica\Enums\WoundUpType
# Struttura base
La classe di base da utilizzare è FatturaElettronicaPhp\FatturaElettronica\DigitalDocument, che rappresenta un intero file XML (o p7m) di una Fattura Elettronica.
$eDocument = \FatturaElettronicaPhp\FatturaElettronica\DigitalDocument::parseFrom( $xml );
Un'istanza di FatturaElettronicaPhp\FatturaElettronica\DigitalDocument contiene essenzialmente le due parti principali di un XML:
1 <FatturaElettronicaHeader>2 <FatturaElettronicaBody>
# Header
I dati dell'intestazione del documento elettronico sono espressi proprietà della classe FatturaElettronicaPhp\FatturaElettronica\DigitalDocument con i relativi metodi le lettura e scrittura (get/set/add).
1.1 <DatiTrasmissione>- I dati relativi a questo nodo sono espressi in metodi disponibili nella classe
DigitalDocument
- I dati relativi a questo nodo sono espressi in metodi disponibili nella classe
1.2 <CedentePrestatore>(o Fornitore)- Istanza di
FatturaElettronicaPhp\FatturaElettronica\Supplier
- Istanza di
1.3 <RappresentanteFiscale>- Istanza di
FatturaElettronicaPhp\FatturaElettronica\Customer
- Istanza di
1.4 <CessionarioCommittente>- Istanza di
FatturaElettronicaPhp\FatturaElettronica\BillablePerson
- Istanza di
1.5 <TerzoIntermediarioOSoggettoEmittente>- Istanza di
FatturaElettronicaPhp\FatturaElettronica\Intermediary
- Istanza di
1.6 <SoggettoEmittente>- Istanza di
FatturaElettronicaPhp\FatturaElettronica\BillablePerson
- Istanza di
La classe FatturaElettronicaPhp\FatturaElettronica\Address rappresenta un Indirizzo utilizzato in ognuna delle classi sopra citate.
# Corpo fattura
Ogni file XML può contenere una o più fatture elettroniche grazie alla presenza di uno o più nodi <FatturaElettronicaBody>. Quindi l'istanza di FatturaElettronicaPhp\FatturaElettronica\DigitalDocument contiene una collezione di FatturaElettronicaPhp\FatturaElettronica\DigitalDocumentInstance. Ognuno di essi rappresenta appunto un <FatturaElettronicaBody>.
I dati presenti in 2.1.1 <DatiGeneraliDocumento> sono rappresentati in proprietà disponibili in FatturaElettronicaPhp\FatturaElettronica\DigitalDocumentInstance. Alcuni di essi sono collezioni di istanze di altri oggetti che a loro volta contengono i dati previsti dall'XML.
Le linee del corpo fattura (2.2 <DatiBeniServizi>) sono rappresentate dalla collezione di istanze di FatturaElettronicaPhp\FatturaElettronica\Line.
FatturaElettronicaPhp\FatturaElettronica\Fund2.1.1.7 <DatiCassaPrevidenziale>
FatturaElettronicaPhp\FatturaElettronica\Discount, utilizzata per esprimere uno o più sconti (collezione) per i nodi:2.1.1.8 <ScontoMaggiorazione>2.2.1.10 <ScontoMaggiorazione>
FatturaElettronicaPhp\FatturaElettronica\RelatedDocument2.1.3 <DatiContratto>2.1.4 <DatiConvenzione>2.1.5 <DatiRicezione>2.1.6 <DatiFattureCollegate>
FatturaElettronicaPhp\FatturaElettronica\ShippingLabel2.1.8 <DatiDDT>
FatturaElettronicaPhp\FatturaElettronica\Shipment2.1.9 <DatiTrasporto>
FatturaElettronicaPhp\FatturaElettronica\Total2.2.2 <DatiRiepilogo>
FatturaElettronicaPhp\FatturaElettronica\PaymentInfo2.4 <DatiPagamento>- A sua volta contiene una o più istanze di
FatturaElettronicaPhp\FatturaElettronica\PaymentDetailsche corrisponde a2.4.2 <DettaglioPagamento>
FatturaElettronicaPhp\FatturaElettronica\Attachment2.5 <Allegati>
← Introduzione Lettura →