Skip to content

Instantly share code, notes, and snippets.

@raulfmiranda
Created February 2, 2019 13:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save raulfmiranda/53971cbfc35d50bacbade19ae79803ce to your computer and use it in GitHub Desktop.
Save raulfmiranda/53971cbfc35d50bacbade19ae79803ce to your computer and use it in GitHub Desktop.
BUSCA POR ORDERS E ESCREVE XML
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