Visualizzare e formattare in HTML una fattura elettronica con del codice PHP concettualmente è semplice, ma scrivere un apposito programma che fa un parsing del codice XML, e quindi disegnare un layout HTML in cui inserire i dati ottenuti, è uno spreco di tempo, se lo si fa solo per “guardare” la fattura senza doverla ulteriormente processare in modo automatizzato.
Per questo ringraziamo AssoSoftware che fornisce liberamente il suo foglio di stile XSL (in realtà ne esiste anche uno ufficiale rilasciato da Sogei, ma… vabè non devo aggiungere niente su Sogei e quindi se volete provatelo, e mi saprete dire nei commenti quale vi piace di più), il quale applicato all’XML originale seguendo questa guida restituisce una gradevole formattazione tabellare completa di annotazioni.
D’accordo lo ammetto questo articolo dai risultati di ricerca sembra essere fuorviante, perché io stesso cercando una routine che leggesse l’XML per restituire delle variabili in PHP, ho trovato il mio articolo pensando “vuoi vedere che l’ho già scritta io questa routine e me ne sono dimenticato?” ed invece no… quindi non essendoci altre risorse realmente utilizzabili per il PHP, credo proprio che ora mi ci metterò io a scrivere la routine…
Ho rimediato e l’ho appena scritta.
Questo è uno snippet del mio reale codice, per chi bazzica di PHP è comprensibile. E’ incompleto siccome mi serviva solo a recepire i dati che vanno inseriti nel registro acquisti, ma la logica dietro è abbastanza chiara per poterlo estendere a vostro piacimento.
$xml = simplexml_load_string($source); $supplier = $xml->FatturaElettronicaHeader->CedentePrestatore->DatiAnagrafici->Anagrafica->Denominazione; if (!$supplier) { $supplier = $xml->FatturaElettronicaHeader->CedentePrestatore->DatiAnagrafici->Anagrafica->Nome . " " . $xml->FatturaElettronicaHeader->CedentePrestatore->DatiAnagrafici->Anagrafica->Cognome; } $supplierpiva = $xml->FatturaElettronicaHeader->CedentePrestatore->DatiAnagrafici->IdFiscaleIVA->IdCodice; $suppliervia = $xml->FatturaElettronicaHeader->CedentePrestatore->Sede->Indirizzo; $suppliercivico = $xml->FatturaElettronicaHeader->CedentePrestatore->Sede->NumeroCivico; $suppliercap = $xml->FatturaElettronicaHeader->CedentePrestatore->Sede->CAP; $suppliercomune = $xml->FatturaElettronicaHeader->CedentePrestatore->Sede->Comune; $supplierprovincia = $xml->FatturaElettronicaHeader->CedentePrestatore->Sede->Provincia; $invoicedate = $xml->FatturaElettronicaBody->DatiGenerali->DatiGeneraliDocumento->Data; $invoiceno = $xml->FatturaElettronicaBody->DatiGenerali->DatiGeneraliDocumento->Numero; $invoicewhat = $xml->FatturaElettronicaBody->DatiGenerali->DatiGeneraliDocumento->Causale[0]; if (!$invoicewhat) $invoicewhat=$xml->FatturaElettronicaBody->DatiBeniServizi->DettaglioLinee[0]->Descrizione; foreach ($xml->FatturaElettronicaBody->DatiBeniServizi->DatiRiepilogo as $riepilogo) { switch ($riepilogo->AliquotaIVA) { case "22.00": $imponibileord = $riepilogo->ImponibileImporto; $impostaord = $riepilogo->Imposta; break; case "10.00": $imponibilerid = $riepilogo->ImponibileImporto; $impostarid = $riepilogo->Imposta; break; case "4.00": $imponibilemin = $riepilogo->ImponibileImporto; $impostamin = $riepilogo->Imposta; break; case "0.00": $esente = $riepilogo->ImponibileImporto; break; } }
Hai trovato una soluzione per la lettura di fatture firmate? Soprattutto quelle con i chunk nel mezzo della fattura.
In realtà era una funzione che il mio gestionale aveva già, ma non l’ho pubblicata perché seguiva un tutorial che avevo letto altrove e nulla aveva a che fare direttamente con PHP, e immaginavo che così come lo avevo trovato io, lo avrebbero trovato altri.
Comunque ho appena pubblicato un nuovo articolo che parla di questo: lettura di una fattura elettronica firmata p7m con php