Skip to content

Instantly share code, notes, and snippets.

@jterrero
Created August 29, 2016 22:27
Show Gist options
  • Save jterrero/51f16ef25a356e436e797d21a9e89f2a to your computer and use it in GitHub Desktop.
Save jterrero/51f16ef25a356e436e797d21a9e89f2a to your computer and use it in GitHub Desktop.
handshake node fetch into oracle
var request = require('request');
var dbConfig = require('../../config/datbase.js');
var Util = require('../../lib/util.js');
var oracledb = require('oracledb');
var oracleSID= database.ERP;
var ASQ = require('asynquence');
/*
* GET /handshakeorders
*/
/*
* set current date url for handshake fetch, basic auth over ssl
*/
function GetAllOrderData(limit,offsetStart,cb){
var todayDate = new Date();
var ctime = Util.dateFormat(todayDate, "%Y%m%d", true) + "T00:00:00";
var apiKey = "abaf15f2a804xx7373429096bf118c7ba29fff879",
token = "X";
var url = "https://" + apiKey + ":" + token + "@app.handshake.com/api/v2/orders?ctime__gte=" + ctime + "&limit=10&offset=" + offsetStart;
var qryarr = [];
GetHandShakeData(url,function(recordset){
if(recordset.length > 0){
qryarr = recordset;
offsetStart = offsetStart + limit
GetAllOrderData(limit,offsetStart,function(recordset){
for(loop=0;loop<recordset.length;loop++){
qryarr.push(recordset[loop]);
}
cb(qryarr);
});
}
else{
cb(qryarr);
}
});
}
/*
* json parse to oracle
*/
function GetHandShakeData(url,cb)
{
var qryarr = [];
console.log(url);
request({url: url,json: true},
function (error, response, body) {
if(body.objects == undefined){
console.log("Error in API:");
console.log(body);
cb("Error");
}
else
{
var qryProducts = '';
var itemCount = 1;
var todayDate = new Date();
var dftDelDate = Util.dateFormat(todayDate, "%Y-%m-%d", true);
console.log("Total objects "+ body.objects.length);
for (var i = 0; i < body.objects.length; i++)
{
var chain = body.objects[i]["customer"]["taxID"] + '';
var customer = body.objects[i]["customer"]["id"] + '';
var salesrep = body.objects[i]["ownerName"]+ '';
var delivery_date = body.objects[i]["startShipDate"]+ '';
var po_number = body.objects[i]["objID"]+ '';
var date = body.objects[i]["cdate"] + '';
var notes = body.objects[i]["notes"] + ' ';
var order_type = body.objects[i]["shippingMethod"]+ '';
var flag = body.objects[i]["paymentTerms"]+ '';
var items = body.objects[i]["lines"];
for (var itmloop = 0; itmloop < items.length; itmloop++) {
item_total = items[itmloop]["unitPrice"];
drv_item_id = items[itmloop]["sku"] + '';
quantity = items[itmloop]["qty"];
itemCount++;
if(qryProducts != ''){
qryProducts += " Union all ";
}
if(delivery_date =="null"){
delivery_date = dftDelDate;
}
qryProducts += " Select '"+ chain.replace(/'/g,"''") +"','"+ customer.replace(/'/g,"''") +"','"+ salesrep.replace(/'/g,"''") +"'," +
" TO_DATE('"+ delivery_date.replace(/'/g,"''") +"','YYYY-MM-dd'),'"+ po_number.replace(/'/g,"''") + "','"+
drv_item_id.replace(/'/g,"''") + "','"+ quantity + "','"+ order_type.replace(/'/g,"''") + "','" +
item_total +"','"+ notes.replace(/'/g,"''") + "' from dual";
if(itemCount % 30 == 0){
if(qryProducts !="")
qryarr.push(qryProducts);
qryProducts ='';
itemCount = 1;
}
}
}
if(qryProducts != ''){
qryarr.push(qryProducts);
}
cb(qryarr);
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment