Esportare in un file XML
In questo esempio vedremo come esportare una fattura all’interno di un file xml. Questo script sarà un’azione all’interno della scheda della fattura.
Gruppo Script
Scheda
Evento
Valore in modifica
documento = program.newxmldocument()
Creiamo il nostro documento xml vuoto.
nodoprincipale = documento.createelement("p","FatturaElettronica","http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2")
documento.appendchild("xml-stylesheet",'type="text/xsl" href="fatturapa_v1.2.xsl"')
attributo_nodo = documento.createattribute("xmlns:ds")
attributo_nodo.setvalue("http://www.w3.org/2000/09/xmldsig#")
nodoprincipale.appendattribute(attributo_nodo)
attributo_nodo1 = documento.createattribute("xsi","schemaLocation","http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 fatturaordinaria_v1.2.xsd")
nodoprincipale.appendattribute(attributo_nodo1)
attributo_nodo = documento.createattribute("xmlns:xsi")
attributo_nodo.setvalue("http://www.w3.org/2001/XMLSchema-instance")
nodoprincipale.appendattribute(attributo_nodo)
In questo segmento dello script abbiamo inserito i dati richiesti per la fattura elettronica. Questo è solo un esempio per vedere come nidificare i nodi e assegnare gli attributi.
ProgressivoInvio = documento.createelement("ProgressivoInvio")
ProgressivoInvio.setvalue(dataview.getvalue("numero"))
nodoprincipale.appendchild(ProgressivoInvio)
Iniziamo a creare i nodi che servono e impostiamo il valore recuperandolo dalla scheda che, in questo caso, è il numero della fattura. Ricordate che la creazione degli elementi parte sempre del documento, ma poi occorre “agganciare” il nodo al padre.
tabellarighe = dataview.getatable("fattura_rows")
nrighe = tabellarighe.countrows()
righe = tabellarighe.getrows()
Estrapolo le righe che compongono la fattura.
DettaglioLinee = documento.createelement("DettaglioLinee")
for i = 1,nrighe do
valore_linea_codicearticolo = righe[i].getvalue("codice")
valore_linea_qta = utility.formatnum(righe[i].getvalue("qta"),5)
utility.formatnum(righe[i].getvalue("qta"),5)
linea = documento.createelement("Linea")
linea_codicearticolo = documento.createelement("CodiceArticolo")
documento.createelement("CodiceArticolo")
linea_codicearticolo.setvalue(valore_linea_codicearticolo)
linea_qta = documento.createelement("Qta")
linea_qta.setvalue(valore_linea_qta)
linea.appendchild(linea_codicearticolo)
linea.appendchild(linea_qta)
DettaglioLinee.appendchild(linea)
end
nodoprincipale.appendchild(DettaglioLinee)
Creiamo un nodo di nome Linea che conterrà i dati di ogni singola riga e inseriamo codice e quantità. Questo nodo sarà poi collegato a un nodo padre chiamato DettaglioLinee che a sua volta verrà collegato al nodo principale.
documento.appendchild(nodoprincipale)
nomefile = paese_nomefile .. idfiscale_nomefile .. "_" .. ProgressivoInvio.getvalue()
cartella_fatture = utility.openfolderdialog()
if (cartella_fatture~="") then
if nomefile ~= "" then
nomefile = cartella_fatture .. "\\" ..nomefile .. ".xml"
documento.save(nomefile)
dataview.showconfirm("File fattura elettronica creato con successo")
end
end
Per concludere, colleghiamo il nodoprincipale al documento, impostiamo il nome del file e chiediamo all’utente in quale cartella dovrà essere salvato.
Come si può notare il nodoprincipale è stato utilizzato per tutto lo script, ma soltanto alla fine è stato collegato al documento. Tuttavia ai fini dello script non cambia se il nodo viene collegato all’inizio o alla fine, l’importante è che questa operazione venga eseguita prima dell’effettivo salvataggio del file xml.