VB.NET – Creare la Fattura Elettronica in maniera Facile (Source+Library)

Oggi vi voglio mettere a disposizione il codice che potete usare in VB.NET per realizzare il file XML della Fattura Elettronica, utilizzando la libreria creata da me e messa a vostra disposizione.

Source Code
Public Class Form1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 CreaFileXML("C:\fatturaPA\IT01234567890.xml")
 End Sub

Private Sub CreaFileXML(Optional ByVal percorsoSaveXML As String = vbNullString)

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

Dim nodoPrincipale As FatturaElettronica
 nodoPrincipale = New FatturaElettronica

Dim overview As FatturaElettronicaHeader
 overview = New FatturaElettronicaHeader

Dim DatiTrasmissione1 As DatiTrasmissione
 DatiTrasmissione1 = New DatiTrasmissione

Dim IdTrasmittente1 As IdTrasmittente
 IdTrasmittente1 = New IdTrasmittente

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

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

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

'Scrivi XML

overview.DatiTrasmissione = DatiTrasmissione1

Dim cedentePrestatore As CedentePrestatore
 cedentePrestatore = New CedentePrestatore

Dim datiAnagrafici As DatiAnagrafici
 datiAnagrafici = New DatiAnagrafici

Dim idFiscaleIVA As IdFiscaleIVA
 idFiscaleIVA = New IdFiscaleIVA

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

datiAnagrafici.IdFiscaleIVA = idFiscaleIVA

Dim anagrafica As Anagrafica
 anagrafica = New Anagrafica

anagrafica.Denominazione = "SOCIETA' ALPHA SRL"

datiAnagrafici.Anagrafica = anagrafica

datiAnagrafici.RegimeFiscale = "RF19"

cedentePrestatore.DatiAnagrafici = datiAnagrafici

Dim sede As Sede
 sede = New 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 CessionarioCommittente
 cessionarioCommittente = New CessionarioCommittente

Dim datiAnagraficiCommittente As DatiAnagrafici
 datiAnagraficiCommittente = New DatiAnagrafici

datiAnagraficiCommittente.CodiceFiscale = "09876543210"

Dim anagraficaCommittente As Anagrafica
 anagraficaCommittente = New Anagrafica

anagraficaCommittente.Denominazione = "AMMINISTRAZIONE BETA"

datiAnagraficiCommittente.Anagrafica = anagraficaCommittente

cessionarioCommittente.DatiAnagrafici = datiAnagraficiCommittente

Dim sedeCcommittente As Sede
 sedeCcommittente = New 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 FatturaElettronicaBody
 overview1 = New FatturaElettronicaBody

Dim datiGenerali As DatiGenerali
 datiGenerali = New DatiGenerali

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

'Aggiungiamo due Causali in una lista

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")
 datiGeneraliDocumentos.AddCausale("SEGUE DESCRIZIONE CAUSALE NEL CASO IN CUI NON SIANO STATI SUFFICIENTI 200 CARATTERI AAAAAAAAAAA BBBBBBBBBBBBBBBBB")

datiGenerali.DatiGeneraliDocumento = datiGeneraliDocumentos

Dim datiOrdineAcquisto As DatiOrdineAcquisto
 datiOrdineAcquisto = New DatiOrdineAcquisto

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

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

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

Dim datiContratto As DatiContratto
 datiContratto = New 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
 datiGenerali.AddDatiContratto(datiContratto)

Dim datiConvenzione As DatiConvenzione
 datiConvenzione = New DatiConvenzione

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

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

Dim datiRecezione As DatiRicezione
 datiRecezione = New DatiRicezione

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

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

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

Dim DatiTrasporto As DatiTrasporto
 DatiTrasporto = New DatiTrasporto

Dim DatiAnagraficiVettore As DatiAnagraficiVettore
 DatiAnagraficiVettore = New DatiAnagraficiVettore

Dim idFiscaleIVAVettore As IdFiscaleIVA
 idFiscaleIVAVettore = New IdFiscaleIVA

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

