const PrAdapter = require("../adapter/pradapter.js"); const pradapter = new PrAdapter(); const Controllers = require("./controller.js"); const controllers = new Controllers(); var apireshandler = controllers.getApiResultDefined(); const baseurlsap = "http://" + process.env.HOSTSAP + "/sapapi/index.php/api"; const apikeysap = "befea63a-7c47-4323-afea-968a3168fe0a"; const request = require("request"); function buildPipeString(length, mapping = {}) { const arr = Array(length).fill(""); Object.keys(mapping).forEach((index) => { arr[index] = mapping[index]; }); return arr.join("|"); } function buildPrAccount({prNo, qtyAcc, prDate, budget, costCenter, profitCenter}) { return buildPipeString(40, { 0: prNo, 1: qtyAcc, 3: prDate, 7: budget, 8: "TIL1", 9: costCenter, 17: profitCenter, }); } function buildPrItem({prNo, shortText, qty, unit, price, prDate}) { return buildPipeString(80, { 0: prNo, 3: "120", 4: "Putra", 5: shortText, 13: "1603", 15: "TrackNo1", 16: "ZSRV", 18: qty, 19: unit, 21: prDate, 23: prDate, 25: price, 26: "1", 28: "J", 36: "1603", 79: "D", }); } exports.getListJustification = (req, res) => { try { pradapter.queryPrJustificationList(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [18] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.getListPR = (req, res) => { try { pradapter.queryPrPRList(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [18] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.gettrxid = (req, res) => { try { pradapter.queryGetTrxIdPr(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [18] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.getListPr = (req, res) => { try { pradapter.queryPrList(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [167] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.setNewPr = (req, res) => { try { pradapter.queryNewPr(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [167] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.getDetailPr = (req, res) => { try { pradapter.queryPrDetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [93] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.setUpdatePr = (req, res) => { try { pradapter.queryUpdatePr(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [167] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.setUpdateStatusPr = (req, res) => { try { let status = req.body.status; let idxpr = req.body.idxpr; if (status == 0) { // if(0==1){ req.query.id = idxpr; pradapter.queryUpdateStatusPr(req, req.body.prnumber, "", function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } else { pradapter.queryUpdateStatusPr(req, "00000", "", function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [123] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.setUpdateStatusProld = (req, res) => { try { let status = req.body.status; let idxpr = req.body.idxpr; if (status == 0) { // if(0==1){ req.query.id = idxpr; pradapter.queryPrDetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) { statusCode = 500; pradapter.sendResponse(statusCode, data, res); } else { var rsdata = JSON.parse(JSON.stringify(data)); console.log('PR Data =>', rsdata.data[0]) // console.log(rsdata["data"]); let pr_type="PRTL"; let x_pr_type="X"; let pr_no = "00010"; let pr_qtyacc ="01"; let pr_date = rsdata.data[0]['prdateYmd']; //Ymd let pr_budget = "00"+rsdata.data[0]['glaccount']; let pr_costcenter = rsdata.data[0]['costcenter']; let pr_profitcenter = "TIL1A01";//rsdata.data[0]['profitcenter']; let pr_shorttext =rsdata.data[0]['description']; let pr_qtyitem =rsdata.data[0]['qty']; let pr_unititem =rsdata.data[0]['unit']; let pr_priceitem =rsdata.data[0]['netprice']; // let pr_account="00010|01||20130727||||0051331006|TIL1|TIL1A01|||||||||||TIL1A01||||||||||||||||||||||"; let pr_account= pr_no+"|"+pr_qtyacc+"||"+pr_date+"||||"+pr_budget+"|TIL1|"+pr_costcenter+"|||||||||||"+pr_profitcenter+"||||||||||||||||||||||"; // let pr_item="00010|||120|Putra|testcreatePR|||||||||1603||TrackNo1|ZSRV||1|BH||20130727||20130727|||1000|1||J||||||||1603|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|"; let pr_item=pr_no+"|||120|Putra|"+pr_shorttext+"|||||||||1603||TrackNo1|ZSRV||"+pr_qtyitem+"|"+pr_unititem+"||"+pr_date+"||"+pr_date+"|||"+pr_priceitem+"|1||J||||||||1603|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|"; let resuri={ 'method': 'POST', // 'url': baseurl+'signon', 'url': process.env.SAP_API_BASE_URL+'/createPr?pr_type='+pr_type+'&x_pr_type=X&praccount[]='+pr_account+'&pritem[]='+pr_item, 'headers': { 'Content-Type': 'application/json', 'x-api-key' : process.env.SAP_API_KEY }, // form: formjson, }; console.log('resuri', resuri); request(resuri, function (error, response) { // console.log('response.body', response.body) if (error) { apireshandler.message = error.toString(); pradapter.sendResponse(400, apireshandler, res); } else { var resdata = JSON.parse(response.body); var errcode = ""; var errmsg = ""; resdata["RETURN"].forEach((e) => { if (e.TYPE == "E") { errcode += e.NUMBER + ", "; errmsg += e.MESSAGE + " & "; } }); errcode = errcode.substring(0, errcode.length - 2); errmsg = errmsg.substring(0, errmsg.length - 3); if (errcode.length > 0) { pradapter.queryUpdateSapMessage(req, errmsg, function(err, data) { apireshandler.meta.code = errcode; apireshandler.meta.message = "Failed to Create PR SAP"; pradapter.sendResponse(200, apireshandler, res); }) } else { pradapter.queryUpdateStatusPr(req, resdata["NUMBER"], errmsg, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); // apireshandler.success = true; } } }); //pradapter.sendResponse(statusCode,data, res); } }); } else { pradapter.queryUpdateStatusPr(req, "00000", "", function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [123] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.deletePR = (req, res) => { try { pradapter.queryDeletePr(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [138] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.approvedPR = (req, res) => { try { pradapter.queryApprovedPR(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [153] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.getprmanagementlist = (req, res) => { try { pradapter.queryPrManagementList(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [260] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.getprmanagementlistdetail = (req, res) => { try { pradapter.queryPrManagementListDetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [275] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.releasePRSAP = (req, res) => { try { let idxpr = req.body.idxpr; req.query.id = idxpr; pradapter.queryPrDetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) { statusCode = 500; pradapter.sendResponse(statusCode, data, res); } else { var rsdata = JSON.parse(JSON.stringify(data)); let prnumber = rsdata.data[0]["prnumber"]; //Ymd let resuri = { "method": "POST", // 'url': baseurl+'signon', "url": baseurlsap + "/releasePr?number=" + prnumber + "&rel_code=A1", "headers": { "Content-Type": "application/json", "x-api-key": apikeysap, }, // form: formjson, }; // console.log(resuri); request(resuri, function (error, response) { if (error) { // console.log(error); apireshandler.message = error.toString(); pradapter.sendResponse(400, apireshandler, res); } else { console.log(response.body); var resdata = JSON.parse(response.body); var errcode = ""; var errmsg = ""; resdata["RETURN"].forEach((e) => { if (e.TYPE == "E") { errcode += e.NUMBER + ", "; errmsg += e.MESSAGE + " & "; } }); errcode = errcode.substring(0, errcode.length - 2); errmsg = errmsg.substring(0, errmsg.length - 3); if (errcode.length > 0) { apireshandler.meta.code = errcode; apireshandler.meta.message = errmsg; // pradapter.sendResponse(200, apireshandler, res); } else { apireshandler.success = true; } pradapter.queryUpdateStatusPr(req, "", errmsg, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; //data.data = resdata; apireshandler.meta.code = statusCode; apireshandler.data = data.data; pradapter.sendResponse(statusCode, apireshandler, res); }); } }); } }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [348] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.unreleasePRSAP = (req, res) => { try { let idxpr = req.body.idxpr; req.query.id = idxpr; pradapter.queryPrDetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) { statusCode = 500; pradapter.sendResponse(statusCode, data, res); } else { var rsdata = JSON.parse(JSON.stringify(data)); let prnumber = rsdata.data[0]["prnumber"]; //Ymd let resuri = { "method": "POST", // 'url': baseurl+'signon', "url": baseurlsap + "/unreleasePr?number=" + prnumber + "&rel_code=A1", "headers": { "Content-Type": "application/json", "x-api-key": apikeysap, }, // form: formjson, }; // console.log(resuri); request(resuri, function (error, response) { if (error) { // console.log(error); apireshandler.message = error.toString(); pradapter.sendResponse(400, apireshandler, res); } else { console.log(response.body); var resdata = JSON.parse(response.body); var errcode = ""; var errmsg = ""; resdata["RETURN"].forEach((e) => { if (e.TYPE == "E") { errcode += e.NUMBER + ", "; errmsg += e.MESSAGE + " & "; } }); errcode = errcode.substring(0, errcode.length - 2); errmsg = errmsg.substring(0, errmsg.length - 3); if (errcode.length > 0) { apireshandler.meta.code = errcode; apireshandler.meta.message = errmsg; // pradapter.sendResponse(200, apireshandler, res); } else { apireshandler.success = true; } // else{ // pradapter.queryUpdateStatusPr(req,prnumber, errmsg, function(err,data){ // let statusCode = data!=null ? data.meta.code : 200 ; // if(err) statusCode = 500; // pradapter.sendResponse(statusCode,data, res); // }); // } pradapter.queryUpdateStatusPr(req, "", errmsg, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; //data.data = resdata; apireshandler.meta.code = statusCode; apireshandler.data = data.data; pradapter.sendResponse(statusCode, apireshandler, res); }); } }); } }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [413] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.changePRSAP = (req, res) => { try { pradapter.queryUpdateStatusPr(req, "", "", function (err, data) { console.log(data); let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; pradapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [522] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.changePRSAPold = (req, res) => { try { let idxpr = req.body.idxpr; req.query.id = idxpr; pradapter.queryPrDetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) { statusCode = 500; pradapter.sendResponse(statusCode, data, res); } else { var rsdata = JSON.parse(JSON.stringify(data)); // console.log(rsdata["data"]); let pr_no = "00010"; let pr_qtyacc = "01"; let pr_number = rsdata.data[0]["prnumber"]; //Ymd let pr_date = rsdata.data[0]["prdateYmd"]; //Ymd let pr_budget = "00" + rsdata.data[0]["glaccount"]; let pr_costcenter = rsdata.data[0]["costcenter"]; let pr_profitcenter = "TIL1A01"; //rsdata.data[0]['profitcenter']; let pr_shorttext = rsdata.data[0]["description"]; let pr_qtyitem = rsdata.data[0]["qty"]; let pr_unititem = rsdata.data[0]["unit"]; let pr_priceitem = rsdata.data[0]["netprice"]; // let pr_account="00010|01||20130727||||0051331006|TIL1|TIL1A01|||||||||||TIL1A01||||||||||||||||||||||"; let pr_account = pr_no + "|" + pr_qtyacc + "||" + pr_date + "||||" + pr_budget + "|TIL1|" + pr_costcenter + "|||||||||||" + pr_profitcenter + "||||||||||||||||||||||"; // let pr_item="00010|||120|Putra|testcreatePR|||||||||1603||TrackNo1|ZSRV||1|BH||20130727||20130727|||1000|1||J||||||||1603|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|"; let pr_item = pr_no + "|||120|Putra|" + pr_shorttext + "|||||||||1603||TrackNo1|ZSRV||" + pr_qtyitem + "|" + pr_unititem + "||" + pr_date + "||" + pr_date + "|||" + pr_priceitem + "|1||J||||||||1603||||||||||||||||||||||||||||||||||||||||USD|||||||||||||||||||D|"; let resuri = { "method": "POST", // 'url': baseurl+'signon', "url": baseurlsap + "/changePR?number=" + pr_number + "&praccount[]=" + pr_account + "&pritem[]=" + pr_item, "headers": { "Content-Type": "application/json", "x-api-key": apikeysap, }, // form: formjson, }; // console.log(resuri); request(resuri, function (error, response) { if (error) { console.log(error); apireshandler.message = error.toString(); pradapter.sendResponse(400, apireshandler, res); } else { // console.log("Change pR : "+response.body); var resdata = JSON.parse(response.body); var errcode = ""; var errmsg = ""; resdata["RETURN"].forEach((e) => { // console.log(e); if (e.TYPE == "E") { errcode += e.NUMBER + ", "; errmsg += e.MESSAGE + " & "; } }); errcode = errcode.substring(0, errcode.length - 2); errmsg = errmsg.substring(0, errmsg.length - 3); if (errcode.length > 0) { apireshandler.meta.code = errcode; apireshandler.meta.message = errmsg; // pradapter.sendResponse(200, apireshandler, res); } else { apireshandler.success = true; } pradapter.queryUpdateStatusPr(req, "", errmsg, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; //data.data = resdata; apireshandler.meta.code = statusCode; apireshandler.data = data.data; pradapter.sendResponse(statusCode, apireshandler, res); }); } }); //pradapter.sendResponse(statusCode,data, res); } }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [522] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } }; exports.deletePRSAP = (req, res) => { try { let idxpr = req.body.idxpr; req.query.id = idxpr; pradapter.queryPrDetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) { statusCode = 500; pradapter.sendResponse(statusCode, data, res); } else { var rsdata = JSON.parse(JSON.stringify(data)); let prnumber = rsdata.data[0]["prnumber"]; //Ymd let resuri = { "method": "POST", // 'url': baseurl+'signon', "url": baseurlsap + "/deletePr?number=" + prnumber, "headers": { "Content-Type": "application/json", "x-api-key": apikeysap, }, // form: formjson, }; // console.log(resuri); request(resuri, function (error, response) { if (error) { // console.log(error); apireshandler.message = error.toString(); pradapter.sendResponse(400, apireshandler, res); } else { // console.log(response.body); var resdata = JSON.parse(response.body); var errcode = ""; var errmsg = ""; resdata["RETURN"].forEach((e) => { if (e.TYPE == "E") { errcode += e.NUMBER + ", "; errmsg += e.MESSAGE + " & "; } }); errcode = errcode.substring(0, errcode.length - 2); errmsg = errmsg.substring(0, errmsg.length - 3); if (errcode.length > 0) { apireshandler.meta.code = errcode; apireshandler.meta.message = errmsg; // pradapter.sendResponse(200, apireshandler, res); } else { apireshandler.success = true; } // else{ // pradapter.queryUpdateStatusPr(req,prnumber, errmsg, function(err,data){ // let statusCode = data!=null ? data.meta.code : 200 ; // if(err) statusCode = 500; // pradapter.sendResponse(statusCode,data, res); // }); // } pradapter.queryUpdateStatusPr(req, "", errmsg, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; //data.data = resdata; apireshandler.meta.code = statusCode; apireshandler.data = data.data; pradapter.sendResponse(statusCode, apireshandler, res); }); } }); } }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [413] : PR controller, " + err.toString(); pradapter.sendResponse(502, apireshandler, res); } };