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'); 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(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; } } }); //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); } }