Created
February 2, 2019 13:31
-
-
Save raulfmiranda/53971cbfc35d50bacbade19ae79803ce to your computer and use it in GitHub Desktop.
BUSCA POR ORDERS E ESCREVE XML
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const File = require('dw/io/File'); | |
const FileWriter = require('dw/io/FileWriter'); | |
const XMLStreamWriter = require('dw/io/XMLStreamWriter'); | |
const OrderMgr = require('dw/order/OrderMgr'); | |
const Order = require('dw/order/Order'); | |
exports.execute = function(args) { | |
try { | |
// Order possible status values: | |
// EXPORT_STATUS_NOTEXPORTED | |
// EXPORT_STATUS_EXPORTED | |
// EXPORT_STATUS_READY | |
// EXPORT_STATUS_FAILED | |
var query = "exportStatus=" + Order.EXPORT_STATUS_NOTEXPORTED; | |
query += " or exportStatus=" + Order.EXPORT_STATUS_READY; | |
query += " or exportStatus=" + Order.EXPORT_STATUS_FAILED; | |
var orders = OrderMgr.queryOrders(query, "orderNo asc", null); | |
// uncomment count to debug | |
// var count = orders.getCount(); | |
writeOrdersXML(orders); | |
} catch(e) { | |
let errorXML = e; | |
} finally { | |
xsw.close(); | |
fileWriter.close(); | |
} | |
} | |
function writeOrdersXML(orders) { | |
// Save XML on: /on/demandware.servlet/webdav/Sites/Impex/src/exports/exportOrders.xml | |
var impexPath = File.IMPEX + File.SEPARATOR + 'src' + File.SEPARATOR + 'exports' + File.SEPARATOR + 'exportOrders.xml'; | |
var file = new File(impexPath); | |
var fileWriter = new FileWriter(file, 'UTF-8'); | |
var xsw = new XMLStreamWriter(fileWriter); | |
// Start to write the XML Order | |
xsw.writeStartElement('orders'); | |
xsw.writeAttribute('xmlns', 'http://www.demandware.com/xml/impex/catalog/2006-10-31'); | |
while(orders.hasNext()) { | |
var order = orders.next(); | |
xsw.writeStartElement('order'); | |
xsw.writeAttribute('order-no', order.getOrderNo()); | |
xsw.writeStartElement('order-date'); | |
xsw.writeCharacters(order.getCreationDate()); | |
xsw.writeEndElement(); | |
xsw.writeStartElement('customer'); | |
xsw.writeStartElement('customer-name'); | |
xsw.writeCharacters(order.getCustomerName()); | |
xsw.writeEndElement(); | |
xsw.writeStartElement('customer-no'); | |
xsw.writeCharacters(order.getCustomerNo()); | |
xsw.writeEndElement(); | |
xsw.writeStartElement('customer-email'); | |
xsw.writeCharacters(order.getCustomerEmail()); | |
xsw.writeEndElement(); | |
xsw.writeEndElement(); | |
xsw.writeStartElement('adjusted-merchandize-total'); | |
xsw.writeStartElement('gross-price'); | |
xsw.writeCharacters(order.getAdjustedMerchandizeTotalGrossPrice()); | |
xsw.writeEndElement(); | |
xsw.writeEndElement(); | |
xsw.writeStartElement('product-lineitems'); | |
// LOOP product-lineitems | |
var productLineItems = order.getAllProductLineItems(); | |
var prodLineItemsSize = productLineItems.size(); | |
var prodLineItemsArray = productLineItems.toArray(); | |
for(var i = 0; i < prodLineItemsSize; i++) { | |
xsw.writeStartElement('product-lineitem'); | |
xsw.writeStartElement('product-id'); | |
xsw.writeCharacters(prodLineItemsArray[i].productID); | |
xsw.writeEndElement(); | |
xsw.writeEndElement(); | |
} | |
xsw.writeEndElement(); | |
xsw.writeStartElement('payments'); | |
// LOOP payments | |
var orderPaymentInstrumentsArray = order.paymentInstruments.toArray(); | |
for (var j = 0; j < orderPaymentInstrumentsArray.length; j++) { | |
xsw.writeStartElement('payment'); | |
xsw.writeStartElement('payment-method'); | |
xsw.writeCharacters(orderPaymentInstrumentsArray[j].paymentMethod); | |
xsw.writeEndElement(); | |
xsw.writeEndElement(); | |
} | |
xsw.writeEndElement(); | |
xsw.writeEndElement(); | |
} | |
xsw.writeEndElement(); | |
xsw.flush(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment