Exporter vers un fichier XML

Dans cet exemple nous voyons comment exporter une facture vers un fichier xml. Ce script sera une action dans la fiche de la facture.

Groupe ScriptÉvénement
FicheValeur en modification
document = program.newxmldocument()

Nous créons notre document xml vide.

mainnode = document.createelement("p","FatturaElettronica","http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2")
    
document.appendchild("xml-stylesheet",'type="text/xsl" href="fatturapa_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","schemaLocation","http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 fatturaordinaria_v1.2.xsd")
mainnode.appendattribute(attribute_node1)"xmlns:xsi")
attribute_node.setvalue("http://www.w3.org/2001/XMLSchema-instance")
mainnode.appendattribute(attribute_node)   

Dans ce segment du script, nous avons saisi les données requises pour la facture électronique. Ceci est seulement un exemple pour voir comment nicher les nœuds et attribuer les attributs.

progessivesending = document.createelement("ProgressivoInvio")
progessivesending.setvalue(dataview.getvalue("numero"))
mainnode.appendchild(progessivesending) 

Nous commençons à créer les nœuds nécessaires et nous réglons la valeur en le récupérant de la fiche qui, dans ce cas, est le nombre de la facture. N’oubliez pas que la création des éléments commence toujours du document, mais après il faut «accrocher» le nœud au père.

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

Nous extrayons le lignes qui composent la facture.

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)

Nous créons un nœud avec le nom Line qui contiendra les données de chaque ligne et nous saisissons le code et la quantité. Ce nœud sera après lié à un nœud père appelé detaillines qui à son tour sera relié au nœud 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 invoice electronics successfully created")
        end
end

Pour conclure, nous liions le mainnode au document, nous définissons le nom du fichier et nous demandons à l’utilisateur dans quel dossier il doit être enregistré.

Comme vous pouvez noter le mainnode a été utilisé pour l’ensemble du script, mais seulement à la fin a été connecté au document. Cependant, aux fins du script, il ne change pas si le nœud est connecté au début ou à la fin, l’important est que cette opérations soit effectuée avant l’enregistrement effectif du fichier xml.