* this is just a subset of the line, just complete with the rest * NEW: added AddressDetail and TaxPercentage CREATE CURSOR xlsOutput (InvoiceNo Varchar(32), SystemEntryDate Datetime, ; productCode Varchar(50), productDescription Varchar(200), ; taxpayable Double, grosstotal Double, ; taxpercentage Double, addressdetail Varchar(200)) LOCAL XML AS MSXML2.DOMDocument60 m.XML = CREATEOBJECT("MSXML2.DOMDocument.6.0") m.XML.Async = .F. m.XML.Load(GETFILE()) LOCAL Invoices AS MSXML2.IXMLDOMNodeList LOCAL Invoice AS MSXML2.IXMLDOMNode LOCAL DocTotals AS MSXML2.IXMLDOMNode LOCAL Details AS MSXML2.IXMLDOMNodeList LOCAL Detail AS MSXML2.IXMLDOMNode * NEW: Address and TAX information in the XML file LOCAL Address AS MSXML2.IXMLDOMNode LOCAL Tax AS MSXML2.IXMLDOMNode LOCAL FromHeader AS Object LOCAL FromTotals AS Object LOCAL FromDetail AS Object * NEW: Address and TAX information VFP buffers LOCAL FromAddress AS Object LOCAL FromTax AS Object m.XML.Setproperty("SelectionNamespaces", 'xmlns:saft="urn:OECD:StandardAuditFile-Tax:PT_1.04_01"') m.Invoices = m.XML.Selectnodes("//saft:SourceDocuments/saft:SalesInvoices/saft:Invoice") FOR EACH m.Invoice IN m.Invoices XMLTOCURSOR("<vfp>" + m.Invoice.xml + "</vfp>", "tmpInvoiceHeader") SCATTER NAME FromHeader m.DocTotals = m.Invoice.selectNodes("saft:DocumentTotals").item(0) XMLTOCURSOR("<vfp>" + m.DocTotals.xml + "</vfp>", "tmpInvoiceTotals") SCATTER NAME FromTotals * NEW: select Address node from the invoice and store the data in a VFP buffer m.Address = m.Invoice.selectNodes("saft:ShipTo/saft:Address").item(0) XMLTOCURSOR("<vfp>" + m.Address.xml + "</vfp>", "tmpInvoiceShipTo") SCATTER NAME FromAddress m.Details = m.Invoice.selectNodes("saft:Line") FOR EACH m.Detail IN m.Details XMLTOCURSOR("<vfp>" + m.Detail.xml + "</vfp>", "tmpInvoiceDetail") SCATTER NAME FromDetail * NEW: select tax information from the detail and store the data in a VFP buffer m.Tax = m.Detail.selectNodes("saft:Tax").item(0) XMLTOCURSOR("<vfp>" + m.Tax.xml + "</vfp>", "tmpTax") SCATTER NAME FromTax SELECT xlsOutput APPEND BLANK GATHER NAME m.FromHeader GATHER NAME m.FromTotals GATHER NAME m.FromDetail * NEW: fetch data from VFP buffers GATHER NAME m.FromAddress GATHER NAME m.FromTax ENDFOR ENDFOR SELECT xlsOutput BROWSEHello António,