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.