Domanda Esportare file in XML

CisKo

Passione Access_Expert
Moderatore
Expert
27 Aprile 2016
2.005
18
38
Sud Italia
2003,10,13,16
Best answers
17
eccotiiiii cappello_salutacappello_saluta per Powerwin @Powerwin , si se avessi il giorno di 72 ore forse avrei tempo per studiarmi tutto, veramente avevo già scaricato il formato dall'agenzia purtroppo mi manca il tempo . La mia risposta era più x me che x l'utente. Per quanto detto da giuliano sono pienamente d'accordo .
Magari riuscirò , ma ora proprio non riesco . :piango:
 

Powerwin

VBA Expert
Expert
17 Marzo 2016
3.382
122
63
Milano
2016/365
Best answers
38
ti posso garantire che è molto complicato, come direbbe alfrimpa @alfrimpa capisci ammè ';)
 

giulianovac

Access/VBA Expert
Expert
9 Giugno 2018
842
131
43
Italy
Office 2019
Best answers
61
Perdonami ma la domanda a mio parere è adeguata. Ai campi noi possiamo dare l'ordine che vogliamo senza problemi. Se poi nelle specifiche per realizzare il file Xml vanno suddivisi questo è un altro paio di "maniche" che non centra nulla. O sbaglio???
Appunto, non c'entra nulla. Ecco perché è inadeguata. Più in fondo ti spiego il perché. (*)

La query che ti ho allegato funziona benissimo da oltre 15 anni e il DB in questione sforna 5000 record all'anno.
Non capisco perché lo specifichi, dato che nessuno l'ha messo in dubbio, e nulla c'entra con il tuo problema.

Il mio problema rimane solo gestire le specifiche per il formato Xml. Ribadisco, adesso grazie al tuo prezioso consiglio cominci ad orientarmi.
Voglio concludere il post, sottolineando che le mie poche righe non hanno tono polemico,
Nemmeno io, non è nello spirito di un forum.
Forse tu lo scambi per polemica, ma a me personalmente fa strano che tu, prima di ogni altra cosa, non ti sia documentato alla fonte ufficiale, il sito dell'AdE, piuttosto che chiedere in un forum. Io è la prima cosa che ho fatto.
Però questa è la mia opinione personale, che può essere condivisa o meno.
(*) Una volta che ti sarai documentato a dovere, capirai perché la tua domanda è inadeguata.

anche perché non posso che ringraziarti per il tempo che mi stai dedicando.
Come ho detto, sta nello spirito di un Forum.
 

giulianovac

Access/VBA Expert
Expert
9 Giugno 2018
842
131
43
Italy
Office 2019
Best answers
61
Ciao Fra e Giuliano cappello_saluta io invece lo farei in Access, ma temo sia più complicata di come la semplifica l'utente che a quanto pare sta anche minimizzando gli "alert" di Giuliano
Anche io ho questa sensazione, ma tutto sommato è comprensibile se non si hanno informazioni al riguardo.

Confermo purtroppo che la 'faccenda' è tutto fuorché semplice, e nonostante quanto dichiarato dall'AdE (Tutto bene!) I problemi non riguardano solo la generazione del file XML ma sono numerevoli, come si può vedere qui:
https://www.iprogrammatori.it/forum-programmazione/fatturazione-elettronica/

ma anche nella trasmissione delle FE, come testimoniano gli utenti, nella prima giornata di invii:
https://twitter.com/hashtag/fatturaelettronica?src=hash

Sperem ben! :eek:
 

Powerwin

VBA Expert
Expert
17 Marzo 2016
3.382
122
63
Milano
2016/365
Best answers
38
Posto, a titolo di indicazione, la parte di codice che, utilizzando i valori contenuti in varie form va a scrivere il file XML da inviare all'AdE, buon studio all'utente....la riga 13 è quella che indica come utilizzare lo schema (file xsd)

C-like:
Open NomeFileOut For Output As #1

testo = "<?xml version=" + A + "1.0" + A + " encoding=" + A + "UTF-8" + A + "?>": Print #1, testo
testo = "<?xml-stylesheet type=" + A + "text/xsl" + A + " href=" + A + "fatturapa_v1.2.xsl" + A + "?>": Print #1, testo
If Forms![Fattura PA Testata]![SottomascheraClienti].Form![Categoria Clienti] = "Pubblica Amministrazione" Then
   testo = "<p:FatturaElettronica versione=" + A + "FPA12" + A + " xmlns:ds=" + A + "http://www.w3.org/2000/09/xmldsig#" + A + " ": Print #1, testo
