Visualizzatore Classi Estese fatturaPA

VB6 – Creare la fattura elettronica in un progetto VB6 con pochi sforzi (codice)

ATTENZIONE!!! IL PROGETTO È STATO SPOSTATO IN UN NUOVO SITO COSÌ DA POTERLO GESTIRE MEGLIO E CONTINUARE AD AGGIORNARLO PER MAGGIORI INFORMAZIONI ANDARE AL SEGUENTE LINK Fattura Elettronica 2019

Oggi vi voglio parlare di come utilizzare la libreria fatturaPA creata da me apposta per interfacciarsi con VB6 . Ecco i due file che andremmo ad utilizzare  : fatturaPA.dll e fatturaPA.tlb
Attualmente è stata aggiornata alla versione v.1.2.1

Allego la struttura grafica della libreria fatturaPA.dll :

Schema Libreria fatturaPA.dll
Schema Libreria fatturaPA.dll v.1.1
Visualizzatore Classi Estese fatturaPA
Visualizzatore Classi Estese fatturaPA

Diagramma

Prima di procedere alla creazione del progetto in VB6 dobbiamo registrare i due file  fatturaPA.dll e il file fatturaPA.tlb .

1 – Per prima cosa copiare i file (fatturaPA.dll e fatturaPA.tlb) nella directory “c:\Windows\System32” , vi chiederà di avere i diritti di Aministratori.

2 – Prima cosa da fare è avviare il Prompt dei comandi concedendogli i permessi d’amministrazione. Per fare ciò spostiamoci nel menu start, cerchiamo la voce cmd, clicchiamo con tasto destro sulla voce Prompt dei comandi e clicchiamo su Esegui come amministratore. (Windows 8)

cmd_pront

Windows 7

win7ci-cmd-run-as-administrator

3 – Posizionarsi nella cartella del Framework (consigliabile v4.0.30319)

 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 

cmd_step1

cmd_step2

4 – Ora eseguiamo la registrazione della libreria fatturaPA.dll e del file fatturaPA.tlb  con il seguente comando RegAsm.exe  <percorso dll> /tlb:<percorso tlb>

 RegAsm.exe C:\WINDOWS\System32\fatturaPA.dll /tlb:C:\WINDOWS\System32\fatturaPA.tlb 
[Corretto grazie alla segnalazione di max66]

cmd_step3

cmd_step4

5 – Per finire dobbiamo dar l’ultimo comando

RegAsm.exe c:\Windows\System32\fatturaPA.dll /codebase 

cmd_step5

cmd_step6

N.B. : Per de registrare la libreria basta scrivere

RegAsm.exe /u c:\Windows\System32\fatturaPA.dll

Codice per creare una fattura elettronica in VB6.

Ricordo di aggiungere nei Riferimenti in VB6 il file “fatturaPA.tlb” e non la libreria “fatturaPA.dll”

Ecco alcune immagini che vi possono aiutare :

Ecco il progetto come apare :

vb6_step1

Dopo copiato il codice dobbiamo fare clic su Progetto e poi click su Riferimenti e appare una schermata fare click su Sfoglia andare su “c:\windows\system32\” e seleziona la libreria “fatturaPA.tlb” e il gioco è fatto.

vb6_step2_sfoglia

Quando appare la libreria “fatturaPA – Creazione Fattura Elettronica” significa che avete fatto tutto bene.

vb6_step2_riferimenti

Ho inserito nel progetto di VB6 due bottoni “cmdCreaXMLTestFatturaPA_Click()” e “cmdCreaFatturaDemoNewSave_Click()”  con il primo bottone avvia in automatica la creazione della fatturaPA e la salva sotto Documenti dell’utente senza dove specificare il percorso , mentre il secondo bottone serve per specificare un nuovo percorso al file.Poi ho creato un metodo “CreaFileXML()” dove ho simulato il file XML della fattura che mette l’Agenzia dell’entrate come esempio IT01234567890_11001.xml

Private Sub cmdCreaFatturaDemoNewSave_Click()
Dim percorsoSave As String
percorsoSave = InputBox("Inserisci il percorso dove salvare il file XML della Fattura", "Inserisci percorso del File", "c:\demo\DemoFatturaPA.xml")

If percorsoSave &amp;amp;amp;amp;amp;lt;&amp;amp;amp;amp;amp;gt; "" Then

 Call CreaFileXML(percorsoSave)
 MsgBox "Fatto"

Else
 MsgBox "Errore percorso inesistente", vbCritical, "Errore Percorso"
End If
End Sub

Private Sub cmdCreaXMLTestFatturaPA_Click()
 Call CreaFileXML

End Sub

Private Sub CreaFileXML(Optional ByVal percorsoSaveXML As String)
 Dim var 'variabile di appoggio che serve per richiamare alcuni metodi

 Dim objFatturaPA As fatturaPA.fatturaPA
 Set objFatturaPA = New fatturaPA.fatturaPA

 Dim nodoPrincipale As fatturaPA.FatturaElettronica
 Set nodoPrincipale = New fatturaPA.FatturaElettronica

 Dim overview As fatturaPA.FatturaElettronicaHeader
 Set overview = New fatturaPA.FatturaElettronicaHeader

 Dim DatiTrasmissione1 As fatturaPA.DatiTrasmissione
 Set DatiTrasmissione1 = New fatturaPA.DatiTrasmissione

 Dim IdTrasmittente1 As fatturaPA.IdTrasmittente
 Set IdTrasmittente1 = New fatturaPA.IdTrasmittente

 IdTrasmittente1.IdPaese = "IT"
 IdTrasmittente1.IdCodice = "01234567890"

 DatiTrasmissione1.IdTrasmittente = IdTrasmittente1
 DatiTrasmissione1.ProgressivoInvio = "00001"
 DatiTrasmissione1.FormatoTrasmissione = "SDI11"
 DatiTrasmissione1.CodiceDestinatario = "AAAAAA"

 Dim contattiTrasmittentes As fatturaPA.ContattiTrasmittente
 Set contattiTrasmittentes = New fatturaPA.ContattiTrasmittente
 'contattiTrasmittentes.Telefono = "060601"
 'contattiTrasmittentes.Email = "[email protected]"
 DatiTrasmissione1.ContattiTrasmittente = contattiTrasmittentes

 'Scrivi XML

 overview.DatiTrasmissione = DatiTrasmissione1

 Dim cedentePrestatore As fatturaPA.cedentePrestatore
 Set cedentePrestatore = New fatturaPA.cedentePrestatore

 Dim datiAnagrafici As fatturaPA.datiAnagrafici
 Set datiAnagrafici = New fatturaPA.datiAnagrafici

 Dim idFiscaleIVA As fatturaPA.idFiscaleIVA
 Set idFiscaleIVA = New fatturaPA.idFiscaleIVA

 idFiscaleIVA.IdPaese = "IT"
 idFiscaleIVA.IdCodice = "01234567890"

 datiAnagrafici.idFiscaleIVA = idFiscaleIVA

 Dim anagrafica As fatturaPA.anagrafica
 Set anagrafica = New fatturaPA.anagrafica

 anagrafica.Denominazione = "SOCIETA' ALPHA SRL"

 datiAnagrafici.anagrafica = anagrafica

 datiAnagrafici.RegimeFiscale = "RF19"

 cedentePrestatore.datiAnagrafici = datiAnagrafici

 Dim sede As fatturaPA.sede
 Set sede = New fatturaPA.sede

 sede.Indirizzo = "VIALE ROMA 543"
 sede.CAP = "07100"
 sede.Comune = "SASSARI"
 sede.Provincia = "SS"
 sede.Nazione = "IT"

 cedentePrestatore.sede = sede

 overview.cedentePrestatore = cedentePrestatore

 Dim cessionarioCommittente As fatturaPA.cessionarioCommittente
 Set cessionarioCommittente = New fatturaPA.cessionarioCommittente

 Dim datiAnagraficiCommittente As fatturaPA.datiAnagrafici
 Set datiAnagraficiCommittente = New fatturaPA.datiAnagrafici

 datiAnagraficiCommittente.CodiceFiscale = "09876543210"

 Dim anagraficaCommittente As fatturaPA.anagrafica
 Set anagraficaCommittente = New fatturaPA.anagrafica

 anagraficaCommittente.Denominazione = "AMMINISTRAZIONE BETA"

 datiAnagraficiCommittente.anagrafica = anagraficaCommittente

 cessionarioCommittente.datiAnagrafici = datiAnagraficiCommittente

 Dim sedeCcommittente As fatturaPA.sede
 Set sedeCcommittente = New fatturaPA.sede

 sedeCcommittente.Indirizzo = "VIA TORINO 38-B"
 sedeCcommittente.CAP = "00145"
 sedeCcommittente.Comune = "ROMA"
 sedeCcommittente.Provincia = "RM"
 sedeCcommittente.Nazione = "IT"

 cessionarioCommittente.sede = sedeCcommittente

 overview.cessionarioCommittente = cessionarioCommittente

 'Scrivi XML nodo FatturaElettronicaHeader

 nodoPrincipale.FatturaElettronicaHeader = overview

 '
 ' FINITO LA PARTE FatturaElettronicaHeader
 '

 Dim overview1 As fatturaPA.FatturaElettronicaBody
 Set overview1 = New fatturaPA.FatturaElettronicaBody

 Dim datiGenerali As fatturaPA.datiGenerali
 Set datiGenerali = New fatturaPA.datiGenerali

 Dim datiGeneraliDocumentos As fatturaPA.DatiGeneraliDocumento
 Set datiGeneraliDocumentos = New fatturaPA.DatiGeneraliDocumento
 datiGeneraliDocumentos.TipoDocumento = "TD01"
 datiGeneraliDocumentos.Divisa = "EUR"
 datiGeneraliDocumentos.Data = "2014-12-18"
 datiGeneraliDocumentos.Numero = "123"

 'Aggiungiamo due Causali in una lista

 var = datiGeneraliDocumentos.AddCausale("LA FATTURA FA RIFERIMENTO AD UNA OPERAZIONE AAAA BBBBBBBBBBBBBBBBBB CCC DDDDDDDDDDDDDDD E FFFFFFFFFFFFFFFFFFFF GGGGGGGGGG HHHHHHH II LLLLLLLLLLLLLLLLL MMM NNNNN OO PPPPPPPPPPP QQQQ RRRR SSSSSSSSSSSSSS")
 var = datiGeneraliDocumentos.AddCausale("SEGUE DESCRIZIONE CAUSALE NEL CASO IN CUI NON SIANO STATI SUFFICIENTI 200 CARATTERI AAAAAAAAAAA BBBBBBBBBBBBBBBBB")

 datiGenerali.DatiGeneraliDocumento = datiGeneraliDocumentos

 Dim datiOrdineAcquisto As fatturaPA.datiOrdineAcquisto
 Set datiOrdineAcquisto = New fatturaPA.datiOrdineAcquisto

 'Essendo una Lista devo usare AddRiferimentoNumeroLinea
 var = datiOrdineAcquisto.AddRiferimentoNumeroLinea("1")

 datiOrdineAcquisto.IdDocumento = "66685"
 datiOrdineAcquisto.NumItem = "1"
 datiOrdineAcquisto.CodiceCUP = "123abc"
 datiOrdineAcquisto.CodiceCIG = "456def"

 'Essendo una lista devo usare AddDatiOrdineAcquisto
 var = datiGenerali.AddDatiOrdineAcquisto(datiOrdineAcquisto)

 Dim datiContratto As fatturaPA.datiContratto
 Set datiContratto = New fatturaPA.datiContratto

 datiContratto.RiferimentoNumeroLinea = "1"
 datiContratto.IdDocumento = "123"
 datiContratto.Data = "2012-09-01"
 datiContratto.NumItem = "5"
 datiContratto.CodiceCUP = "123abc"
 datiContratto.CodiceCIG = "456def"

 'Essendo una lista devo usare AddDatiContratto
 var = datiGenerali.AddDatiContratto(datiContratto)

 Dim datiConvenzione As fatturaPA.datiConvenzione
 Set datiConvenzione = New fatturaPA.datiConvenzione

 datiConvenzione.RiferimentoNumeroLinea = "1"
 datiConvenzione.IdDocumento = "123"
 datiConvenzione.NumItem = "5"
 datiConvenzione.CodiceCUP = "123abc"
 datiConvenzione.CodiceCIG = "456def"

 'Essendo una lista devo usare AddDatiConvenzione
 var = datiGenerali.AddDatiConvenzione(datiConvenzione)

 Dim datiRecezione As fatturaPA.DatiRicezione
 Set datiRecezione = New fatturaPA.DatiRicezione

 'Essendo una Lista devo usare AddRiferimentoNumeroLinea
 var = datiRecezione.AddRiferimentoNumeroLinea("1")

 datiRecezione.IdDocumento = "123"
 datiRecezione.NumItem = "5"
 datiRecezione.CodiceCUP = "123abc"
 datiRecezione.CodiceCIG = "456def"

 'Essendo una lista devo usare AddDatiRicezione
 var = datiGenerali.AddDatiRicezione(datiRecezione)

 Dim DatiTrasporto As fatturaPA.DatiTrasporto
 Set DatiTrasporto = New fatturaPA.DatiTrasporto

 Dim DatiAnagraficiVettore As fatturaPA.DatiAnagraficiVettore
 Set DatiAnagraficiVettore = New fatturaPA.DatiAnagraficiVettore

 Dim idFiscaleIVAVettore As fatturaPA.idFiscaleIVA
 Set idFiscaleIVAVettore = New fatturaPA.idFiscaleIVA

 idFiscaleIVAVettore.IdPaese = "IT"
 idFiscaleIVAVettore.IdCodice = "24681012141"
 DatiAnagraficiVettore.idFiscaleIVA = idFiscaleIVAVettore

 Dim anagraficaVettore As fatturaPA.anagrafica
 Set anagraficaVettore = New fatturaPA.anagrafica

 anagraficaVettore.Denominazione = "Trasporto spa"
 DatiAnagraficiVettore.anagrafica = anagraficaVettore

 DatiTrasporto.DatiAnagraficiVettore = DatiAnagraficiVettore

 DatiTrasporto.DataOraConsegna = "2012-10-22T16:46:12.000+02:00"

 datiGenerali.DatiTrasporto = DatiTrasporto

 'Scrivi XML

 overview1.datiGenerali = datiGenerali

 Dim datiBeneServizi As fatturaPA.DatiBeniServizi
 Set datiBeneServizi = New fatturaPA.DatiBeniServizi

 Dim infoDettaglioLinee1 As fatturaPA.DettaglioLinee
 Set infoDettaglioLinee1 = New fatturaPA.DettaglioLinee

 infoDettaglioLinee1.NumeroLinea = "1"
 infoDettaglioLinee1.Descrizione = "LA DESCRIZIONE DELLA FORNITURA PUO' SUPERARE I CENTO CARATTERI CHE RAPPRESENTAVANO IL PRECEDENTE LIMITE DIMENSIONALE. TALE LIMITE NELLA NUOVA VERSIONE E' STATO PORTATO A MILLE CARATTERI"
 infoDettaglioLinee1.Quantita = "5.00"
 infoDettaglioLinee1.PrezzoUnitario = "1.00"
 infoDettaglioLinee1.PrezzoTotale = "5.00"
 infoDettaglioLinee1.AliquotaIVA = "22.00"

 'Essendo una lista devo utilizzare AddDettaglioLinee
 var = datiBeneServizi.AddDetaglioLinee(infoDettaglioLinee1)

 Dim datiRiepilogo As fatturaPA.datiRiepilogo
 Set datiRiepilogo = New fatturaPA.datiRiepilogo

 datiRiepilogo.AliquotaIVA = "22.00"
 datiRiepilogo.ImponibileImporto = "5.00"
 datiRiepilogo.Imposta = "1.10"
 datiRiepilogo.EsigibilitaIVA = "I"

 'Essendo una lista devo usare AddDatiRiepilogo
 var = datiBeneServizi.AddDatiRiepilogo(datiRiepilogo)

 overview1.DatiBeniServizi = datiBeneServizi

 Dim datiPagamento As fatturaPA.datiPagamento
 Set datiPagamento = New fatturaPA.datiPagamento

 datiPagamento.CondizioniPagamento = "TP01"

 Dim DettaglioPagamento As fatturaPA.DettaglioPagamento
 Set DettaglioPagamento = New fatturaPA.DettaglioPagamento

 DettaglioPagamento.ModalitaPagamento = "MP01"
 DettaglioPagamento.DataScadenzaPagamento = "2015-01-30"
 DettaglioPagamento.ImportoPagamento = "6.10"

 'Essendo una lista devo usare AddDettaglioPagamento
 var = datiPagamento.AddDettaglioPagamento(DettaglioPagamento)

 'Essendo una lista devo usare AddDatiPagamento
 var = overview1.AddDatiPagamento(datiPagamento)

 '
 ' FINITO LA PARTE FatturaElettronicaBody
 '

 'Essendo una Lista FatturaElettronicaBody devo usare AddFatturaElettronicaBody
 var = nodoPrincipale.AddFatturaElettronicaBody(overview1)
 nodoPrincipale.versione = "1.1"

 Dim s As Variant 'Serve per far eseguire il metodo createFatPA()
 If (percorsoSaveXML &amp;amp;amp;amp;amp;lt;&amp;amp;amp;amp;amp;gt; vbNullString) Then
 s = objFatturaPA.createFatPA(nodoPrincipale, percorsoSaveXML)
 Else
 s = objFatturaPA.createFatPA(nodoPrincipale)
 End If
