Exportarea intr-un fisier XML

In acest exemplu vom vedea cum sa exportam o factura intr-un fisier XML. Acest script va fi o actiune in cadrul fisei facturii.

Grup ScriptEveniment
FisaValoare in modificare
document = program.newxmldocument()

Sa cream documentul nostru gol XML.

mainnode = document.createelement("p","ElectronicInvoice ","http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2")
    
document.appendchild("xml-stylesheet",'type="text/xsl" href="invoicepa_v1.2.xsl"')

attribute_node = document.createattribute("xmlns:ds")
attribute_node.setvalue("http://www.w3.org/2000/09/xmldsig#")
mainnode.appendattribute(attribute_node)
    
attribute_node1 =  document.createattribute("xsi","LocationSchema","http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 fatturaordinaria_v1.2.xsd")
mainnode.appendattribute(attribute_node1)
    
attribute_node = document.createattribute("xmlns:xsi")
attribute_node.setvalue("http://www.w3.org/2001/XMLSchema-instance")
mainnode.appendattribute(attribute_node)   

In acest segment al script-ului am introdus datele necesare pentru factura electronica. Acesta este doar un exemplu pentru a vedea cum pot fi grupate nodurile si distribui atribute.

progessivesending = document.createelement("ProgressiveSending")
progessivesending.setvalue(dataview.getvalue("number"))
mainnode.appendchild(progessivesending) 

Incepem crearea nodurilor de care avem nevoie si setarea valorii prin preluarea ei de pe fisa care, in acest caz, este numarul facturii. Retineti ca: crearea elementelor porneste intotdeauna de la document, dar este necesar apoi sa „agatati” nodul la parinte!

table_rows = dataview.getatable("invoice_rows")
nrows = table_rows.countrows()
rows = table_rows.getrows()

Extragem randurile care alcatuiesc factura.

DetailLines= document.createelement("DetailLines")

for i = 1,nrows do
        value_line_itemcode = rows[i].getvalue("code")
        value_line_qty = utility.formatnum(rows[i].getvalue("qty"),5)
        utility.formatnum(rows[i].getvalue("qty"),5)
        
        line = document.createelement("Line")
        line_itemcode = document.createelement("ItemCode")
        document.createelement("ItemCode")
        line_itemcode.setvalue(value_line_itemcode)

        line_qty = document.createelement("Qty")
        line_qty.setvalue(value_line_itemcode)

        line.appendchild(line_itemcode)
        line.appendchild(line_qty)
        detaillines.appendchild(line)
end
mainnode.appendchild(detaillines)

Cream un nod numit Line care va contine datele fiecarei linii si introducem cod si cantitate. Acest nod va fi apoi conectat la un nod parinte numit DetailLines care la randul sau, va fi conectat la nodul principal.

document.appendchild(mainnode)
filename = country_filename .. idfiscal_filename .. "_" .. progessivesending.getvalue()
folder_invoices = utility.openfolderdialog()

if (folder_invoices~="") then
        if filename ~= "" then
               filename = folder_invoices .. "\\" .. filename .. ".xml"
               document.save(filename)
               dataview.showconfirm("File electronic invoice successfully created")
        end
end

Pentru a incheia, conectam mainnode la document, setam numele fisierului si intrebam utilizatorului in ce dosar va trebui salvat.

Dupa cum se poate observa, mainnode-ul a fost utilizat pentru intregul script, dar numai la final a fost legat de document. Cu toate acestea, script-ul nu se schimba daca nodul este conectat la inceput sau la sfarsit, important este ca aceasta operatiune sa fie efectuata inainte de salvarea efectiva a fisierului XML.