End If
If Forms![Fattura PA Testata]![SottomascheraClienti].Form![Categoria Clienti] <> "Pubblica Amministrazione" Then
   testo = "<p:FatturaElettronica versione=" + A + "FPR12" + A + " xmlns:ds=" + A + "http://www.w3.org/2000/09/xmldsig#" + A + " ": Print #1, testo
End If
testo = "xmlns:p=" + A + "http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" + A + " ": Print #1, testo
testo = "xmlns:xsi=" + A + "http://www.w3.org/2001/XMLSchema-instance" + A + " ": Print #1, testo
testo = "xsi:schemaLocation=" + A + "http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 fatturaordinaria_v1.2.xsd " + A + ">": Print #1, testo
testo = "<FatturaElettronicaHeader>": Print #1, testo
testo = "<DatiTrasmissione>": Print #1, testo
testo = "<IdTrasmittente>": Print #1, testo
testo = "<IdPaese>" + IdPaese + "</IdPaese>": Print #1, testo
testo = "<IdCodice>" + CodiceFiscale + "</IdCodice>": Print #1, testo
testo = "</IdTrasmittente>": Print #1, testo
testo = "<ProgressivoInvio>" + ProgressivoInvio + "</ProgressivoInvio>": Print #1, testo
If Forms![Fattura PA Testata]![SottomascheraClienti].Form![Categoria Clienti] = "Pubblica Amministrazione" Then
   testo = "<FormatoTrasmissione>" + "FPA12" + "</FormatoTrasmissione>": Print #1, testo
End If
If Forms![Fattura PA Testata]![SottomascheraClienti].Form![Categoria Clienti] <> "Pubblica Amministrazione" Then
   testo = "<FormatoTrasmissione>" + "FPR12" + "</FormatoTrasmissione>": Print #1, testo
End If
If Not IsNull(Forms![Fattura PA Testata]!CodiceDestinatario) Then
   testo = "<CodiceDestinatario>" + CodiceDestinatario + "</CodiceDestinatario>": Print #1, testo
End If
If IsNull(Forms![Fattura PA Testata]!CodiceDestinatario) Then
   If IdPaeseCess = "IT" Then
      testo = "<CodiceDestinatario>" + "0000000" + "</CodiceDestinatario>": Print #1, testo
   End If
   If IdPaeseCess <> "IT" Then
      testo = "<CodiceDestinatario>" + "XXXXXXX" + "</CodiceDestinatario>": Print #1, testo
   End If
End If
If Not IsNull(email) Then
   testo = "<ContattiTrasmittente>": Print #1, testo
   If Not IsNull(Telefono) Then
      testo = "<Telefono>" + Telefono + "</Telefono>": Print #1, testo
   End If
   testo = "<Email>" + email + "</Email>": Print #1, testo
   testo = "</ContattiTrasmittente>": Print #1, testo
End If
If Not IsNull(Forms![Fattura PA Testata]!PECDestinatario) Then
   testo = "<PECDestinatario>" + Forms![Fattura PA Testata]!PECDestinatario + "</PECDestinatario>": Print #1, testo
End If
testo = "</DatiTrasmissione>": Print #1, testo
testo = "<CedentePrestatore>": Print #1, testo
testo = "<DatiAnagrafici>": Print #1, testo
testo = "<IdFiscaleIVA>": Print #1, testo
testo = "<IdPaese>" + IdPaese + "</IdPaese>": Print #1, testo
testo = "<IdCodice>" + PartIvaCedente + "</IdCodice>": Print #1, testo
testo = "</IdFiscaleIVA>": Print #1, testo
testo = "<CodiceFiscale>" + CodiceFiscale + "</CodiceFiscale>"
If Forms![Fattura PA Testata]![SottomascheraAnagraficaAzienda].Form![Persona Fisica] = 0 Then
   testo = "<Anagrafica>": Print #1, testo
   testo = "<Denominazione>" + Denominazione + "</Denominazione>": Print #1, testo
   testo = "</Anagrafica>": Print #1, testo
End If
If Forms![Fattura PA Testata]![SottomascheraAnagraficaAzienda].Form![Persona Fisica] = -1 Then
   testo = "<Anagrafica>": Print #1, testo
   testo = "<Nome>" + Nome + "</Nome>": Print #1, testo
   testo = "<Cognome>" + Cognome + "</Cognome>": Print #1, testo
   testo = "</Anagrafica>": Print #1, testo
