UPDATE
Aggiornato il pacchetto per la gestione del formato XML di fatture e notifiche, nuovo repository:
https://github.com/taocomp/php-e-invoice-it
- Utilizzo di DOMDocument e DOMXpath
- Aggiunta di bodies (lotto di fatture)
- Aggiunta di dettaglio linee
- Normalizzazione XML (rimozione nodi vuoti)
- Possibilità di settare lo stesso valore per più elementi
- Possbilità di settare più elementi via-array
Esempi:
Nuova fattura:
$invoice = new FatturaElettronica('FPA12');
Da file:
$invoice = new FatturaElettronica('/path/to/invoice.xml');
Lotto di fatture:
$invoice->addBody(2);
Aggiunta di linee dettaglio (al secondo body):
$invoice->addLineItem(3, 2);
Settaggio valori:
$invoice->setValue('ProgressivoInvio', 10001);
$invoice->setValues('IdTrasmittente', array(
'IdCodice' => '09876543210',
'IdPaese' => 'IT'));
$invoice->setValues('CedentePrestatore/Sede', array(
'Indirizzo' => 'VIA UNIVERSO 1'));
$invoice->setValues('CessionarioCommittente', array(
// CessionarioCommittente/DatiAnagrafici/CodiceFiscale
'DatiAnagrafici/CodiceFiscale' => '01234567890',
// Denominazione, somewhere inside CessionarioCommittente
'Denominazione' => 'BETA SRL'));
$body2 = $invoice->getBody(2);
$invoice->setValue('Numero', 44, $body2);
$invoice->setValue('Data', '2018-12-12', $body2);
$invoice->setValuesToAll('DatiGenerali', array(
// All "RiferimentoNumeroLinea" somewhere inside DatiGenerali
'RiferimentoNumeroLinea' => 1,
// All "IdDocumento" somewhere inside DatiGenerali
'IdDocumento' => 4455,
// All "NumItem" somewhere inside DatiGenerali
'NumItem' => 1));
Aggiunta elementi:
$invoice->addElement('PECDestinatario', 'DatiTrasmissione');
$invoice->setValue('PECDestinatario', 'pec@example.com');
Salvataggio fattura (filename determinato automaticamente):
$invoice->save();
Creazione di un template da usare in seguito (filename custom):
$invoice = new FatturaElettronica('FPR12'); $invoice->setValue('IdTrasmittente/IdCodice', '00011122233'); $invoice->setValue('IdTrasmittente/IdPaese', 'IT'); $invoice->setFilename($filename); $invoice->setPrefixPath($prefixPath)->save();
Creazione nuona notifica:
$notice = new EsitoCommittente();
Settaggio valori:
$notice->setValuesFromInvoice($invoice, 2);
$notice->setValue('IdentificativoSdI', 1234567);
$notice->setValue('Esito', EsitoCommittente::EC01);
Salvataggio:
$notice->setFilenameFromInvoice($invoice, '_EC_001');
$notice->save();
Ora utilizza DOMDocument
e DOMXpath
.
Altre info nel README del repository (e spulciando nel codice per il momento… ).
Ciao a tutte/i,
abbiamo rilasciato su Github tre progetti per l’implementazione della fatturazione elettronica in PHP:
- https://github.com/taocomp/php-sdicoop-server per l’implementazione dei web services TrasmissioneFatture e RicezioneFatture
- https://github.com/taocomp/php-sdicoop-client per connettersi ai web services SdIRiceviFile e SdIRiceviNotifica
- https://github.com/taocomp/php-sdicoop-invoice per la gestione di fatture e notifiche come documenti XML
Come scritto nei README dei repositories, ringraziamo tutti i contributors di questo forum per i loro snippets, suggerimenti, condivisione di informazioni.
Citare tutti sarebbe impossibile, ma devo necessariamente fare un eccezione con @cesco69, anche perché ho ampiamente usato la sua classe SdiSoapClient
e non ho ancora la possibilità di inviare messaggi privati agli utenti…
Ça va sans dire, il codice è rilasciato con licenza GPLv3.
Grazie anticipatamente per pull requests, suggerimenti, integrazioni, critiche, ecc.
– aded