# PHP: gestione formato XML di fatture e notifiche (più client e server)

**URL:** <https://forum.italia.it/t/php-gestione-formato-xml-di-fatture-e-notifiche-piu-client-e-server/6379>\
**Category:** Fatturazione Elettronica\
**Created:** [12 Dicembre 2018, 5:12pm UTC](https://forum.italia.it/t/php-gestione-formato-xml-di-fatture-e-notifiche-piu-client-e-server/6379 "2018-12-12T17:12:42Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![aded](https://forum.italia.it/user_avatar/forum.italia.it/aded/32/1553_2.png) [@aded](https://forum.italia.it/u/aded)\
**Post date:** [12 Dicembre 2018, 5:12pm UTC](https://forum.italia.it/t/php-gestione-formato-xml-di-fatture-e-notifiche-piu-client-e-server/6379/1 "2018-12-12T17:12:42Z")

</div>

**UPDATE**

Aggiornato il pacchetto per la gestione del formato XML di fatture e notifiche, nuovo repository:

[https://github.com/taocomp/php-e-invoice-it](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](https://github.com/taocomp/php-sdicoop-server) per l’implementazione dei web services TrasmissioneFatture e RicezioneFatture
- [https://github.com/taocomp/php-sdicoop-client](https://github.com/taocomp/php-sdicoop-client) per connettersi ai web services SdIRiceviFile e SdIRiceviNotifica
- [https://github.com/taocomp/php-sdicoop-invoice](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

---

<div class="post-metadata">

**Author:** ![cesco69](https://forum.italia.it/user_avatar/forum.italia.it/cesco69/32/1672_2.png) [@cesco69](https://forum.italia.it/u/cesco69)\
**Post date:** [13 Dicembre 2018, 7:43am UTC](https://forum.italia.it/t/php-gestione-formato-xml-di-fatture-e-notifiche-piu-client-e-server/6379/2 "2018-12-13T07:43:09Z")

</div>

Ottimo! anche se forse ormai è un po’ tardi, ormai siamo agli sgoccioli!

comunque sarà un ottimo modo per condividere soluzioni e miglioramenti per il futuro!

PS. ti consiglio di scrivere un messaggio anche nella mia discussione dove ci sono molti utenti che hanno usato php per implementare lo Sdi

---

<div class="post-metadata">

**Author:** ![aded](https://forum.italia.it/user_avatar/forum.italia.it/aded/32/1553_2.png) [@aded](https://forum.italia.it/u/aded)\
**Post date:** [18 Dicembre 2018, 9:17am UTC](https://forum.italia.it/t/php-gestione-formato-xml-di-fatture-e-notifiche-piu-client-e-server/6379/3 "2018-12-18T09:17:37Z")

</div>

Invio della fattura al SdI con il pacchetto [https://github.com/taocomp/php-sdicoop-client](https://github.com/taocomp/php-sdicoop-client):

`$invoice = new FatturaElettronica('FPR12');`  
`// ...settaggio valori...`

Client:  
`Client::setPrivateKey('/path/to/client.key');`  
`Client::setClientCert('/path/to/client.pem');`  
`Client::setCaCert('/path/to/ca.pem');`

`$client = new Client(array(`  
`'endpoint' => 'https://testservizi.fatturapa.it/ricevi_file',`  
`'wsdl' => '/path/to/wsdl/SdIRiceviFile_v1.0.wsdl'`  
`));`

Invio dell’oggetto fattura:  
`$fileSdI = new FileSdIBase();`  
`$fileSdI->load($invoice);`  
`$response = new RispostaSdIRiceviFile($client->RiceviFile($fileSdI));`

Response:  
`$id = $response->IdentificativoSdI;`  
`$datetime = $response->DataOraRicezione;`  
`$error = $response->Errore;`

Si procede analogamente per le notifiche (puntando all’endpoint delle notifiche col relativo WSDL). Vedere il readme e gli esempi del repository per il codice completo.

---

<div class="post-metadata">

**Author:** ![lucaange](https://forum.italia.it/letter_avatar_proxy/v4/letter/l/ecc23a/32.png) [@lucaange](https://forum.italia.it/u/lucaange)\
**Post date:** [5 Gennaio 2019, 3:45pm UTC](https://forum.italia.it/t/php-gestione-formato-xml-di-fatture-e-notifiche-piu-client-e-server/6379/4 "2019-01-05T15:45:14Z")

</div>

Salve aded,  
ti ringrazio per i tuoi preziosi codici che mi sto studiando  
Non sono un esperto ai tuoi livelli ma mi sto prodigando a fare un gestionale che genera gli xml delle mie fatture che inizialmente voglio trasmettere tramite mail!

Un dubbio mi assale, e dopo aver letto decine di pagine di guide ,form e codici non mi è chiaro quanto segue

Se io ultimo il mio codice che genera le mie fatture in formato xml e le invio tramite pec non dovrebbero esserci problemi

A cosa serve generare ed inviare notifiche al sistema di interscabio?

Perdona la mia domanda sicuramente stupida

---

<div class="post-metadata">

**Author:** ![aded](https://forum.italia.it/user_avatar/forum.italia.it/aded/32/1553_2.png) [@aded](https://forum.italia.it/u/aded)\
**Post date:** [7 Gennaio 2019, 11:59am UTC](https://forum.italia.it/t/php-gestione-formato-xml-di-fatture-e-notifiche-piu-client-e-server/6379/5 "2019-01-07T11:59:45Z")

</div>

Ciao Luca,

sono contento che il codice sviluppato possa essere utile anche ad altri! 🙂

Devi generare e inviare le notifiche solo se invii/ricevi la fatture attraverso il servizio SdICoop, quello che fa uso dei webservices (tuoi e dello SdI).  
Se invii le fatture via PEC non hai bisogno di mettere su dei webservices per ricevere le notifiche perché ti arriveranno via-PEC.

Qui più info:  
[https://www.fatturapa.gov.it/export/fatturazione/it/c-13.htm](https://www.fatturapa.gov.it/export/fatturazione/it/c-13.htm)

In particolare:

> Il soggetto che utilizza il canale PEC riceverà, sulla casella di PEC da cui ha effettuato la trasmissione, i [file messaggio](https://www.fatturapa.gov.it/export/fatturazione/it/b-2.htm) prodotti dal SdI relativi al proprio invio.

Fammi sapere se è tutto chiaro.  
In bocca al lupo per il tuo gestionale ed “happy coding” 🙂

---

<div class="post-metadata">

**Author:** ![jocevet](https://forum.italia.it/letter_avatar_proxy/v4/letter/j/bc79bd/32.png) [@jocevet](https://forum.italia.it/u/jocevet)\
**Post date:** [4 Settembre 2019, 4:10pm UTC](https://forum.italia.it/t/php-gestione-formato-xml-di-fatture-e-notifiche-piu-client-e-server/6379/6 "2019-09-04T16:10:02Z")

</div>

ciau aded , Hai qualche email dove posso contattarti?  
In questo momento desidero inviare una fattura elettronica attraverso il mio sito Web, ma non capisco molto di php

---

<div class="post-metadata">

**Author:** ![daniele\_m](https://forum.italia.it/user_avatar/forum.italia.it/daniele_m/32/1908_2.png) [@daniele\_m](https://forum.italia.it/u/daniele_m)\
**Post date:** [4 Settembre 2019, 5:40pm UTC](https://forum.italia.it/t/php-gestione-formato-xml-di-fatture-e-notifiche-piu-client-e-server/6379/7 "2019-09-04T17:40:59Z")

</div>

considera sempre che come requisito per utilizzare queste librerie, devi richiedere l’accreditamento all’agenzia delle entrare. poter caricare dei certificati sul server e poter estrarre le CSR.  
[https://sdi.fatturapa.gov.it/SdI2FatturaPAWeb/AccediAlServizioAction.do?pagina=accreditamento\_canale\_next](https://sdi.fatturapa.gov.it/SdI2FatturaPAWeb/AccediAlServizioAction.do?pagina=accreditamento_canale_next)

Nel caso tu non possa ottenere tali informazioni, non potresti inviare/ricevere le fatture

---

<div class="post-metadata">

**Author:** ![jocevet](https://forum.italia.it/letter_avatar_proxy/v4/letter/j/bc79bd/32.png) [@jocevet](https://forum.italia.it/u/jocevet)\
**Post date:** [6 Settembre 2019, 10:35am UTC](https://forum.italia.it/t/php-gestione-formato-xml-di-fatture-e-notifiche-piu-client-e-server/6379/8 "2019-09-06T10:35:57Z")

</div>

grazie daniele,  
potresti aiutarmi a realizzare questo sistema in php e quanto mi costerebbe?

---

<div class="post-metadata">

**Author:** ![daniele\_m](https://forum.italia.it/user_avatar/forum.italia.it/daniele_m/32/1908_2.png) [@daniele\_m](https://forum.italia.it/u/daniele_m)\
**Post date:** [6 Settembre 2019, 11:15am UTC](https://forum.italia.it/t/php-gestione-formato-xml-di-fatture-e-notifiche-piu-client-e-server/6379/9 "2019-09-06T11:15:58Z")

</div>

Va vista la situazione in cui ti trovi.  
hai scritto che vuoi inoltrare la fattura elettronica tramite il sito quindi immagino tu sia un’azienda che gestisce già il sistema di fatturazione.  
Per il sito hai acquistato uno spazio web oppure hai preso un server dove hai caricato il sito?  
Se hai preso solo lo spazio web, non potendo accedere alle configurazioni del server, è probabile che te non riesca a gestire la fatturazione elettronica.  
inoltre la fattura la vuoi inoltrare dal gestionale per eventuali acquisti e-commerce oppure è un servizio dove generi la fattura per conto del fornitore?

Eventualmente scrivimi in privato qualche dettaglio in più su cosa ti serve effettivamente e in che situazione ti trovi che se posso aiutarti o darti qualche consiglio.

---

<div class="post-metadata">

**Author:** ![jocevet](https://forum.italia.it/letter_avatar_proxy/v4/letter/j/bc79bd/32.png) [@jocevet](https://forum.italia.it/u/jocevet)\
**Post date:** [6 Settembre 2019, 1:30pm UTC](https://forum.italia.it/t/php-gestione-formato-xml-di-fatture-e-notifiche-piu-client-e-server/6379/10 "2019-09-06T13:30:04Z")

</div>

Ho l’hosting e il caricamento sul web, è un sito web creato con php mysql che utilizzo come amministratore in cui ho prodotti, registro vendite, fatture.  
ma ora ho bisogno di inviare fatture elettroniche attraverso questo sito Web o comunque creare un nuovo sito Web PHP da zero

---

<div class="post-metadata">

**Author:** ![Iceman](https://forum.italia.it/user_avatar/forum.italia.it/iceman/32/4374_2.png) [@Iceman](https://forum.italia.it/u/Iceman)\
**Post date:** [22 Ottobre 2020, 5:35pm UTC](https://forum.italia.it/t/php-gestione-formato-xml-di-fatture-e-notifiche-piu-client-e-server/6379/11 "2020-10-22T17:35:59Z")

</div>

Ciao, grazie per aver messo a disposizione i vostri codicei.  
Il mio problema è questo, ho un db (MYSQL) dove ho i dati utili per poter :

1. generare una fattura elettronica
2. Inviare il documento in formato XML alla PA o in alternativa caricarla direttamente dal portale di ADE

Ho scaricato i tuoi esempi ma non ho capito come poter inviare i dati dal DB ai moduli sopra esposti, in modo da poter generare appunto un documento, mi potresti aiutare con qualche esempio o suggerimento ?

Ringrazio in anticipo