End If
testo = "<RegimeFiscale>" + RegimeFiscale + "</RegimeFiscale>": Print #1, testo
testo = "</DatiAnagrafici>": Print #1, testo
testo = "<Sede>": Print #1, testo
testo = "<Indirizzo>" + Indirizzo + "</Indirizzo>": Print #1, testo
testo = "<CAP>" + Cap + "</CAP>": Print #1, testo
testo = "<Comune>" + Comune + "</Comune>": Print #1, testo
testo = "<Provincia>" + Provincia + "</Provincia>": Print #1, testo
testo = "<Nazione>" + IdPaese + "</Nazione>": Print #1, testo
testo = "</Sede>": Print #1, testo
If Not IsNull(Forms![Fattura PA Testata]![SottomascheraAnagraficaAzienda].Form![Num Registro Imprese]) Then
   testo = "<IscrizioneREA>": Print #1, testo
   testo = "<Ufficio>" + UfficioREA + "</Ufficio>": Print #1, testo
   testo = "<NumeroREA>" + NumeroREA + "</NumeroREA>": Print #1, testo
   If (Forms![Fattura PA Testata]![SottomascheraAnagraficaAzienda].Form![SocCapitali]) = -1 Then
       testo = "<CapitaleSociale>" + CapitaleSociale + "</CapitaleSociale>": Print #1, testo
       If (Forms![Fattura PA Testata]![SottomascheraAnagraficaAzienda].Form![SocioUnico]) = 0 Then
           testo = "<SocioUnico>SM</SocioUnico>": Print #1, testo
       End If
       If (Forms![Fattura PA Testata]![SottomascheraAnagraficaAzienda].Form![SocioUnico]) = -1 Then
           testo = "<SocioUnico>SU</SocioUnico>": Print #1, testo
       End If
   End If
   If (Forms![Fattura PA Testata]![SottomascheraAnagraficaAzienda].Form![SocLiquidaz]) = 0 Then
       testo = "<StatoLiquidazione>LN</StatoLiquidazione>": Print #1, testo
   End If
   If (Forms![Fattura PA Testata]![SottomascheraAnagraficaAzienda].Form![SocLiquidaz]) = -1 Then
       testo = "<StatoLiquidazione>LS</StatoLiquidazione>": Print #1, testo
   End If
   testo = "</IscrizioneREA>": Print #1, testo
End If
If Not IsNull(Forms![Fattura PA Testata]![SottomascheraAnagraficaAzienda].Form!Mail) Then
   testo = "<Contatti>": Print #1, testo
   If Not IsNull(Forms![Fattura PA Testata]![SottomascheraAnagraficaAzienda].Form!Telefono) Then
      testo = "<Telefono>" + Telefono + "</Telefono>": Print #1, testo
   End If
   testo = "<Email>" + email + "</Email>": Print #1, testo
   testo = "</Contatti>": Print #1, testo
End If
testo = "</CedentePrestatore>": Print #1, testo

testo = "<CessionarioCommittente>": Print #1, testo
testo = "<DatiAnagrafici>": Print #1, testo
If Not IsNull(Forms![Fattura PA Testata]![SottomascheraClienti]![Partita iva]) Then
   testo = "<IdFiscaleIVA>": Print #1, testo
   testo = "<IdPaese>" + IdPaeseCess + "</IdPaese>": Print #1, testo
   testo = "<IdCodice>" + PartIvaCess + "</IdCodice>": Print #1, testo
   testo = "</IdFiscaleIVA>": Print #1, testo
End If
If IsNull(Forms![Fattura PA Testata]![SottomascheraClienti]![Partita iva]) Then
   testo = "<CodiceFiscale>" + CodiceFiscaleCess + "</CodiceFiscale>": Print #1, testo
End If
testo = "<Anagrafica>": Print #1, testo
If (Forms![Fattura PA Testata]![SottomascheraClienti].Form![PersonaFisica]) = 0 Then
   testo = "<Denominazione>" + DenominazioneCliente + "</Denominazione>": Print #1, testo
End If
If (Forms![Fattura PA Testata]![SottomascheraClienti].Form![PersonaFisica]) = -1 Then
   testo = "<Nome>" + NomeCess + "</Nome>": Print #1, testo
   testo = "<Cognome>" + CognomeCess + "</Cognome>": Print #1, testo
End If
testo = "</Anagrafica>": Print #1, testo
testo = "</DatiAnagrafici>": Print #1, testo
testo = "<Sede>": Print #1, testo
testo = "<Indirizzo>" + IndirizzoCess + "</Indirizzo>": Print #1, testo
testo = "<CAP>" + CapCess + "</CAP>": Print #1, testo
testo = "<Comune>" + ComuneCess + "</Comune>": Print #1, testo
If IdPaeseCess = "IT" Then
   testo = "<Provincia>" + ProvinciaCess + "</Provincia>": Print #1, testo
   DoCmd.GoToRecord , "", acNewRec
End If
testo = "<Nazione>" + IdPaeseCess + "</Nazione>": Print #1, testo
testo = "</Sede>": Print #1, testo
testo = "</CessionarioCommittente>": Print #1, testo
testo = "</FatturaElettronicaHeader>": Print #1, testo

testo = "<FatturaElettronicaBody>": Print #1, testo
testo = "<DatiGenerali>": Print #1, testo
testo = "<DatiGeneraliDocumento>": Print #1, testo
testo = "<TipoDocumento>" + TipoDocumento + "</TipoDocumento>": Print #1, testo
testo = "<Divisa>EUR</Divisa>": Print #1, testo
testo = "<Data>" + DataDocumento + "</Data>": Print #1, testo
testo = "<Numero>" + NumeroDocumento + "</Numero>": Print #1, testo
If ([Ritenuta]) = -1 Then
   testo = "<DatiRitenuta>": Print #1, testo
   If Forms![Fattura PA Testata]![SottomascheraAnagraficaAzienda].Form![Persona Fisica] = -1 Then
      testo = "<TipoRitenuta>RT01</TipoRitenuta>": Print #1, testo
   End If
   If Forms![Fattura PA Testata]![SottomascheraAnagraficaAzienda].Form![Persona Fisica] = 0 Then
      testo = "<TipoRitenuta>RT02</TipoRitenuta>": Print #1, testo
   End If
   testo = "<ImportoRitenuta>" + ImportoRitenuta + "</ImportoRitenuta>": Print #1, testo
   testo = "<AliquotaRitenuta>" + AliquotaRitenuta + "</AliquotaRitenuta>": Print #1, testo
   testo = "<CausalePagamento>A</CausalePagamento>": Print #1, testo
   testo = "</DatiRitenuta>": Print #1, testo
End If

If BolloVirtuale > 0 Then
   If Forms![Riepilogo Fattura PA]![Totale Imponibile] > 77.47 Then
      testo = "<DatiBollo>": Print #1, testo
      testo = "<BolloVirtuale>SI</BolloVirtuale>": Print #1, testo
      testo = "<ImportoBollo>" + BolloVirtuale + "</ImportoBollo>": Print #1, testo
      testo = "</DatiBollo>": Print #1, testo
   End If
End If
testo = "<ImportoTotaleDocumento>" + ImportoTotaleDocumento + "</ImportoTotaleDocumento>": Print #1, testo
If Not IsNull(Forms![Fattura PA]![CausaleFE]) Then
   testo = "<Causale>" + Causale + "</Causale>": Print #1, testo
End If
testo = "</DatiGeneraliDocumento>": Print #1, testo

If (Forms![Fattura PA Testata]![OrdineAcquisto]) <> "" Then
   testo = "<DatiOrdineAcquisto>": Print #1, testo
   testo = "<IdDocumento>" + Ordine + "</IdDocumento>": Print #1, testo
   If Not IsNull(Forms![Fattura PA Testata]![DataOrdineAcquisto]) Then
      testo = "<Data>" + DataOrdine + "</Data>": Print #1, testo
   End If
   If (Forms![Fattura PA Testata]![Commessa]) <> "" Then
      testo = "<CodiceCommessaConvenzione>" + Commessa + "</CodiceCommessaConvenzione>": Print #1, testo
   End If
   If (Forms![Fattura PA Testata]![CUP]) <> "" Then
      testo = "<CodiceCUP>" + CUP + "</CodiceCUP>": Print #1, testo
   End If
   If (Forms![Fattura PA Testata]![CIG]) <> "" Then
      testo = "<CodiceCIG>" + CIG + "</CodiceCIG>": Print #1, testo
   End If
   testo = "</DatiOrdineAcquisto>": Print #1, testo
End If

Set Rsz = MioDB.OpenRecordset("DettaglioDDTQuery", dbOpenDynaset, dbSeeChanges) 'query di filtro record Dettaglio Righe
Do While Not Rsz.EOF
NumeroDDT = Rsz![NumeroDDT]
DataDDT = Rsz![DataDDT]
DataDDT = Format(DataDDT, "yyyy-mm-dd")
If Rsz![NumeroDDT] <> "" Then
   testo = "<DatiDDT>": Print #1, testo
   testo = "<NumeroDDT>" + NumeroDDT + "</NumeroDDT>": Print #1, testo
   testo = "<DataDDT>" + DataDDT + "</DataDDT>": Print #1, testo
   testo = "</DatiDDT>": Print #1, testo
End If
Rsz.MoveNext
Loop
Rsz.Close

