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 | Evento |
Scheda | 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.