Buongiorno a tutti
Ho letto l'articolo dell'8/5/2019 a firma di Emanuele Mattei, inerente la lettura delle fatture elettroniche.
L'articolo è interessante, l'esempio perfettamente funzionante, ma, purtroppo, non riesco a trasformarlo per la scrittura del file XML.
Cercavo infatti di elaborare una piccola procedura per la produzione del file XML per le liquidazioni periodiche IVA. Ho ricavato la classe dall'apposita funzione di VS (Incolla speciale/incolla XML come classe), ma, nonostante durante la stesura del codice l'editor di VS riconosca le varie classi parziali e proprietà, in esecuzione mi dà l'errore " 'Riferimento a un oggetto non impostato su un'istanza di oggetto.'
Qualcuno riesce ad aiutarmi a capire dove sbaglio?
Sub:
Private Sub GeneraXML()
Dim IVP18 As LIPE.Fornitura = New LIPE.Fornitura()
IVP18.Comunicazione.identificativo = 1
With IVP18.Comunicazione
.Frontespizio.CodiceFiscale = TxtCodFisc_Contrib.Text
.Frontespizio.AnnoImposta = TxtAnno.Text
.Frontespizio.PartitaIVA = TxtPartIVA_Contrib.Text
.Frontespizio.CFDichiarante = TxtCodFisc_Dich.Text
.Frontespizio.CodiceCaricaDichiarante = TxtCodCarica.Text
.Frontespizio.FirmaDichiarazione = 1
.Frontespizio.CFIntermediario = TxtCFIntermediario.Text
.Frontespizio.ImpegnoPresentazione = Impegno
.Frontespizio.DataImpegno = Replace(TxtDataImpegno.Text, "/", "")
.Frontespizio.FirmaIntermediario = 1
.Frontespizio.IdentificativoProdSoftware = 2327910580
End With
With IVP18.Comunicazione.DatiContabili.Modulo
.NumeroModulo = 1
If Val(TxtMese.Text) > 0 Then
.Mese = TxtMese.Text
End If
If Val(TxtTrim.Text) > 0 Then
.Trimestre = TxtTrim.Text
End If
.TotaleOperazioniAttive = TxtOpeAttive.Text
.TotaleOperazioniPassive = TxtOpePassive.Text
.IvaEsigibile = TxtIvaEsigib.Text
.IvaDetratta = TxtIvaDetratta.Text
If rdCDec(TxtIvaEsigib.Text) - rdCDec(TxtIvaDetratta.Text) > 0 Then
.IvaDovuta = rdCDec(TxtIvaEsigib.Text) - rdCDec(TxtIvaDetratta.Text)
Else
.IvaCredito = rdCDec(TxtIvaDetratta.Text) - rdCDec(TxtIvaEsigib.Text)
End If
If rdCDec(TxtCredAnnoPre.Text) > 0 Then
.CreditoAnnoPrecedente = TxtCredAnnoPre.Text
End If
If rdCDec(TxtCredPrec.Text) > 0 Then
.CreditoPeriodoPrecedente = TxtCredPrec.Text
End If
If rdCDec(TxtInteressi.Text) > 0 Then
.InteressiDovuti = TxtInteressi.Text
End If
If rdCDec(TxtAcconto.Text) > 0 Then
.Acconto = TxtAcconto.Text
.Metodo = TxtMetodo.Text
End If
If rdCDec(TxtVersamento.Text) > 0 Then
.ImportoDaVersare = TxtVersamento.Text
End If
If rdCDec(TxtCredito.Text) > 0 Then
.ImportoACredito = TxtCredito.Text
End If
End With
Dim file As New System.IO.StreamWriter(TxtFileXML.Text)
Dim writer As New System.Xml.Serialization.XmlSerializer(GetType(LIPE))
writer.Serialize(file, IVP18)
file.Close()
End Sub
Classe:
Imports System.Xml.Serialization
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
Public Class LIPE
' NOTA: con il codice generato potrebbe essere richiesto almeno .NET Framework 4.5 o .NET Core/Standard 2.0.
'''<remarks/>
<System.SerializableAttribute(),
System.ComponentModel.DesignerCategoryAttribute("code"),
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp"),
System.Xml.Serialization.XmlRootAttribute([Namespace]:="urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp", IsNullable:=False)>
Partial Public Class Fornitura
Private intestazioneField As FornituraIntestazione
Private comunicazioneField As FornituraComunicazione
'''<remarks/>
Public Property Intestazione() As FornituraIntestazione
Get
Return Me.intestazioneField
End Get
Set
Me.intestazioneField = Value
End Set
End Property
'''<remarks/>
Public Property Comunicazione() As FornituraComunicazione
Get
Return Me.comunicazioneField
End Get
Set
Me.comunicazioneField = Value
End Set
End Property
End Class
'''<remarks/>
<System.SerializableAttribute(),
System.ComponentModel.DesignerCategoryAttribute("code"),
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp")>
Partial Public Class FornituraIntestazione
Private codiceFornituraField As String
Private codiceFiscaleDichiaranteField As String
Private codiceCaricaField As Byte
'''<remarks/>
Public Property CodiceFornitura() As String
Get
Return Me.codiceFornituraField
End Get
Set
Me.codiceFornituraField = Value
End Set
End Property
'''<remarks/>
Public Property CodiceFiscaleDichiarante() As String
Get
Return Me.codiceFiscaleDichiaranteField
End Get
Set
Me.codiceFiscaleDichiaranteField = Value
End Set
End Property
'''<remarks/>
Public Property CodiceCarica() As Byte
Get
Return Me.codiceCaricaField
End Get
Set
Me.codiceCaricaField = Value
End Set
End Property
End Class
'''<remarks/>
<System.SerializableAttribute(),
System.ComponentModel.DesignerCategoryAttribute("code"),
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp")>
Partial Public Class FornituraComunicazione
Private frontespizioField As FornituraComunicazioneFrontespizio
Private datiContabiliField As FornituraComunicazioneDatiContabili
Private identificativoField As Byte
'''<remarks/>
Public Property Frontespizio() As FornituraComunicazioneFrontespizio
Get
Return Me.frontespizioField
End Get
Set
Me.frontespizioField = Value
End Set
End Property
'''<remarks/>
Public Property DatiContabili() As FornituraComunicazioneDatiContabili
Get
Return Me.datiContabiliField
End Get
Set
Me.datiContabiliField = Value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()>
Public Property identificativo() As Byte
Get
Return Me.identificativoField
End Get
Set
Me.identificativoField = Value
End Set
End Property
End Class
'''<remarks/>
<System.SerializableAttribute(),
System.ComponentModel.DesignerCategoryAttribute("code"),
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp")>
Partial Public Class FornituraComunicazioneFrontespizio
Private codiceFiscaleField As ULong
Private annoImpostaField As UShort
Private partitaIVAField As ULong
Private cFDichiaranteField As String
Private codiceCaricaDichiaranteField As Byte
Private firmaDichiarazioneField As Byte
Private cFIntermediarioField As String
Private impegnoPresentazioneField As Byte
Private dataImpegnoField As UInteger
Private firmaIntermediarioField As Byte
Private identificativoProdSoftwareField As UInteger
'''<remarks/>
Public Property CodiceFiscale() As ULong
Get
Return Me.codiceFiscaleField
End Get
Set
Me.codiceFiscaleField = Value
End Set
End Property
'''<remarks/>
Public Property AnnoImposta() As UShort
Get
Return Me.annoImpostaField
End Get
Set
Me.annoImpostaField = Value
End Set
End Property
'''<remarks/>
Public Property PartitaIVA() As ULong
Get
Return Me.partitaIVAField
End Get
Set
Me.partitaIVAField = Value
End Set
End Property
'''<remarks/>
Public Property CFDichiarante() As String
Get
Return Me.cFDichiaranteField
End Get
Set
Me.cFDichiaranteField = Value
End Set
End Property
'''<remarks/>
Public Property CodiceCaricaDichiarante() As Byte
Get
Return Me.codiceCaricaDichiaranteField
End Get
Set
Me.codiceCaricaDichiaranteField = Value
End Set
End Property
'''<remarks/>
Public Property FirmaDichiarazione() As Byte
Get
Return Me.firmaDichiarazioneField
End Get
Set
Me.firmaDichiarazioneField = Value
End Set
End Property
'''<remarks/>
Public Property CFIntermediario() As String
Get
Return Me.cFIntermediarioField
End Get
Set
Me.cFIntermediarioField = Value
End Set
End Property
'''<remarks/>
Public Property ImpegnoPresentazione() As Byte
Get
Return Me.impegnoPresentazioneField
End Get
Set
Me.impegnoPresentazioneField = Value
End Set
End Property
'''<remarks/>
Public Property DataImpegno() As UInteger
Get
Return Me.dataImpegnoField
End Get
Set
Me.dataImpegnoField = Value
End Set
End Property
'''<remarks/>
Public Property FirmaIntermediario() As Byte
Get
Return Me.firmaIntermediarioField
End Get
Set
Me.firmaIntermediarioField = Value
End Set
End Property
'''<remarks/>
Public Property IdentificativoProdSoftware() As UInteger
Get
Return Me.identificativoProdSoftwareField
End Get
Set
Me.identificativoProdSoftwareField = Value
End Set
End Property
End Class
'''<remarks/>
<System.SerializableAttribute(),
System.ComponentModel.DesignerCategoryAttribute("code"),
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp")>
Partial Public Class FornituraComunicazioneDatiContabili
Private moduloField As FornituraComunicazioneDatiContabiliModulo
'''<remarks/>
Public Property Modulo() As FornituraComunicazioneDatiContabiliModulo
Get
Return Me.moduloField
End Get
Set
Me.moduloField = Value
End Set
End Property
End Class
'''<remarks/>
<System.SerializableAttribute(),
System.ComponentModel.DesignerCategoryAttribute("code"),
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp")>
Partial Public Class FornituraComunicazioneDatiContabiliModulo
Private numeroModuloField As Byte
Private trimestreField As Byte
Private meseField As Byte
Private totaleOperazioniAttiveField As String
Private totaleOperazioniPassiveField As String
Private ivaEsigibileField As String
Private ivaDetrattaField As String
Private ivaDovutaField As String
Private ivaCreditoField As String
Private creditoAnnoPrecedenteField As String
Private creditoPeriodoPrecedenteField As String
Private creditiImpostaField As String
Private interessiDovutiField As String
Private VersamentiAutoUEField As String
Private MetodoField As String
Private AccontoField As String
Private importoDaVersareField As String
Private importoACreditoField As String
'''<remarks/>
Public Property NumeroModulo() As Byte
Get
Return Me.numeroModuloField
End Get
Set
Me.numeroModuloField = Value
End Set
End Property
'''<remarks/>
Public Property Trimestre() As Byte
Get
Return Me.trimestreField
End Get
Set
Me.trimestreField = Value
End Set
End Property
Public Property Mese() As Byte
Get
Return Me.meseField
End Get
Set
Me.meseField = Value
End Set
End Property
'''<remarks/>
Public Property TotaleOperazioniAttive() As String
Get
Return Me.totaleOperazioniAttiveField
End Get
Set
Me.totaleOperazioniAttiveField = Value
End Set
End Property
'''<remarks/>
Public Property TotaleOperazioniPassive() As String
Get
Return Me.totaleOperazioniPassiveField
End Get
Set
Me.totaleOperazioniPassiveField = Value
End Set
End Property
'''<remarks/>
Public Property IvaEsigibile() As String
Get
Return Me.ivaEsigibileField
End Get
Set
Me.ivaEsigibileField = Value
End Set
End Property
'''<remarks/>
Public Property IvaDetratta() As String
Get
Return Me.ivaDetrattaField
End Get
Set
Me.ivaDetrattaField = Value
End Set
End Property
'''<remarks/>
Public Property IvaDovuta() As String
Get
Return Me.ivaDovutaField
End Get
Set
Me.ivaDovutaField = Value
End Set
End Property
Public Property IvaCredito() As String
Get
Return Me.ivaCreditoField
End Get
Set
Me.ivaCreditoField = Value
End Set
End Property
'''<remarks/>
Public Property CreditoAnnoPrecedente() As String
Get
Return Me.creditoAnnoPrecedenteField
End Get
Set
Me.creditoAnnoPrecedenteField = Value
End Set
End Property
Public Property CreditoPeriodoPrecedente() As String
Get
Return Me.creditoPeriodoPrecedenteField
End Get
Set
Me.creditoPeriodoPrecedenteField = Value
End Set
End Property
Public Property CreditiImposta() As String
Get
Return Me.creditiImpostaField
End Get
Set
Me.creditiImpostaField = Value
End Set
End Property
'''<remarks/>
Public Property InteressiDovuti() As String
Get
Return Me.interessiDovutiField
End Get
Set
Me.interessiDovutiField = Value
End Set
End Property
Public Property versamentiAutoUE() As String
Get
Return Me.versamentiAutoUEField
End Get
Set
Me.versamentiAutoUEField = Value
End Set
End Property
Public Property Metodo() As String
Get
Return Me.MetodoField
End Get
Set
Me.MetodoField = Value
End Set
End Property
Public Property Acconto() As String
Get
Return Me.AccontoField
End Get
Set
Me.AccontoField = Value
End Set
End Property
'''<remarks/>
Public Property ImportoDaVersare() As String
Get
Return Me.importoDaVersareField
End Get
Set
Me.importoDaVersareField = Value
End Set
End Property
Public Property ImportoACredito() As String
Get
Return Me.importoACreditoField
End Get
Set
Me.importoACreditoField = Value
End Set
End Property
End Class
End Class