If (Forms![Fattura PA Testata]![Vettore]) <> "" Then
   testo = "<DatiTrasporto>": Print #1, testo
   testo = "<DatiAnagraficiVettore>": Print #1, testo
   testo = "<IdFiscaleIVA>": Print #1, testo
   testo = "<IdPaese>" + IDPaeseVettore + "</IdPaese>": Print #1, testo
   testo = "<IdCodice>" + IdCodiceVettore + "</IdCodice>": Print #1, testo
   testo = "</IdFiscaleIVA>": Print #1, testo
   If (Forms![Fattura PA Testata]![CodiceFiscaleVettore]) <> "" Then
      If (Forms![Fattura PA Testata]![IDPaeseVettore]) = "IT" Then
         testo = "<CodiceFiscale>" + CodiceFiscaleVettore + "</CodiceFiscale>": Print #1, testo
      End If
   End If
   testo = "<Anagrafica>": Print #1, testo
   If (Forms![Fattura PA Testata]![VettorePF]) = 0 Then
      testo = "<Denominazione>" + DenominazioneVettore + "</Denominazione>": Print #1, testo
   End If
   If (Forms![Fattura PA Testata]![VettorePF]) = -1 Then
      testo = "<Nome>" + NomeVettore + "</Nome>": Print #1, testo
      testo = "<Cognome>" + CognomeVettore + "</Cognome>": Print #1, testo
   End If
   testo = "</Anagrafica>": Print #1, testo
   testo = "</DatiAnagraficiVettore>": Print #1, testo
   testo = "</DatiTrasporto>": Print #1, testo
End If
testo = "</DatiGenerali>": Print #1, testo
testo = "<DatiBeniServizi>": Print #1, testo

Set Rst = MioDB.OpenRecordset("DettaglioRigheQuery", dbOpenDynaset, dbSeeChanges) 'query di filtro record Dettaglio Righe
Do While Not Rst.EOF
NumeroLinea = Contatore + 1
Contatore = NumeroLinea
TipoCessionePrestazione = "AC"
CodiceTipo = "Ns.Cod.Articolo"
CodiceValore = Rst![Cod Articolo]
CodiceIntra = Rst![Cod Intra]
Descrizione = Rst![Descrizione]
Quantita = Rst![Quantita]
Quantita = Format(Quantita, "0.00")
Quantita = replace(Quantita, ",", ".")
UnitaMisura = Rst![um]
PrezzoUnitario = Rst![Prezzo]
PrezzoUnitario = Format(PrezzoUnitario, "0.0000")
PrezzoUnitario = replace(PrezzoUnitario, ",", ".")
Tipo = Rst![ScontoMaggiorazione]
PercentualeSconto = Rst![Percentuale]
PercentualeSconto = Format(PercentualeSconto, "0.00")
PercentualeSconto = replace(PercentualeSconto, ",", ".")
PrezzoTotale = Rst![Importo]
PrezzoTotale = Format(PrezzoTotale, "0.00")
PrezzoTotale = replace(PrezzoTotale, ",", ".")
AliquotaIVARiga = Rst![Aliquota]
AliquotaIVARiga = Format(AliquotaIVARiga, "0.00")
AliquotaIVARiga = replace(AliquotaIVARiga, ",", ".")
RitenutaRiga = Rst![Ritenuta]
NaturaRiga = Rst![Natura]
testo = "<DettaglioLinee>": Print #1, testo
testo = "<NumeroLinea>" + NumeroLinea + "</NumeroLinea>": Print #1, testo
If Not IsNull(Rst![Cod Articolo]) Then
   testo = "<CodiceArticolo>": Print #1, testo
   testo = "<CodiceTipo>" + CodiceTipo + "</CodiceTipo>": Print #1, testo
   testo = "<CodiceValore>" + CodiceValore + "</CodiceValore>": Print #1, testo
   testo = "</CodiceArticolo>": Print #1, testo
End If
If Not IsNull(Rst![Cod Intra]) Then
   testo = "<CodiceArticolo>": Print #1, testo
   testo = "<CodiceTipo>" + "NC" + "</CodiceTipo>": Print #1, testo
   testo = "<CodiceValore>" + CodiceIntra + "</CodiceValore>": Print #1, testo
   testo = "</CodiceArticolo>": Print #1, testo
End If
testo = "<Descrizione>" + Descrizione + "</Descrizione>": Print #1, testo
If Not IsNull(Rst![Quantita]) Then
   testo = "<Quantita>" + Quantita + "</Quantita>": Print #1, testo
End If
If (Rst![um]) <> "" Then
   testo = "<UnitaMisura>" + UnitaMisura + "</UnitaMisura>": Print #1, testo
