Italian [B4X] SD p7m (Fattura elettronica)

Star-Dust

Expert
Licensed User
Longtime User
Purtroppo non posso fari un esempio completo di file (.p7m) con una fattura vera che contiene dati personali di un azienda fornitrice di servizio e un cliente.

Ma ti posso fare un esempio di codice:
B4X:
Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    Private Parse As ParseXml
    Private XMLTreeView1 As XMLTreeView
    Dim p7m_fe As p7m
End Sub

' esempio di nome file sorgente XML/p7m:  "IT00000000000002_AAAA.xml.p7m"'
Sub recuperoFattura(PathSorgente As String,NomeFileSorgente As String, NomeFileDestinazione As String)
    p7m_fe.Initialize(PathSorgente ,NomeFileSorgente)
    Parse.Initialize(p7m_fe.xlmString)
   
    If Parse.ErrorXML.Size>0 Then
         ' Se il file XML è privo di errori salva il testo estratto "p7m_fe.xlmString" (ovviamente in formato XML)
         ' il nome del file potrebbe essere anche lo stesso dell'originale privato dell'estenzione p7m
         ' NuovoNome=NomeXML.Replace(".p7m","")
        File.WriteString(File.DirInternal,NomeFileDestinazione,Parse.ProperXML)
    Else
        ' Se il file contiene errori salva il testo corretto",p7m_fe.xlmString"
        File.WriteString(File.DirInternal,NomeFileDestinazione,p7m_fe.xlmString)
    End If

'    If p7m_fe.AllegatoFileName<>"" Then
'        ' Se c'è allegato lo salvo
'        File.WriteString(File.DirInternal,p7m_fe.AllegatoFileName,p7m_fe.AllegatoToString)
'    End If

     ' Visualizza campi XMl nell'albero visivo
     XMLTreeView1.RenderXML(p7m_fe.xlmString)
End Sub
 
Last edited:

amorosik

Expert
Licensed User
Prossimamente pubblicherò una libreria che verifica se XML contiene errori, li corregge e infine visualizza il file in formato albero(tree) e in formato fattura

Complimenti, gran bel lavoro
Ma come fa a 'correggere' eventuali errori?
O meglio, che tipo di errori e' in grado di correggere?
 

Star-Dust

Expert
Licensed User
Longtime User
Complimenti, gran bel lavoro
Ma come fa a 'correggere' eventuali errori?
O meglio, che tipo di errori e' in grado di correggere?
Il format XML, contiene dei dati all'interno di etichette. Ogni etichetta ha un marcatore di inizio e uno di fine etichetta. Un etichetta a sua volta può contenere all'interno altre etichette. Puoi pensare a una struttura ad albero.

La funzione a cui fai riferimento, verifica che ogni etichetta aperta sia chiusa, e nell'ordine corretto inverso a come viene aperta. ovvero l'ultima aperta dev'essere la prima da trovare chiusa.
Questo serve per verificare che la lettura del file XML sia nel formato corretto. Ad esempio se è salvato in formato WINDOWS-152 ma viene letto in formato UTF il testo risultante conterrà errori nell' "interpretazione" del testo.
Ad esempio una Label aperta come <Attachment> e trova una chiusura </Attachmeüt> allora c'è un errore.
La funzione va a cercare se c'è un apertura con un nome simile e tenterà di ripristinare il nome corretto. Se non è possibile correggerlo segnala l'errore.
A volte potrebbe non trovare la chiusura, oppure trovare la chiusura e non l'apertura. In questi casi segnala errore perché non è possibile correggere.

In genere gli errori nascono proprio dalla codifica del testo. Molti scaricano al fattura da aruba, e sembra non mantenga uno standard di trasmissione dell'email e quindi errori di lettura sono frequenti.
 
Last edited:

amorosik

Expert
Licensed User
Il format XML, contiene dei dati all'interno di etichette. Ogni etichetta ha un marcatore di inizio e uno di fine etichetta. Un etichetta a sua volta può contenere all'interno altre etichette. Puoi pensare a una struttura ad albero.

La funzione a cui fai riferimento, verifica che ogni etichetta aperta sia chiusa, e nell'ordine corretto inverso a come viene aperta. ovvero l'ultima aperta dev'essere la prima da trovare chiusa.
Questo serve per verificare che la lettura del file XMl sia nel formato corretto. Ad esempio se è salvato in formato WINDOWS-152 ma viene letto in formato UTF il testo risultante conterrà errori nell' "interpretazione" del testo.
Ad esempio una Label aperta come <Attachment> e trova una chiusura </Attachmeüt> allora c'è un errore.
La funzione va a cercare se c'è un apertura con un nome simile e tenterà di ripristinare il nome corretto. Se non è possibile correggerlo segnala l'errore.
Avolte potrebbe non trovare la chiusura, oppure trovare la chiusura e non l'apertura. In questi casi segnala errore perchè non possibile correggere.

In genere gli errori nascono proprio dalla codifica del testo. Molti scaricano al fattura da aruba, e sembra non mantenga uno standard di trasmissione dell'email e quindi errori di lettura sono frequenti.

Ah ora capisco, avevo frainteso
Speravo potesse riconoscere il cap a 4 cifre invece delle 5 richieste o la partita Iva scorretta o cose del genere
Grazie
 

Roberto P.

Well-Known Member
Licensed User
Longtime User
Ciao a tutti,
purtroppo, ho anche io la stessa esigenza! Onde evitare di dover reinventare la ruota, chiedo come può essere utilizzata la libreria e se metti a disposizione i sorgenti? Grazie mille in anticipo.
Saluti
 
Top