Dim anagraficaVettore As Anagrafica
 anagraficaVettore = New 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 DatiBeniServizi
 datiBeneServizi = New DatiBeniServizi

Dim infoDettaglioLinee1 As DettaglioLinee
 infoDettaglioLinee1 = New 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
 datiBeneServizi.AddDetaglioLinee(infoDettaglioLinee1)

Dim datiRiepilogo As DatiRiepilogo
 datiRiepilogo = New DatiRiepilogo

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

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

overview1.DatiBeniServizi = datiBeneServizi

Dim datiPagamento As DatiPagamento
 datiPagamento = New DatiPagamento

datiPagamento.CondizioniPagamento = "TP01"

Dim DettaglioPagamento As DettaglioPagamento
 DettaglioPagamento = New DettaglioPagamento

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

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

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

'
 ' FINITO LA PARTE FatturaElettronicaBody
 '

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

'Serve per far eseguire il metodo createFatPA()
 If (percorsoSaveXML <> vbNullString) Then
 objFatturaPA.createFatPA(nodoPrincipale, percorsoSaveXML)
 Else
 objFatturaPA.createFatPA(nodoPrincipale)
 End If
 End Sub
End Class

 

Potete qui trovare la libreria per le versioni di Framework 3.5 e 4.5 entrambi funzionano alla stessa maniera e vengono richiamate le funzioni nella stessa maniera .

Framework 3.5 : 

 

Framework 4.5 : 

 (E’ compatibile anche per VB6 e .NET)

Password : “ImaginSystem”

Proviamo a fare chiarezza sui linguaggi di stampa…

Cosa si intende per linguaggio di stampa?

I linguaggi di stampa sono in genere caratteristici delle stampanti laser e InkJet e definiscono la comunicazione tra PC e stampante, gestendo le fasi di formazione della pagina.
Il primo nato è il Post Script, sviluppato da Adobe; questo linguaggio, se supportato dalla stampante e dal programma presente sul nostro PC, è in grado di dar origine a stampe di elevata qualità e di livello tipografico. Il Post Script è caratterizzato dal fatto che la pagina viene descritta attraverso appositi caratteri, vere e proprie frasi nelle quali vengono racchiuse informazioni quali il tipo di carattere utilizzato, la sua dimensione, la presenza di immagini e la loro posizione sul foglio ecc…. Senza tale linguaggio la stampante riprodurrebbe quanto vediamo a video con la stessa limitata risoluzione e quindi con scalinature, spigoli e così via; in pratica la stampante agisce autonomamente sulla base delle informazioni ricevute e sfrutta al meglio le sue caratteristiche per produrre un documento con la maggiore qualità possibile. Alcuni produttori di stampanti rendono disponibile il Post Script solo opzionalmente, dato il costo, attraverso delle apposite schede da inserire in alloggiamenti dedicati.
Altro linguaggio molto diffuso nel mondo delle stampanti è il PCL (Printer Control Language) sviluppato da HP e alla base delle comunicazioni tra PC e tutte le stampanti HP, sia laser che a getto d’inchiostro, oppure tra PC e tutte le stampanti che si dichiarino HP compatibili; si basa sull’uso di font scalabili ed è, in pratica, l’unica valida alternativa al Post Script nel mondo delle stampati laser ed InkJet. Questo linguaggio è molto meno flessibile rispetto al Post Script ed anche la qualità di stampa, passando da una stampante all’altra, può subire delle variazioni.
Per ultimo vale la pena citare il linguaggio GDI (Graphics Device Interface), alternativa economica al Post Script e al PCL. In pratica il nostro PC è il principale ed unico gestore del processo di stampa e di formazione dell’immagine che viene direttamente inviata alla stampante; questo riduce sensibilmente il costo delle periferiche dato che sono prive di CPU, oppure ne utilizzano di poco potenti, ed inoltre non dispongono, in genere, di memoria interna.

Continua la lettura di Proviamo a fare chiarezza sui linguaggi di stampa…

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

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