End Sub

Ecco la libreria e il progetto in VB6 :

Vi invito a visitare il seguente sito dedicato interamente al progetto della fattura elettronica :

Fattura Elettronica 2019 

Password Download File = “ImaginSystems”

Allego il file della tabella con i relativi campi, può sempre essere utile : Formato_FatturaPA_tabellare_V1.1.pdf

Allego link al file della Guida Fattura Elettronica v.1.1 :  Suggerimenti_Compilazione_FatturaPA_V1.1.pdf

112 commenti su “VB6 – Creare la fattura elettronica in un progetto VB6 con pochi sforzi (codice)”

  1. GRANDISSIMO!!!!!!
    Appena riuscirò a scrivere il mio primo file XML vedrò la struttura e poi sicuramente dovrò farti delle domande.
    Ad occhio mi pare sempre che nel codice manca la parte relativa alla .
    Massimo

  2. Ciao Davide, ottimo lavoro davvero, solo che non riesco a provare il tutto in quanto in fase di registrazione della dll mi da errore sia RegAsm che regsvr32. Ho Win 8.1 ma non credo sia questo il problema.
    Comunque complimenti ancora per l’ottimo lavoro e per la condivisione.
    Ciao, Stefano.

  3. Ciao Stefano,
    Proviamo a fare di nuovo tutti i passaggi :

    Mi puoi dire che “Framework” hai installato?
    Quando scrivi i comandi , dal Pront Comand li esegui da Amministratore?
    Che errore ti d’ha quando scrivi “RegAsm.exe c:\Windows\System32\fatturaPA.dll /tlb:c:\windows\system32\fatturaPA.tlb”

    Saluti Davide.

  4. Ciao Davide e grazie dell’aiuto.
    Allora il framework è v4.0.30319 come nel tuo esempio…
    Il prompt è aperto come amministratore…
    L’errore è:
    RegASM : error RA0000 : Impossibile trovare l’assembly di input ‘c:\Windows\System32\fatturaPA.dll’ o una delle relative dipendenze.
    Ti confermo che entrambi i file dll e tlb sono in system32.
    Ciao e grazie ancora, Stefano.

  5. Quell’errore è dovuto al fatto che il comando RegAsmnon prova a scrivere nella cartella “c:\windows\systm32” ma non dispone dei diritti di Amministratore e quindi da errore.

    Prova a metterla i file in un’altra cartella esempio :

    Crea una cartella “fatturaPA” in “c:\” -> “c:\fatturaPA”
    Poi avvi il Prompt dei comandi ed inserisci :

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe “c:\fatturaPA\fatturaPA.dll” “/tlb:c:\fatturaPA\fatturaPA.tlb”

    Fammi sapere se ci sei riuscito.
    Saluti Davide.

  6. Ciao Davide, un paio di domande:
    – la libreria 3.5 funziona con VB6 ?
    – secondo te è obbligatorio compilare la parte relativa all’intermediario se si usa ad esempio Legal Invoice di Infocert? A me il sito la fattura la carica anche senza questa informazione, non vorrei però ci fossero problemi dopo.

  7. Ciao grazie mille per il tuo progetto ma a me quando lo eseguo da il seguente errore:

    Errore di Runtime ‘2147024894 (800700002)’:
    errore di automazione
    Impossibile trovare il file specificato.

    potresti aiutarmi?
    grazie

    Francesco

  8. Se vuoi che ti aiuto mi devi scrivere :

    1-Versione di Windows
    2-Che comando scrivi per far apparire l’errore?
    3-Quando importi il .tlb in VB6 ti appare l’errore?

    Saluti Davide.

  9. Windows 7
    nessun comando clicco sul pulsante per creare l’xml
    e mi da l’errore, nei riferimenti tt ok nessun errore
    l’errore lo da su ” Set objFatturaPA = New fatturaPA.fatturaPA”
    premetto che per velocizzare la prova ho usato il codice in MsAccess VB che comunque ha sempre funzionato in passato.
    grazie

  10. Ciao Francesco, prendo come già fatte ed eseguiti i passaggi per la registrazione della .dll , con esito positivo.

    Riepilogo Veloce:

    1) Avvio il Pront dei Comandi con i diritti da Amministratore
    2) Comando da scrivere nel Pront dei comandi e premere Enter/Invio .
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe “c:\Windows\System32\fatturaPA.dll” “/tlb:c:\Windows\System32\fatturaPA.tlb” /codebase
    3) Nel caso riprovare a rifare tutta la procedura di come si registra un .tlb

    Se hai avuto problemi come un utente prima ti consiglio :
    Prova a metterla i file della libreria in un’altra cartella diversa scelta da te, per esempio :

    Crea una cartella “fatturaPA” in “c:\” -> “c:\fatturaPA”
    Poi avvi il Prompt dei comandi ed inserisci :

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe “c:\fatturaPA\fatturaPA.dll” “/tlb:c:\fatturaPA\fatturaPA.tlb”

    Nel frattempo mi puoi scrivere che Versione di MsAccess usi? cosi provo a utilizzarla e fare le prove?

    Saluti Davide

  11. Ti ringrazio di quanto hai fatto, posso avere un’aiuto, le fatture che devo emettere devono avere come
    1.6 CC
    e non riesco ad inserirlo nel codice, grazie in aticipo.

  12. RISOLTO , ERA UN PROBLEMA DI REGISTRAZIONE DELLE DLL , HO CREATO il file xml come vuole la legge ma quando provo a controllarlo su internet sul sito fatturapc.gov.it mi da errore . dice che non tutti i campi sono giusti , si blocca per esempio si blocca sulla data , potreste aiutarmi ?
    grazie sempre per il vostro prezioso supporto
    francesco

    1. Ciao Francesco, prova a scrivermi il codice dell’errore che ti appare dal sito http://sdi.fatturapa.gov.it/SdI2FatturaPAWeb/AccediAlServizioAction.do?pagina=controlla_fattura . Oppure fammi un Screenshot dell’errore cosi posso capire meglio e poi aiutarti.

      Cosi dal codice posso aiutarti bene. Sicuramente sarà una piccola stupidaggine da aggiungere o un parametro da impostare.

      Info per tutti : Qui potete scaricare l’elenco degli errori della verifica della validità del file XML : http://www.fatturapa.gov.it/export/fatturazione/sdi/Elenco_Controlli_V1.1.pdf

      Un saluto Davide.

    2. Ciao,
      anche io o problemi e penso che sia un problema di registrazione della dll.. potresti dirmi come hai risolto con la registrazione della dll?

      Grazie

      Ciao

      Simone

  13. Ciao , era come avevi detto avevo sbagliato a registrare le DLL,
    un’altra cosa volevo chiedere, che non trovo nel codice, come faccio ad allegare un file alla fattura PA ?
    grazie mille

    Francesco

  14. Salve, volevo sapere se la libreria include anche la funzione di inserire degli allegati criptati “base64binary”…
    Non utilizzo Vb per sviluppare, ma Windev v.18 della PcSoft, ma sostanzialmente è un tool per sviluppare “vb like” e non ho dovrei avere problemi per utilizzare la tua libreria.
    Mi serviva sapere solo questa informazione e poi procedere alla stesura del programma, dato che con le istruzione XML native fornite da Windev, il contenuto degli allegati mi viene “troncato” quando lo inserisce nel file XML.. Che sia un problema legato alle specifiche XSD??
    Grazie.
    Gianni

  15. Buongiorno,
    complimenti per l’articolo. Tutto perfetto e semplice da utilizzare. Vorrei solo chiederle gentilmente se poteva aiutarmi a risolvere un piccolo problema.
    Con le fattura che hanno più dati riepilogativi IVA ho modificato il codice in questo modo:

    Dim datiRiepilogo As FatturaPA.datiRiepilogo
    Set datiRiepilogo = New FatturaPA.datiRiepilogo
    rst1.Open “SELECT causale,imponibile from dettaglio_iva”, cn
    While Not rst1.EOF
    datiRiepilogo.AliquotaIVA = rst1!causale
    datiRiepilogo.ImponibileImporto = Replace(rst1!imponibilr, “,”, “.”)
    datiRiepilogo.EsigibilitaIVA = “S”
    ‘Essendo una lista devo usare AddDatiRiepilogo
    var = datiBeneServizi.AddDatiRiepilogo(datiRiepilogo)
    rst1.MoveNext
    Wend
    rst1.Close
    overview1.DatiBeniServizi = datiBeneServizi

    Mi inserisce correttamente 2 volte il gruppo datiriepilogo, ma le voci sono le stesse (sempre l’ultima):


    22.00
    909.16
    200.02
    S


    22.00
    909.16
    200.02
    S

    Probabilmente non ho modificato correttamente il codice. Potrebbe aiutarmi per cortesia?
    Grazie 1000, Lorenzo

    1. salve il problema si presenta anche a me, con piu’ righe di articoli inserisce, quando salvo il file xml, sempre l’ultima riga degli articoli.
      Come posso correggere l’errore ?
      IL codice e’ scritto corretto.
      Grazie saluti

      1. Ciao Kmaxmino, mi puoi postare le porzioni dei file xml prima quella errata e poi quella giusta cosi da poterti aiutare meglio nella scrittura del codice?

        A breve pubblico una versione beta della libreria con il relativo prototipo in VB6.

        1. Ciao ti ringrazio ci sono riuscito ad inserire piu righe di articoli nella fattura xml.
          Ho un problema invece quando verifico il file sul sito dell agenzia delle entrate mi da errore 00200, come posso risolvere il problema ?
          Ti ringrazio fin da ora per l’interesse mostrato.
          Saluti

          1. Ciao kmaxmino, ti posso segnalare alcune cause per cui ricevi il seguente errore 00200, prova a segnalarci riga o colonna? Porzione di codice xml? :

            Motivo: formato non conforme senza indicazione del numero di riga o colonna

            Se il messaggio di scarto di SDI è del tipo “File non conforme al formato – Codice di Errore 00200” probabilmente nel vostro file xml sono presenti caratteri speciali non consentiti. Un esempio è “Soft.Com di Filippo Cerulo & C.”: il file viene scartato perché la E commerciale (&) è un carattere speciale xml. Altri caratteri speciali sono: “” (virgolette), ‘ (apostrofo), < (minore), > (maggiore). Questi ultimi, però, non sempre vengono segnalati come errore.

            Ho inviato una fattura ma mi è stata scartata con Codice errore 00200, che cosa significa?

            Il Codice errore 00200 indica che il File non è conforme al formato.
            Si consiglia di verificare la conformità al formato FatturaPa del documento che si intende inviare.
            Il SdI, infatti, controlla la corrispondenza con lo schema XML del file trasmesso e la presenza dei dati definiti obbligatori.

          2. Salve ecco il codice generato quando salvo la fattura in xml :

            ITALIA
            1

            1
            1
            1

            1

            ITALIA
            0000000000000

            ASSOCIAZIONE

            11

            VIA ARENACCIA
            80141
            NAPOLI
            NA
            ITALIA

            ftressdfffffgvgvcffv

            gio

            cf cd
            80900
            roma
            fi
            fr

            1
            EUR
            18/02/2018 12:20:00
            25/2017
            Acquisto
            Contributo ambientale CONAI assolto

            1
            1
            1
            1
            1

            1
            1
            18/02/2018 12:20:00
            1
            1
            1

            1
            1
            1
            1
            1

            1
            1
            1
            1
            1

            1
            1

            1

            18/02/2018 12:20:00

            1
            pantaloneverede
            10
            € 11,00
            110
            10

            2
            pantaloneverede
            10
            € 11,00
            110
            10

            3
            pantalone
            1111
            € 11,60
            12887,6
            16

            4
            pantaloneverede
            10
            € 11,00
            110
            10

            5
            pantalone
            100
            € 11,60
            1160
            16

            6
            pantaloneverede
            10
            € 11,00
            110
            10

            7
            pantaloneverede
            10
            € 11,00
            110
            10

            8
            pantaloneverede
            10
            € 11,00
            0
            10

            9
            pantaloneverede
            10
            € 11,00
            110
            10

            10
            pantaloneverede
            10
            € 11,00
            110
            10

            11
            pantaloneverede
            10
            € 11,00
            110
            10

            12
            pantaloneverede
            10
            € 11,00
            110
            10

            13
            pantaloneverede
            10
            € 11,00
            110
            10

            14
            pantaloneverede
            10
            € 11,00
            110
            10

            15
            pantaloneverede
            10
            € 11,00
            110
            10

            16
            pantaloneverede
            10
            € 11,00
            0
            10

            17
            pantalone
            100
            € 11,60
            1160
            16

            18
            pantalone
            123
            € 11,60
            1426,8
            16

            19
            pantalone
            1234567
            € 11,60
            14320977,2
            16

            20
            pantalone
            100
            € 12,20
            975,999996364117
            22

            21
            pantalone
            10
            € 12,20
            95,1600001454353
            22

            22
            pantalone
            1000
            € 11,60
            11600
            16

            23
            pantalone
            11111
            € 11,60
            128887,6
            16

            24
            pantalone
            100
            € 11,60
            927,999996542931
            16

            25
            pantalone
            100
            € 11,60
            927,999996542931
            16

            26
            pantalone
            100
            € 11,60
            927,999996542931
            16

            27
            pantalone
            23
            € 11,60
            213,439999204874
            16

            28
            pantalone
            10
            € 12,20
            122
            22

            29
            pantalone
            150
            € 11,60
            1391,9999948144
            16

            30
            pantalone
            100
            € 11,60
            927,999996542931
            16

            31
            pantalone
            100
            € 11,60
            1160
            16

            32
            pantalone
            1000
            € 11,60
            11600
            16

            33
            pantalone
            123
            € 11,60
            1426,8
            16

            34
            pantalone
            1111
            € 11,60
            12887,6
            16

            35
            pantalone
            100
            € 11,60
            927,999996542931
            16

            36
            pantalone
            1111
            € 11,60
            12887,6
            16

            37
            pantalone
            150
            € 11,60
            1391,9999948144
            16

            38
            pantalone
            1234
            € 11,60
            11451,5199573398
            16

            39
            pantalone
            12345
            € 11,60
            114561,599573225
            16

            40
            pantalone
            29
            € 11,60
            269,11999899745
            16

            41
            pantalone
            100
            € 11,60
            927,999996542931
            16

            42
            pantalone
            1000
            € 11,60
            9279,99996542931
            16

            43
            pantalone
            1111
            € 11,60
            12887,6
            16

            44
            pantalone
            100
            € 11,60
            927,999996542931
            16

            45
            pantalone
            10
            € 12,20
            122
            22

            46
            pantalone
            12345
            € 11,60
            114561,599573225
            16

            47
            pantalone
            10000
            € 11,60
            116000
            16

            48
            pantalone
            100
            € 11,60
            1160
            16

            49
            pantalone
            100
            € 11,60
            927,999996542931
            16

            50
            pantalone
            12345
            € 11,60
            143202
            16

            51
            pantalone
            1000
            € 11,60
            9279,99996542931
            16

            16
            € 13.695.350,00
            € 1.369.650,00
            Iva ad esigibilità differita ex art. 7, D.L. 185/2008

            Contanti

            Contanti
            18/02/2018
            € 15.065.000,00

          3. Salve Davide puoi darmi la tua mail cosi invio il file xml generato dal tuo programma ?
            Grazie saluti

  16. Riscontro serie difficolta’ a registrare la DLL utilizzando un processore a 64 bit. Ho anche provato a copiare i files FatturaPA* nella cartella SYSWOW64 ma senza alcun risultato.
    Esiste forse un’altra versione adatta per 64 bit ?
    Potete aiutarmi ? Grazie.

  17. All’ultimo post delle 14.23 , aggiungo che ho provato su una macchina a 32 bit e tutto funziona perfettamente. Qundi le procedure di registrazione sono corrette.
    Grazie
    ciao

  18. Davide comincio col ringraziarti per il progetto che molti di noi speravano di trovare, e finalmente dopo innumerevoli tentativi di registrazione sono riuscito a scaricare il progetto! Detto ciò, uso vb6 su una VM con w7 32 bit, il Framework è il 3.5 e i primi problemi li trovo nella registrazione delle librerie copiate in System32.
    RegAsm non lo localizzo, e regsvr32 non trova il punto di ingresso delle dll. Potreste darmi un aiuto? Grazie in anticipo

    1. Rettifico immediatamente!! Seguita letteralmente la procedura, scaricato il Framework 4.0 ed effettuate le registrazioni correttamente. La demo registra in maniera perfetta l’output xml. Davide sei un mito! Adesso sarà necessario integrare con sw esistenti e verificare il file allo sdi.
      Saluti

  19. Purtroppo con VB.Net non funziona.
    Ho registrato le librerie, ma quando provo ad aggiungerne il riferimento al progetto, mi segnala che:
    “E’ stata esportata da un Assembly.NET e non può essere utilizzata come riferimento. Aggiungere un riferimento all’Assembly.NET” ma fra i riferimenti NET non la trova
    Saluti

  20. Salve a tutti.
    Sto guardando il progetto.
    La libreria e gli esempio possono essere idone anche per la prossima fatturazione b2b.
    Qualcuno ha gia avuto modo di fare dei raffronti in merito ?
    Grazie

    1. Tizi credo proprio di no. Inoltre ho effettuato un test del file generato per testarlo sul SDI e ovvimente emette sentenza negativa. Questo perchè da quando è stata sviluppata la libreria sono cambiate molte cose, dunque senza il sorgente…c’è poco da fare.

    1. Con l’aumento di richieste che sto ricevendo che mi chiedete l’aggiornamento della libreria per la fattura elettronica e l’adattamento all’ultima versione corrente e per il mondo B2B posso ufficialmente “promettervi” che a fine di questo mese posso già rilasciare una bozza del progetto . Per tutti quelli che voglio un supporto o una collaborazione mi cerchino su Linkedin e mi scrivano in privato e io li aggiungerò e vi risponderò con piacere.

    1. Per facilitarvi la ricerca su Linkedin potete andare al seguente “www.linkedin.com/in/davide-de-rubeis” . Sto valutando di creare un gruppo segreto su Linkedin, solo su invito si può accedere, dove poter discutere sulla Fattura Elettronica e scambiarsi i documenti e creare un mini gruppo di persone che mi possono aiutare a fare da beta test della libreria cosi da poterla rilasciare in tempi brevi. Chi è interessato mi scriva in privato su Linkedin. Grazie anticipatamente.

  21. Ragazzi mi serve il vostro aiuto :
    Sto per mettere mano alla libreria VB6 e vi volevo chiedere se mi devo basare sulle informazioni contenute nel sito

    http://www.fatturapa.gov.it/export/fatturazione/it/normativa/f-2.htm

    O ci sono altri documenti da tenere conto è da tanto che non seguo il discorso della fattura elettronica. Mi fa piacere se mi condividere qui o in privato (inviate messaggi via Linkedin) tutti i documenti che mi possono servire per la modifica della libreria.

    Grazie anticipatamente.

  22. Ciao Davide, quanto posso dirti è che il link al quale fai riferimento, è quello che contiene gli aggiornamenti alla versione 1.2 e cioè quello che prevede anche la fatturazione tra privati. Guardando la tua vecchia libreria, le modifiche non dovrebbero essere stravolgenti, poichè i campi che avevi previsto nella versione 1.1 sono rimasti tali, tuttavia nella tabulazione occorrerà capire cosa manca e qual è la motivazione della notifica di scarto da parte del Sdi.
    In ogni caso hai la mia mail . A presto (Siamo in ritardo 🙂

  23. Davide anche a me è accaduta la stessa cosa. Ritengo che il SDI provi la validazione dei dati contenuti in quel file di test e ovviamente dia esito negativo. Occorre guardare il codice di errore che restituisce il sistema e tentare di capire dov’è il problema. In alternativa mi muoverei così: Inserirei dati reali per quanto attiene il cliente e il cedente e una sola riga di fatturaione ad una aliquota. Il test dovremmo effettuarlo così. Ti ho scritto su messaggistica linkedin.

  24. Ciao, ho appena scaricato il tuo progetto ma prima di installarlo e provarlo volevo chiederti se nel progetto è contenuta anche la validazione del file xml tramite il file xsd.

    Grazie, Marco

    1. Ciao Marco attualmente non è prevista. Ti posso consigliare di andare al seguente sito :

      E copiare lo schema XSD e il file XML generato e verificare se rispetti tutte le condizioni.

      http://www.utilities-online.info/xsdvalidation/#.W9lqXctKhuQ

      Copiare lo schema da qui :

      http://fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2/Schema_del_file_xml_FatturaPA_versione_1.2.xsd

      Sto valutando se inserirla nella DLL la validazione XSD, ho gestirla da codice VB6.

      Saluti Davide

  25. Ciao Davide. ho visto che il 24/10 hai rilasciato una nuova versione della dll ver. 1.2. Ma è aggiornata alla 1.2.1?
    Posso utilizzarla oppure è deprecata?
    Grazie mille.

        1. Segnalando eventuali errori o problematiche.

          @soxmar Attualmente la validazione XML con lo schema XSD sta dando errore e pertanto la vedo difficile che riesco ad inserirla nella DLL in tempi brevi.

          Se qualcuno mi vuole aiutare il messaggio che ottengo è il seguente : “http://www.w3.org/2000/09/xmldsig#:Signature’ non dichiarato”.

          Grazie anticipatamente,
          Saluti Davide

          1. Caricare lo schema dal sito w3c può generare errori di timeout, meglio usare una versione locale presente nella stesso path dell’XSD

            o

          2. schemaLocation=”xmldsig-core-schema.xsd”/
            o
            schemaLocation=”file:///c:/xmldsig-core-schema.xsd”

          3. Ciao, la validazione funziona, ti mando il codice per poterlo condividere con gli altri. Dove preferisci ?

            Grazie,
            Saluti Giovanni

  26. Dim FatAllegati As fatturaPA.Allegati
    Set FatAllegati = New fatturaPA.Allegati

    FatAllegati.NomeAttachment = “fatturacarsistem.pdf”
    FatAllegati.Attachment = “prova”

    in vb6 mi va in errore
    runtime error 430 class does not support automation
    sulla riga FatAllegati.Attachment = “prova”
    in vb.net tutto bene
    mi sai dire perchè ?

      1. [Risposta per gli utenti in futuro al seguente problema]

        I file fatturaPA.dll e fatturaPA.tlb devono essere copiati all’interno della cartella “C:\WINDOWS\System32” e successivamente eseguire la procedura di registrazione della libreria.

    1. sono riuscito a registrare la dll
      RegAsm.exe c:\Windows\System32\fatturaPA.dll /tlb:c:\windows\system32\fatturaPA.tlb
      non funziona
      RegAsm.exe C:\WINDOWS\System32\fatturaPA.dll /tlb:C:\WINDOWS\System32\fatturaPA.tlb funziona

      ma da lo stesso errore

    2. mi da questo
      C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319>RegAsm.exe C:\WINDOWS\System32\fatturaPA.dll /codebase
      Utilità di registrazione assembly di Microsoft .NET Framework versione 4.7.3056.0
      per Microsoft .NET Framework versione 4.7.3056.0
      Copyright (C) Microsoft Corporation. Tutti i diritti sono riservati.

      RegAsm : warning RA0000 : Se si registra con /codebase un assembly non firmato, quest’ultimo potrebbe interferire con altre applicazioni installate nel computer. Usare l’opzione /codebase solo con assembly firmati. Attribuire all’assembly un nome sicuro e ripetere la registrazione.
      I tipi sono stati registrati.

    3. Ho aggiornato la DLL corretto una cosa.

      Codice da usare :

      Dim overview1 As fatturaPA.FatturaElettronicaBody
      Set overview1 = New fatturaPA.FatturaElettronicaBody

      ….

      Dim FatAllegati As fatturaPA.Allegati
      Set FatAllegati = New fatturaPA.Allegati

      FatAllegati.NomeAttachment = “fatturacarsistem.pdf”
      FatAllegati.FormatoAttachment = “PDF”
      FatAllegati.Attachment = “prova”

      var = overview1.AddAllegati(FatAllegati)

  27. perfetto grazie
    magari correggi i link da minuscoli a maiuscoli
    da cosi
    RegAsm.exe c:\Windows\System32\fatturaPA.dll /tlb:c:\windows\system32\fatturaPA.tlb
    a cosi
    RegAsm.exe C:\WINDOWS\System32\fatturaPA.dll /tlb:C:\WINDOWS\System32\fatturaPA.tlb

    1. Questa dll è per i progetti vb6 , non dovrebbe essere un problema per i progetti vb.net. se ti serve qualcosa di VB.net ti consiglio di fare una ricerca su GitHub di “FatturaElettronica” ne trovi tanti e aggiornati. Fammi sapere.

  28. Buonasera,
    nel DettaglioLinee non riesco ad inserire più ScontiMaggiorazione. Tipo 10 + 5 +2 riesco ad inserire solo il primo, gli altri due non li prende. Sapresti dirmi come inserirli? Grazie

  29. E’ un mio problema o i due files .rar scaricabili dal link relativi a: Lib_fatturaPA_v1.2.1_for_VB6_Framework 4.5l e
    Progetto Fattura PA VB6 risultano corrotti?
    Davide puoi controllare per favore?
    Grazie

  30. scusa Davide ma se in una ipotetica fattura vi sono 100 linee,
    cosa va scritto
    Dim infoDettaglioLinee2 As fatturaPA.DettaglioLinee
    Set infoDettaglioLinee2 = New fatturaPA.DettaglioLinee

    infoDettaglioLinee2.NumeroLinea = “2”
    infoDettaglioLinee2.Descrizione = “FORNITURE VARIE PER UFFICIO”
    infoDettaglioLinee2.Quantita = “10.00”
    infoDettaglioLinee2.PrezzoUnitario = “2.00”
    infoDettaglioLinee2.PrezzoTotale = “20.00”
    infoDettaglioLinee2.AliquotaIVA = “22.00”

    var = datiBeneServizi.AddDetaglioLinee(infoDettaglioLinee2)

    per 100 volte??

  31. Buonasera a tutti. Essendo un principiante, non riesco a capire il perché di un errore e sono qui a chiedervi aiuto. L’esecuzione dell’istruzione
    SET objFatturaPA = NEW fatturaPA.fatturaPA nella Sub CreaFileXML
    mi restituisce l’errore
    “Il componente Activex non può creare l’oggetto”

    Potete aiutarmi? Grazie

    1. Errore risolto, forse il problema era dovuto alla registrazione della dll.
      Ora peró mi da il seguente errore:
      “Errore di automazione. Impossibile trovare il file specificato”

      Aiuto!

      Grazie

  32. salve ho riscontrato il problema che con piu’ righe di articoli inserisce, quando salvo il file xml, sempre l’ultima riga degli articoli.
    Come posso correggere l’errore ?
    IL codice e’ scritto corretto.
    Grazie saluti
    Puoi per favore rispondermi a questo indirizzo
    [email protected]
    Grazie gianni

  33. Buongiorno a tutti, qualcuno può aiutarmi a modificare il programma per poter gestire più sconti per la stessa riga di dettaglio?

    Vi ringrazio anticipatamente

    Un saluto

  34. Buongiorno a tutti, sono arrivato a conoscere questo gruppo di lavoro solo ieri, per cui mi sono messo subito al lavoro, ma non riesco a scaricare il software messo a disposizione. Qualcuno può darmi qualche consiglio? Grazie

  35. Volevo informare tutti quelli che hanno seguito l’evoluzione di questo progetto, che grazie all’instancabile lavoro di Davide, l’intera procedura è stata completata e testata su tutti i sistemi, x32 e x64 e l’intero progetto è adesso a disposizione a questo indirizzo http://fatturaelettronica.imaginsystems.it/
    Ovviamente non esitate a scrivere, a commentare o segnalare qualsiasi cosa, perchè non abbiamo intenzione di fermarci qui, piuttosto di lavorare affinchè sia costantemente aggiornata e perchè si possa anche pensare ad un processo di deserializzazione che consenta di effettuare il procedimento inverso. Insomma, Vb6 never die!
    A presto,
    Davide e Johnny

Lascia un commento