const PoAdapter = require("../adapter/poadapter.js"); const poadapter = new PoAdapter(); const Controllers = require("./controller.js"); const controllers = new Controllers(); var apireshandler = controllers.getApiResultDefined(); // const baseurlsap="http://172.20.25.27/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"); var fs = require("fs"); const SAPAdapter = require("../adapter/sapadapter.js"); const sapadapter = new SAPAdapter(); exports.getListVendor = (req, res) => { try { poadapter.queryVendorList(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [20] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.getPoBoqList = (req, res) => { try { poadapter.queryPoBoqlist(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [20] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.getidxpoheader = (req, res) => { try { poadapter.queryGetidxpoheader(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [20] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.savePoboq = (req, res) => { try { poadapter.querySaveboqdetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [20] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.getLastSignedPo = (req, res) => { try { poadapter.queryGetLastSignDate(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [20] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.createPOSAP = (req, res) => { try { let status = req.body.status; poadapter.queryUpdatePoHeader(req, function (err, resdata) { console.log("err createpo =>", err); let statusCode = resdata != null ? resdata.meta.code : 200; if (err) { statusCode = 500; poadapter.sendResponse(statusCode, data, res); } else { poadapter.queryUpdatePoNumber(req, function (err, data) { console.log("err queryUpdatePoNumber =>", err); let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [123] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.createPOSAPold = (req, res) => { try { let status = req.body.status; if (status == 1) { // if(0==1){ poadapter.queryUpdatePoHeader(req, function (err, resdata) { let statusCode = resdata != null ? resdata.meta.code : 200; if (err) statusCode = 500; // console.log(resdata.data.length); // poadapter.sendResponse(statusCode,resdata, res); if (resdata.data.length > 0) { const data = resdata?.data?.[0] ?? {}; const { idxpr = 0, vendorid = "", podate = "", vper_start = "", vper_end = "", podescription = "", totalqty = 0, prnumber = "", identifyprojectnumber = "", } = data; // ===== HEADER PARAM ===== const headerParams = { comp_code: "1603", doc_type: "POTL", creat_date: req.body.createdate, created_by: req.body.createdby, vendor: vendorid, purch_org: "1603", pur_group: "TIL", currency: "USD", doc_date: podate, vper_start, vper_end, zzctrnum: identifyprojectnumber?.toString().trim(), }; // ===== ITEM PARAM ===== const preq_item = "00010"; const quantity = Number(totalqty).toString().replace(",", "."); const po_unit = "PKT"; const net_price = req.body.totalpo; const final_inv = "X"; const gr_basediv = "X"; const poitem = [ preq_item, podescription, quantity, po_unit, net_price, final_inv, gr_basediv, prnumber, preq_item, ].join("|"); const poschedule = [preq_item, vper_end].join("|"); // ===== BUILD QUERY ===== const params = new URLSearchParams({ ...headerParams, "poitem[]": poitem, "poschedule[]": poschedule, }).toString(); const url = `${baseurlsap}/createPo?${params}`; const resuri = { method: "POST", url, headers: { "Content-Type": "application/json", "x-api-key": apikeysap, }, }; const logData = { ref_code: preq_no, request: JSON.stringify(resuri), request_at: new Date(), request_by: req.body.createdby, response: "", response_at: "", url, }; request(resuri, function (error, response) { logData.response_at = new Date(); logData.response = error ? JSON.stringify(error) : response.body; sapadapter.queryInsertSapLog(idxpr, logData, "CREATE_PO"); if (error) { // console.log(error); apireshandler.message = error.toString(); poadapter.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 + "\n\n"; errmsg += e.MESSAGE + "\n\n"; } }); // Hapus newline terakhir biar rapi errcode = errcode.trim(); errmsg = errmsg.trim(); if (errmsg.length > 0) { poadapter.queryUpdatePoNumberold( req, resdata["NUMBER"] || resdata["EXPPURCHASEORDER"], errmsg, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; data.success = false; data.meta.message = errmsg; poadapter.sendResponse(500, data, res); }, ); } else { poadapter.queryUpdatePoNumberold( req, resdata["NUMBER"] || resdata["EXPPURCHASEORDER"], errmsg, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }, ); } // if(errcode.length>0){ // apireshandler.meta.code = errcode; // apireshandler.meta.message = errmsg; // poadapter.sendResponse(200, apireshandler, res); // } // else{ // // apireshandler.success = true; // } } }); } else { poadapter.sendResponse(statusCode, resdata, res); } }); } else { poadapter.queryUpdatePoHeader(req, function (err, resdata) { let statusCode = resdata != null ? resdata.meta.code : 200; if (err) { statusCode = 500; poadapter.sendResponse(statusCode, data, res); } else { poadapter.queryUpdatePoNumber(req, "000", "", function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } }); } } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [123] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.createMIGOPOSAP = (req, res) => { try { poadapter.queryUpdateMigoNumber(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; // data.success = false; // data.meta.message = errmsg; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [123] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.createMIGOPOSAPold = (req, res) => { try { poadapter.queryPoManagementListDetail(req, function (err, resdata) { let statusCode = resdata != null ? resdata.meta.code : 200; if (err) statusCode = 500; // console.log(resdata.data.length); // poadapter.sendResponse(statusCode,resdata, res); if (resdata.data.length > 0) { const idxpr = resdata.data[0]["idxpr"] ?? 0; let gm_code = "01"; let pstng_date = resdata.data[0]["podate"].toString().trim(); let doc_date = pstng_date; let header_txt = resdata.data[0]["podescription"].toString().trim(); // let quantity="1"; let quantity = resdata.data[0]["totalqty"].toString().trim(); // let po_unit="PKT"; let po_unit = resdata.data[0]["units"].toString().trim(); let po_number = resdata.data[0]["ponumber"].toString().trim(); let po_item = "00010"; let item_text = resdata.data[0]["podescription"].toString().trim(); let gr_rcpt = "GRreceipt"; let unload_pt = "unloadpoint"; let movement_ind = "B"; let reason = "0001"; let location = "160301"; let goodsmvt_item = "1603|101|" + quantity + "|" + po_unit + "|" + po_number + "|" + po_item + "|" + item_text + "|"; // let goodsmvt_item="1603|101|"+quantity+"|"+po_number+"|"+po_item+"|"+item_text+"|"; goodsmvt_item += gr_rcpt + "|" + unload_pt + "|" + movement_ind + "|" + reason + "|" + location + "|"; // let zzctrnum = (resdata.data[0]['identifyprojectnumber']).toString().trim();//req.body.podescription; const url = baseurlsap + "/migo?gm_code=" + gm_code + "&pstng_date=" + pstng_date + "&doc_date=" + doc_date + "&header_txt=" + header_txt + "&goodsmvt_item[]=" + goodsmvt_item; let resuri = { "method": "POST", // 'url': baseurlsap+'/createPo', "url": url, "headers": { "Content-Type": "application/json", "x-api-key": apikeysap, }, // form: formjson, }; const logData = { ref_code: resdata.data[0]["ponumber"].toString().trim(), request: JSON.stringify(resuri), request_at: new Date(), request_by: "999999", response: "", response_at: "", url, }; // http://172.20.25.27/sapapi/index.php/api/migo?gm_code=01&pstng_date=20140404&doc_date=20210404&hea // der_txt=test header&goodsmvt_item[]=1603|101|1|BH|4110000019|00010|line itemtext|GRreceipt|unloadp // oint|B|0001|160301| console.log(resuri); request(resuri, function (error, response) { logData.response_at = new Date(); logData.response = error ? JSON.stringify(error) : response.body; sapadapter.queryInsertSapLog(idxpr, logData, "CREATE_PO_MIGO"); if (error) { // console.log(error); apireshandler.message = error.toString(); poadapter.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); // console.log(errmsg); if (errmsg.length > 0) { poadapter.queryUpdateMigoNumber( req, resdata["GOODSMVT_HEADRET"]["MAT_DOC"] || "", errmsg, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; data.success = false; data.meta.message = errmsg; poadapter.sendResponse(500, data, res); }, ); } else { poadapter.queryUpdateMigoNumber( req, resdata["GOODSMVT_HEADRET"]["MAT_DOC"], errmsg, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }, ); } // if(errcode.length>0){ // apireshandler.meta.code = errcode; // apireshandler.meta.message = errmsg; // poadapter.sendResponse(200, apireshandler, res); // } // else{ // // apireshandler.success = true; // } } }); } else { poadapter.sendResponse(statusCode, resdata, res); } }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [123] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.deletePoBoq = (req, res) => { try { poadapter.queryDeletePoBoq(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [185] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.getPOManagementList = (req, res) => { try { poadapter.queryPoManagementList(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [200] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.getPOManagementListDetail = (req, res) => { try { poadapter.queryPoManagementListDetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [215] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.changePOSAP = (req, res) => { try { req.query.idxpo = req.body.idxpo; poadapter.queryPoManagementListDetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) { statusCode = 500; poadapter.sendResponse(statusCode, data, res); } else { var rsdata = JSON.parse(JSON.stringify(data)); const idxpr = rsdata.data[0]["idxpr"] ?? 0; let ponumber = rsdata.data[0]["ponumber"]; //Ymd let podescription = req.body.podescription; //rsdata.data[0]['podescription']; let totalpo = req.body.totalpo; //rsdata.data[0]['podescription']; let qty = 1; //req.query.qty; //rsdata.data[0]['podescription']; let units = rsdata.data[0]["units"]; //http://172.20.25.27/sapapi/index.php/api/changePo?purchaseorder=4110000020&poitem[]=00010|test createPO|0||0||||00000 let poitem = "00010|" + podescription + "|" + qty + "|" + units + "|" + totalpo + "|x|x|" + ponumber + "|00010"; let resuri = { "method": "POST", // 'url': baseurl+'signon', "url": baseurlsap + "/changePo?purchaseorder=" + ponumber + "&poitem[]=" + poitem, "headers": { "Content-Type": "application/json", "x-api-key": apikeysap, }, // form: formjson, }; const logData = { ref_code: rsdata.data[0]["ponumber"].toString().trim(), request: JSON.stringify(resuri), request_at: new Date(), request_by: "999999", response: "", response_at: "", url: baseurlsap + "/changePo?purchaseorder=" + ponumber + "&poitem[]=" + poitem, }; // console.log(resuri); request(resuri, function (error, response) { logData.response_at = new Date(); logData.response = error ? JSON.stringify(error) : response.body; sapadapter.queryInsertSapLog(idxpr, logData, "CHANGE_PO"); if (error) { // console.log(error); apireshandler.message = error.toString(); poadapter.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; // poadapter.sendResponse(200, apireshandler, res); } else { apireshandler.success = true; } poadapter.queryUpdatePOSAP(req, "", errmsg, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err || errcode.length > 0) statusCode = 500; //data.data = resdata; apireshandler.meta.code = statusCode; apireshandler.data = data.data; poadapter.sendResponse(statusCode, apireshandler, res); }); } }); } }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = "[291] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.releasePOSAP = (req, res) => { try { req.query.idxpo = req.body.idxpo; poadapter.queryPoManagementListDetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) { statusCode = 500; poadapter.sendResponse(statusCode, data, res); } else { var rsdata = JSON.parse(JSON.stringify(data)); const idxpr = rsdata.data[0]["idxpr"] ?? 0; let ponumber = rsdata.data[0]["ponumber"]; //Ymd //http://172.20.25.27/sapapi/index.php/api/releasePo?im_purchaseorder=4110000020 let resuri = { "method": "POST", // 'url': baseurl+'signon', "url": baseurlsap + "/releasePo?im_purchaseorder=" + ponumber, "headers": { "Content-Type": "application/json", "x-api-key": apikeysap, }, // form: formjson, }; const logData = { ref_code: rsdata.data[0]["ponumber"].toString().trim(), request: JSON.stringify(resuri), request_at: new Date(), request_by: "999999", response: "", response_at: "", url: baseurlsap + "/releasePo?im_purchaseorder=" + ponumber, }; // console.log(resuri); request(resuri, function (error, response) { logData.response_at = new Date(); logData.response = error ? JSON.stringify(error) : response.body; sapadapter.queryInsertSapLog(idxpr, logData, "RELEASE_PO"); if (error) { // console.log(error); apireshandler.message = error.toString(); poadapter.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; // poadapter.sendResponse(200, apireshandler, res); } else { apireshandler.success = true; } poadapter.queryUpdatePOSAP(req, "", errmsg, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err || errcode.length > 0) statusCode = 500; //data.data = resdata; apireshandler.meta.code = statusCode; apireshandler.data = data.data; poadapter.sendResponse(statusCode, apireshandler, res); }); } }); } }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = "[291] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.unreleasePOSAP = (req, res) => { try { req.query.idxpo = req.body.idxpo; poadapter.queryPoManagementListDetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) { statusCode = 500; poadapter.sendResponse(statusCode, data, res); } else { var rsdata = JSON.parse(JSON.stringify(data)); const idxpr = rsdata.data[0]["idxpr"] ?? 0; let ponumber = rsdata.data[0]["ponumber"]; //Ymd //http://172.20.25.27/sapapi/index.php/api/releasePo?im_purchaseorder=4110000020 let resuri = { "method": "POST", // 'url': baseurl+'signon', "url": baseurlsap + "/unreleasePo?number=" + ponumber, "headers": { "Content-Type": "application/json", "x-api-key": apikeysap, }, // form: formjson, }; const logData = { ref_code: rsdata.data[0]["ponumber"].toString().trim(), request: JSON.stringify(resuri), request_at: new Date(), request_by: "999999", response: "", response_at: "", url: baseurlsap + "/unreleasePo?number=" + ponumber, }; // console.log(resuri); request(resuri, function (error, response) { logData.response_at = new Date(); logData.response = error ? JSON.stringify(error) : response.body; sapadapter.queryInsertSapLog(idxpr, logData, "UNRELEASE_PO"); if (error) { // console.log(error); apireshandler.message = error.toString(); poadapter.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; // poadapter.sendResponse(200, apireshandler, res); } else { apireshandler.success = true; } poadapter.queryUpdatePOSAP(req, "", errmsg, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err || errcode.length > 0) statusCode = 500; //data.data = resdata; apireshandler.meta.code = statusCode; apireshandler.data = data.data; poadapter.sendResponse(statusCode, apireshandler, res); }); } }); } }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = "[291] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.createHeaderPOSAP = (req, res) => { try { req.query.idxpo = req.body.idxpo; poadapter.queryUpdateIdentifyProject(req, function (err, resdata) { let statusCode = resdata != null ? resdata.meta.code : 200; if (err) statusCode = 500; // console.log(resdata.data.length); // poadapter.sendResponse(statusCode,resdata, res); if (resdata.data.length > 0) { const data = resdata?.data?.[0] ?? {}; const { idxpr = 0, identifyprojectnumber = "", contractdescription = "", contractperiodfrom = "", contractperiodto = "", vendorname = "", } = data; // Static / default values const params = { im_ctrnum: identifyprojectnumber, im_bukrs: "1603", im_werks: "1603", im_ctrdsc: contractdescription, im_ctrtor: vendorname, im_contract: identifyprojectnumber, im_contract2: identifyprojectnumber, im_contdesc: contractdescription, im_spmon0: contractperiodfrom, im_spmon1: contractperiodto, im_ctrmax: 2, im_waers2: "USD", im_ctrval: "0", im_ctrval2: "0", im_action: "I", }; // Build URL safely const url = `${baseurlsap}/zcpxmm003?${new URLSearchParams(params).toString()}`; const resuri = { method: "POST", url, headers: { "Content-Type": "application/json", "x-api-key": apikeysap, }, }; const logData = { ref_code: identifyprojectnumber, request: JSON.stringify(resuri), request_at: new Date(), request_by: "999999", response: "", response_at: "", url, }; // console.log(resuri); request(resuri, function (error, response) { logData.response_at = new Date(); logData.response = error ? JSON.stringify(error) : response.body; sapadapter.queryInsertSapLog(idxpr, logData, "CREATE_HEADER_SAP"); if (error) { apireshandler.message = error.toString(); apireshandler.meta.message = "Header Created Successfuly"; poadapter.queryUpdatePoNumber(req, error.toString(), function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); // poadapter.sendResponse(400, apireshandler, res); } else { var resdata = JSON.parse(response.body); var errcode = ""; var errmsg = ""; if (Array.isArray(resdata)) { 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); console.log("error : " + errmsg); if (errmsg.length > 0) { poadapter.queryUpdatePoNumber(req, errmsg, function (err, data) { poadapter.sendResponse(500, data, res); }); } else { poadapter.queryUpdatePoNumber(req, errmsg, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } } }); } else { poadapter.sendResponse(statusCode, resdata, res); } }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = "[550] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.createHeaderPOSAPold = (req, res) => { try { req.query.idxpo = req.body.idxpo; poadapter.queryUpdateIdentifyProject(req, function (err, resdata) { let statusCode = resdata != null ? resdata.meta.code : 200; if (err) statusCode = 500; // console.log(resdata.data.length); // poadapter.sendResponse(statusCode,resdata, res); if (resdata.data.length > 0) { let identifyprojectnumber = resdata.data[0]["identifyprojectnumber"]; let contractdescription = resdata.data[0]["contractdescription"]; let contractperiodfrom = resdata.data[0]["contractperiodfrom"]; let contractperiodto = resdata.data[0]["contractperiodto"]; let im_ctrnum = identifyprojectnumber; let im_bukrs = "1603"; let im_werks = "1603"; let im_ctrdsc = contractdescription; let im_ctrtor = resdata.data[0]["vendorname"]; let im_contract = identifyprojectnumber; let im_contract2 = identifyprojectnumber; let im_contdesc = contractdescription; let im_spmon0 = contractperiodfrom; let im_spmon1 = contractperiodto; let im_ctrmax = 2; let im_waers2 = "USD"; let im_ctrval = "0"; let im_ctrval2 = "0"; let im_action = "I"; let resuri = { "method": "POST", "url": baseurlsap + "/zcpxmm003?im_ctrnum=" + im_ctrnum + "&im_bukrs=" + im_bukrs + "&im_werks=" + im_werks + "&im_ctrdsc=" + im_ctrdsc + "&im_ctrtor=" + im_ctrtor + "&im_contract=" + im_contract + "&im_contract2=" + im_contract2 + "&im_contdesc=" + im_contdesc + "&im_spmon0=" + im_spmon0 + "&im_spmon1=" + im_spmon1 + "&im_ctrmax=" + im_ctrmax + "&im_waers2=" + im_waers2 + "&im_ctrval=" + im_ctrval + "&im_ctrval2=" + im_ctrval2 + "&im_action=" + im_action, "headers": { "Content-Type": "application/json", "x-api-key": apikeysap, }, }; // console.log(resuri); request(resuri, function (error, response) { if (error) { // console.log(error); apireshandler.message = error.toString(); poadapter.sendResponse(400, apireshandler, res); } else { // console.log("response : " +response.body); var resdata = JSON.parse(response.body); var errcode = ""; var errmsg = ""; if (Array.isArray(resdata)) { 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); console.log("error : " + errmsg); if (errmsg.length > 0) { poadapter.queryUpdatePoNumber(req, "000", errmsg, function (err, data) { poadapter.sendResponse(500, data, res); }); } else { poadapter.queryUpdatePoNumber(req, "000", "", function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } } }); } else { poadapter.sendResponse(statusCode, resdata, res); } }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = "[550] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.getPOInventorylist = (req, res) => { try { poadapter.queryPoInventoryList(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [200] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.getPOttdList = (req, res) => { try { poadapter.queryPottdList(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [200] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.getPOttdDetailList = (req, res) => { try { poadapter.queryPottdListDetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [200] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.getPOMigoList = (req, res) => { try { poadapter.queryPoMigoList(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [200] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.getPOMigoDetailList = (req, res) => { try { poadapter.queryPoMigoListDetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [200] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.getPOInventoryDetaillist = (req, res) => { try { poadapter.queryPoInventoryDetailList(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [200] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.setSignedPO = (req, res) => { try { poadapter.querySignedPo(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = "[636] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.newpoadjustment = (req, res) => { try { // console.log(req.nik); // console.log(req.body.filename);return false; let ext = req.body.filename.split(".")[1]; let filename = "ADJPO_" + req.nik + "_" + Date.now() + "." + ext; fs.rename( process.env.BASEPATH + "/assets/po/" + req.body.filename, process.env.BASEPATH + "/assets/po/" + filename, function (err) { if (err) { poadapter.sendResponse(500, err, res); } else { poadapter.queryNewPoAdjustment(req, filename, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } }, ); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [958] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.updpoadjustment = (req, res) => { try { var ext = ""; var filename = ""; if (req.body.filename) { ext = req.body.filename.split(".")[1]; filename = "ADJPO_" + req.nik + "_" + Date.now() + "." + ext; fs.rename( process.env.BASEPATH + "/assets/po/" + req.body.filename, process.env.BASEPATH + "/assets/po/" + filename, function (err) { if (err) { poadapter.sendResponse(500, err, res); } else { poadapter.queryUpdPoAdjustment(req, filename, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } }, ); } else { poadapter.queryUpdPoAdjustment(req, filename, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [958] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.updpoboq = (req, res) => { try { var filename = req.body.filename; if (req.body.filename) { poadapter.queryUpdPoBoq(req, filename, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } else { apireshandler.meta.code = 502; apireshandler.meta.message = " [1014] : PO controller, Upload File CSV Failed"; poadapter.sendResponse(502, apireshandler, res); } } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [958] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.getpoadjlist = (req, res) => { try { poadapter.queryPoAdjList(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = "[636] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.getpoadjlistdetail = (req, res) => { try { poadapter.queryPoAdjListDetail(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = "[636] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.getpoapprovedlist = (req, res) => { try { poadapter.queryPoApproveList(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = "[636] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.deletepoadj = (req, res) => { try { poadapter.queryDeleteAdjPO(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = "[636] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.submitpoadj = (req, res) => { try { poadapter.querySubmitAdjPO(req, function (err, data) { let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = "[636] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } }; exports.uploadPOSAP = (req, res) => { try { let status = req.body.status; console.log('req.file.originalname =>', req.file.originalname) let ext = req.file.originalname.split(".")[1]; let filename = req.file.originalname + "_" + req.nik + "_" + Date.now() + "." + ext; fs.rename( process.env.BASEPATH + "/assets/sap-po/" + req.file.originalname, process.env.BASEPATH + "/assets/sap-po/" + filename, function (err) { if (err) { poadapter.sendResponse(500, err, res); } else { console.log('filename', filename) poadapter.queryUpdatePoHeaderWithFile(req, filename, function (err, resdata) { console.log("err upload PO =>", err); let statusCode = resdata != null ? resdata.meta.code : 200; if (err) { statusCode = 500; poadapter.sendResponse(statusCode, data, res); } else { poadapter.queryUpdateUploadPoNumber(req, "Success Bypass", function (err, data) { console.log("err queryUpdateUploadPoNumber =>", err); let statusCode = data != null ? data.meta.code : 200; if (err) statusCode = 500; poadapter.sendResponse(statusCode, data, res); }); } }); } }, ); } catch (err) { apireshandler.meta.code = 502; apireshandler.meta.message = " [123] : PO controller, " + err.toString(); poadapter.sendResponse(502, apireshandler, res); } };