End If
If Not IsNull(Rst![Prezzo]) Then
   testo = "<PrezzoUnitario>" + PrezzoUnitario + "</PrezzoUnitario>": Print #1, testo
End If
If ([Tipo]) <> "" Then
   testo = "<ScontoMaggiorazione>": Print #1, testo
   testo = "<Tipo>" + Tipo + "</Tipo>": Print #1, testo
   testo = "<Percentuale>" + PercentualeSconto + "</Percentuale>": Print #1, testo
   testo = "</ScontoMaggiorazione>": Print #1, testo
End If
testo = "<PrezzoTotale>" + PrezzoTotale + "</PrezzoTotale>": Print #1, testo
testo = "<AliquotaIVA>" + AliquotaIVARiga + "</AliquotaIVA>": Print #1, testo
If ([RitenutaRiga]) = -1 Then
   testo = "<Ritenuta>SI</Ritenuta>": Print #1, testo
End If
If ([NaturaRiga]) <> "N0" Then
   testo = "<Natura>" + NaturaRiga + "</Natura>": Print #1, testo
End If
testo = "</DettaglioLinee>": Print #1, testo
Rst.MoveNext
Loop
Rst.Close

NumeroLinea = Contatore + 1
Contatore = NumeroLinea
If (Forms![Riepilogo Fattura PA]![Spese accessorie]) <> 0 Then
   testo = "<DettaglioLinee>": Print #1, testo
   testo = "<NumeroLinea>" + NumeroLinea + "</NumeroLinea>": Print #1, testo
   testo = "<TipoCessionePrestazione>AC</TipoCessionePrestazione>": Print #1, testo
   testo = "<Descrizione>" + "Spese Bancarie" + "</Descrizione>": Print #1, testo
   testo = "<PrezzoUnitario>" + SpeseAccessorie + "</PrezzoUnitario>": Print #1, testo
   testo = "<PrezzoTotale>" + SpeseAccessorie + "</PrezzoTotale>": Print #1, testo
   testo = "<AliquotaIVA>" + AliquotaIVA + "</AliquotaIVA>": Print #1, testo
   If ([Ritenuta]) = -1 Then
      testo = "<Ritenuta>SI</Ritenuta>": Print #1, testo
   End If
   If ([Natura]) <> "N0" Then
      testo = "<Natura>" + Natura + "</Natura>": Print #1, testo
   End If
   testo = "</DettaglioLinee>": Print #1, testo
End If

Set Rsd = MioDB.OpenRecordset("DettaglioDatiRiepilogo", dbOpenDynaset, dbSeeChanges) 'query di filtro record Dati Riepilgo
Do While Not Rsd.EOF
AliquotaIVA = Rsd![Aliquota]
AliquotaIVA = Format(AliquotaIVA, "0.00")
AliquotaIVA = replace(AliquotaIVA, ",", ".")
Natura = Rsd![Natura]
ImponibileImporto = Rsd![SommaDiImporto]
ImponibileImporto = Format(ImponibileImporto, "0.00")
ImponibileImporto = replace(ImponibileImporto, ",", ".")
Imposta = Round((Rsd![SommaDiImporto] / 100 * Rsd![Aliquota]), 2)
Imposta = Format(Imposta, "0.00")
Imposta = replace(Imposta, ",", ".")
RiferimentoNormativo = Rsd![RiferimentoNormativo]
EsigibilitaIVA = Rsd!EsigibilitaIVA
testo = "<DatiRiepilogo>": Print #1, testo
testo = "<AliquotaIVA>" + AliquotaIVA + "</AliquotaIVA>": Print #1, testo
If (Natura) <> "N0" Then
   testo = "<Natura>" + Natura + "</Natura>": Print #1, testo
End If
testo = "<ImponibileImporto>" + ImponibileImporto + "</ImponibileImporto>": Print #1, testo
testo = "<Imposta>" + Imposta + "</Imposta>": Print #1, testo
If (Imposta) <> 0 Then
   testo = "<EsigibilitaIVA>" + EsigibilitaIVA + "</EsigibilitaIVA>": Print #1, testo
End If
If (Natura) <> "N0" Then
   testo = "<RiferimentoNormativo>" + RiferimentoNormativo + "</RiferimentoNormativo>": Print #1, testo
End If
testo = "</DatiRiepilogo>": Print #1, testo
Rsd.MoveNext
Loop
Rsd.Close

testo = "</DatiBeniServizi>": Print #1, testo
testo = "<DatiPagamento>": Print #1, testo
testo = "<CondizioniPagamento>" + CondizioniPagamento + "</CondizioniPagamento>": Print #1, testo

