Files
backend-Eprocurement/controllers/po.js
Rizki 17a2281f1a upd
2026-03-10 15:14:30 +07:00

1292 lines
40 KiB
JavaScript

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.body.filename =>', req.body.filename)
let ext = req.body.filename.split(".")[1];
let filename = req.body.filename + "_" + req.nik + "_" + Date.now() + "." + ext;
fs.rename(
process.env.BASEPATH + "/assets/sap-po/" + req.body.filename,
process.env.BASEPATH + "/assets/sap-po/" + filename,
function (err) {
if (err) {
poadapter.sendResponse(500, err, res);
} else {
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, resdata, 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);
}
};