From c777373817434b7766fd3cfe12c2df414336df0d Mon Sep 17 00:00:00 2001 From: Rizki Date: Fri, 9 Jan 2026 14:26:24 +0700 Subject: [PATCH] test create PR --- controllers/pr.js | 1293 +++++++++++++++++++++++---------------------- routes/pr.js | 2 +- 2 files changed, 670 insertions(+), 625 deletions(-) diff --git a/controllers/pr.js b/controllers/pr.js index ee69405..af113ff 100644 --- a/controllers/pr.js +++ b/controllers/pr.js @@ -1,653 +1,698 @@ - -const PrAdapter=require('../adapter/pradapter.js'); +const PrAdapter = require("../adapter/pradapter.js"); const pradapter = new PrAdapter(); -const Controllers = require('./controller.js'); +const Controllers = require("./controller.js"); const controllers = new Controllers(); var apireshandler = controllers.getApiResultDefined(); -const baseurlsap="http://"+process.env.HOSTSAP+"/sapapi/index.php/api"; +const baseurlsap = "http://" + process.env.HOSTSAP + "/sapapi/index.php/api"; const apikeysap = "befea63a-7c47-4323-afea-968a3168fe0a"; -const request = require('request'); +const request = require("request"); -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); - } +function buildPipeString(length, mapping = {}) { + const arr = Array(length).fill(""); + Object.keys(mapping).forEach((index) => { + arr[index] = mapping[index]; + }); + return arr.join("|"); } -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); - } +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, + }); } -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); - } +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.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.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.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.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.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.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.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.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.setUpdateStatusPr = ( req, res ) => { - try{ - let status = req.body.status; - let idxpr = req.body.idxpr; - +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); + } +}; - 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.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.setUpdateStatusProld = ( req, res ) => { - try{ - let status = req.body.status; - let idxpr = req.body.idxpr; - +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); + } +}; - 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(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': baseurlsap+'/createPr?pr_type='+pr_type+'&x_pr_type=X&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(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{ - 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; - } - - } - - }); - +exports.setUpdateStatusPr = (req, res) => { + try { + let status = req.body.status; + let idxpr = req.body.idxpr; - //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); - } -} + 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.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.setUpdateStatusProld = (req, res) => { + try { + let status = req.body.status; + let idxpr = req.body.idxpr; -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); - } -} + 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 { + // Normalize response data + const rsdata = JSON.parse(JSON.stringify(data)); + const row = rsdata.data[0]; -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); - } -} + /* ================= PR CONSTANT ================= */ + const PR_TYPE = "PRTL"; + const X_PR_TYPE = "X"; + const PR_NO = "00010"; + const PR_QTY_ACC = "01"; -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); - } -} + /* ================= BUILD PR ACCOUNT ================= */ + const prAccount = buildPrAccount({ + prNo: PR_NO, + qtyAcc: PR_QTY_ACC, + prDate: row.prdateYmd, // YYYYMMDD + budget: `00${row.glaccount}`, + costCenter: row.costcenter, + profitCenter: "TIL1A01", + }); -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); - } -} + /* ================= BUILD PR ITEM ================= */ + const prItem = buildPrItem({ + prNo: PR_NO, + shortText: row.description, + qty: row.qty, + unit: row.unit, + price: row.netprice, + prDate: row.prdateYmd, + }); -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); - } -} + /* ================= BUILD SAP API URL ================= */ + const sapPrUrl = + `${process.env.SAP_API_BASE_URL}/createPr` + + `?pr_type=${PR_TYPE}` + + `&x_pr_type=${X_PR_TYPE}` + + `&praccount[]=${prAccount}` + + `&pritem[]=${prItem}`; -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); - } -} + /* ================= REQUEST OPTIONS ================= */ + const options = { + method: "POST", + url: sapPrUrl, + timeout: 10000, + headers: { + "Content-Type": "application/json", + "x-api-key": process.env.SAP_API_KEY, + }, + }; -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); - }); - - } - - }); - + console.log(options); + request(options, function (error, response) { + // console.log('response.body', response.body) + if (error) { + console.log("Create PR Error =>", 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 { + 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); - } - }); - - } - catch(err){ - apireshandler.meta.code = 502; - apireshandler.meta.message = " [522] : PR controller, " + err.toString(); - pradapter.sendResponse(502, apireshandler, res); - } -} + //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.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); - } -} \ No newline at end of file +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); + } +}; diff --git a/routes/pr.js b/routes/pr.js index 9dd87ab..8f3b602 100644 --- a/routes/pr.js +++ b/routes/pr.js @@ -14,7 +14,7 @@ router.post('/prlist',[jwtauth], prcontroller.getListPr); router.post('/setnewpr',[jwtauth], prcontroller.setNewPr); router.post('/updatepr',[jwtauth], prcontroller.setUpdatePr); router.post('/approvedpr',[jwtauth], prcontroller.approvedPR); -router.post('/updatestatuspr',[jwtauth], prcontroller.setUpdateStatusPr); +router.post('/updatestatuspr',[jwtauth], prcontroller.setUpdateStatusProld); router.post('/deletepr',[jwtauth], prcontroller.deletePR); // ==== SAP Part router.post('/releaseprsap',[jwtauth], prcontroller.releasePRSAP);