Set Rsv = MioDB.OpenRecordset("DettaglioPagamentoQuery", dbOpenDynaset, dbSeeChanges) 'query di filtro record
Do While Not Rsv.EOF
DataScadenzaPagamento = Rsv!Scadenza
DataScadenzaPagamento = Format(DataScadenzaPagamento, "yyyy-mm-dd")
ImportoPagamento = Rsv![ImportoScadenza]
ImportoPagamento = Format(ImportoPagamento, "0.00")
ImportoPagamento = replace(ImportoPagamento, ",", ".")
testo = "<DettaglioPagamento>": Print #1, testo
testo = "<ModalitaPagamento>" + ModalitaPagamento + "</ModalitaPagamento>": Print #1, testo
testo = "<DataScadenzaPagamento>" + DataScadenzaPagamento + "</DataScadenzaPagamento>": Print #1, testo
testo = "<ImportoPagamento>" + ImportoPagamento + "</ImportoPagamento>": Print #1, testo
If Forms![Fattura PA Testata]![CodTipoPagFE] = "MP12" Then
   If Not IsNull(BancaCliente) Then
   testo = "<IstitutoFinanziario>" + BancaCliente + "</IstitutoFinanziario>": Print #1, testo
   End If
   If Not IsNull(IBANCliente) Then
   testo = "<IBAN>" + IBANCliente + "</IBAN>": Print #1, testo
   End If
End If
If Forms![Fattura PA Testata]![CodTipoPagFE] = "MP05" Then
   testo = "<IstitutoFinanziario>" + NsBanca + "</IstitutoFinanziario>": Print #1, testo
   testo = "<IBAN>" + NsIBAN + "</IBAN>": Print #1, testo
End If
testo = "</DettaglioPagamento>": Print #1, testo
Rsv.MoveNext
Loop
Rsv.Close
testo = "</DatiPagamento>": Print #1, testo
testo = "</FatturaElettronicaBody>": Print #1, testo
testo = "</p:FatturaElettronica>": Print #1, testo
 
Ultima modifica:

DinoV

Utente junior
5 Ottobre 2017
51
0
6
lOMBARDIA
2010
Best answers
0
Ciao a tutti,
e grazie per le risposte.
Rispondo in primis a Giuliano.
Prendo atto e mi "scuso" per il fraintendimento, sono del parere che a volte le frasi anche se scritte bene vengono interpretate in modo non completamente corretto.
Detto questo mi metto al lavoro per capire "grazie ai vostri consigli" come risolvere la situazione.
Come dite voi è sicuramente complessa ma devo risolverla e con il vostro aiuto "preziosissimo" voglio farcela.
Ringrazio tutti e anche Powerwin per il codice postato.
vi chiedo gentilmente di rimanere "connessi" nei prossimi giorni perché sicuramente vi assillerò con tantissime domande, spero lecite....
Grazie ancora a tutti e buon week......
 

DinoV

Utente junior
5 Ottobre 2017
51
0
6
lOMBARDIA
2010
Best answers
0
Ciao ragazzi, eccomi ancora qua dopo un silenzio "settimanale" dovuto ai diversi impegni lavorativi.Magari potessi pensare solo alla fattura elettronica.
Volevo gentilente una conferma da parte vostra sul tracciato che sto prendendo in considerazione :
La versione del tracciato è la 1.2.1 aggiornata al 16/10/18 presa dal sito
https://www.fatturapa.gov.it/export/fatturazione/sdi/Specifiche_tecniche_del_formato_FatturaPA_v1.2.1.pdf
Me la confermate'?
Scusate l'eventuale possibile domanda banale.
Grazie in anticipo.
 

DinoV

Utente junior
5 Ottobre 2017
51
0
6
lOMBARDIA
2010
Best answers
0
Ok,.!
Volevo farti un'altra domanda prob. banale .
nello schema ci sono dei dati non obbligatori? Ad esempio i dati sui veicoli (2.2.11) se non ci sono non lì inserisco vero??? E scusa ulteriore domanda banale, i dati obbligatori sono relativi dal punto 2.1.1 al 2.1.8 ???
Altro "dettaglio" che forse mi sfugge : Ma dei campi obbligatori c'è una lunghezza min e max?
Grazie ancora
 

DinoV

Utente junior
5 Ottobre 2017
51
0
6
lOMBARDIA
2010
Best answers
0
Senza dubbio!!! se leggi il mio primo post ( o uno dei primi) avevo proprio sottolineato questo. E lo ribadisco.
Non vorrei aver dato una "cattiva" impressione. Ma siccome sto cominciando a smanettare, mi piacerebbe farlo senza perdermi in "passaggi" da evitare.
quindi Flavio, mi dispiace di averti dato l'impressione del : "ragazzi per cortesia fate il lavoro al posto mio!! Grazie".
Non è assolutamente così........ L'inesperienza secondo me è uno step fondamentale perché ci fa "crescere"!! Sempre che chi può aiutare a far crescere lo VOGLIA!!! Che ne dici Falvio, ci si può meditare su questo???? Io direi di sì!!!
Ti ringrazio comunque e torno a smanettare, pronto a farvi altre domande "magari" banali ma forse risolutive per me.
 

Powerwin

VBA Expert
Expert
17 Marzo 2016
3.382
122
63
Milano
2016/365
Best answers
38
Ti ho dato gli strumenti per crescere, sempre che tu lo VOGLIA, i passaggi da evitare, se vorrai veramente imparare, dovrai tenerteli, non 1 non 10 non 1000 ma molti di più, perchè sono quelli che ti aiutano a crescere, sempre che tu lo VOGLIA!!! che ne dici Dino?
Avrei potuto darti il programma completo per la fatturazione invece, proprio perchè volevo che imparassi ti ho postato solo una parte di esso (tra le altre cose, la parte più importante)...ma vedo che non hai colto nemmeno l'essenza del mio post.
 

DinoV

Utente junior
5 Ottobre 2017
51
0
6
lOMBARDIA
2010
Best answers
0
A volte i messaggi scritti vengono fraintesi, io non ho mai voluto il programma pronto, voglio solo partire step by step, può darsi che alcuni vostri messaggi non li abbia "colti" ma non per mancanza di voglia, ma solo per inesperienza........ quindi se faccio domande forse "banali" è solo per chiarirmi meglio.
secondo me il bello del forum è anche sottolineare le proprie idee come stiamo facendo noi e sono sicuro da ambule le parti senza polemica.
Rianalizzo "meglio" i post e poi ci sentiamo.
Grazie
 

DinoV

Utente junior
5 Ottobre 2017
51
0
6
lOMBARDIA
2010
Best answers
0
Ciao a tutti e scusate il lungo "silenzio" dovuto al poco tempo e soprattutto alle "varie" prove effettuate.
Grazie a tutti i vostri consigli sono riuscito nei ritagli di tempo ha far generare al mio programma il file xml.
durante la validazione del file sul sito https://fatturazione-elettronica-pa.assocons.it/site/lipa/validazione/upload
mi esce un errore che non riesco ad interpretare .
Di seguito vi posto la dicitura dell'errore:
riga: 1; colonna: 841; cvc-pattern-valid: Value '' is not -valid with respect to pattern '[\p{IsBasicLatin}\p{IsLatin-1Supplement}]{1,60}' for type 'String60LatinType'.
Qualcuno sa cortesemente darmi una "dritta" risolutiva su questo errore????
grazie in anticipo
 

Powerwin

VBA Expert
Expert
17 Marzo 2016
3.382
122
63
Milano
2016/365
Best answers
38
A parte il tempo trascorso, e qui stendo un velo pietoso, sei sicuro di aver utilizzato lo schema .xsd che c'è sul sito per creare il tuo .xml? se la risposta è no...è normale che ti dia errori
 

DinoV

Utente junior
5 Ottobre 2017
51
0
6
lOMBARDIA
2010
Best answers
0
Grande Powerwin sempre preciso e "pungente" sui veli pietosi.... complimenti
Alcuni errori gli ho già corretti perché decifrati, ma quest'ultimo no.secondo te/voi può dipendere da qualcge lettera accentata che ho in "giro"??? Oppure...
grazie ancora per la disponibilità
 

Powerwin

VBA Expert
Expert
17 Marzo 2016
3.382
122
63
Milano
2016/365
Best answers
38
Non sapendo dove si trova "l'eventuale" lettera accentata è quasi impossibile darti una risposta certa

p.s. probabilmente ti è sfuggita la domanda "sei sicuro di aver utilizzato lo schema .xsd che c'è sul sito per creare il tuo .xml? " sarebbe interessante conoscere la risposta
 

DinoV

Utente junior
5 Ottobre 2017
51
0
6
lOMBARDIA
2010
Best answers
0
La risposta è sì!!! Lo schema è quello.Mi sembra di capire che l'errore identifica un carattere speciale o un carattere accentato.Ho verificato ma non ne ho.E' quello molto strano.Una cortesia , nel tipo di errore mi da il num di riga e il num di colonna.Come faccio ad identificarle'??? scusa la domanda banale.Ho provato ad aprire il file con Notepad++ ma non ne esco.
Posso allegarti il file XML in modo che tu le possa dare un'occhiata???
Attendo "gentili" tue....
Grazie ancora
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!