const db = require("../config/dbproc.js"); const Adapter = require("./dbadapter.js"); const QRCode = require("qrcode"); const fs = require("fs"); const {start} = require("repl"); function getToken() { try { var n1 = Math.floor(Math.random() * 9) + 0; var n2 = Math.floor(Math.random() * 9) + 0; var n3 = Math.floor(Math.random() * 9) + 0; var n4 = Math.floor(Math.random() * 9) + 0; var n5 = Math.floor(Math.random() * 9) + 0; var n6 = Math.floor(Math.random() * 9) + 0; var otp = n1.toString() + n2.toString() + n3.toString() + n4.toString() + n5.toString() + n6.toString(); // console.log(otp); return otp; } catch (error) { return error; } } class PoAdapter extends Adapter { constructor() { super(); } async queryVendorList(req, callback) { var apires = this.getApiResultDefined(); try { let keyword = req.query.keyword; let qry = "select * from vw_vendorinfo where vendorname like '%" + keyword + "%' or vendorid like '%" + keyword + "%' order by id asc"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { apires.success = true; apires.data = JSON.parse(JSON.stringify(result)); } else { apires.meta.code = 200; apires.meta.message = "Record Not Found"; } callback(null, apires); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryPoBoqlist(req, callback) { var apires = this.getApiResultDefined(); try { let idxpr = req.query.idxpr; let qry = "select * from vw_poboq where idxpr='" + idxpr + "'"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { apires.success = true; apires.data = JSON.parse(JSON.stringify(result)); } else { apires.meta.code = 200; apires.meta.message = "Record Not Found"; } callback(null, apires); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryGetidxpoheader(req, callback) { try { // console.log(req); var apires = this.getApiResultDefined(); var idxpr = req.query.idxpr; var idxpo = req.query.idxpo; var idxvendor = req.query.idxvendor; var qry = "select _idx from tbl_po where idxpr='" + idxpr + "' and idxvendor='" + idxvendor + "' and isdeleted=0 order by _idx desc limit 1"; if (idxpo > 0) { qry = "select _idx from tbl_po where _idx='" + idxpo + "' and isdeleted=0 order by _idx desc limit 1"; } // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { var idxpo = 0; if (result.length > 0) { idxpo = result[0]["_idx"]; } apires.success = true; apires.data = {"idxpo": idxpo}; // console.log(apires); callback(null, apires); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async querySaveboqdetail(req, callback) { var apires = this.getApiResultDefined(); try { let idxpo = req.body.idxpo; let idxpr = req.body.idxpr; let prnumber = req.body.prnumber; let idxjustification = req.body.idxjustification; let idxjustificationboq = req.body.idxjustificationboq; let justificationnumber = req.body.justificationnumber; // let podate = req.body.podate; let status = 0; let statusdescription = "Submitted"; let nik = req.body.nik; // === PO boq; let idxpoboq = req.body.idxpoboq; let startdate = req.body.startdate; let enddate = req.body.enddate; let items = req.body.items; let qty = req.body.qty; let unitprice = req.body.unitprice; let units = req.body.units; let total = req.body.total; let spidxvendor = req.body.idxvendor.split(","); let idxvendor = spidxvendor[0]; let vendorid = spidxvendor[1].toString().trim(); let vendorname = req.body.vendorname.toString().trim(); let description = req.body.description; let curr = req.body.curr; let hs = req.body.hs; let poamount = req.body.poamount; let ratepo = req.body.ratepo; let migo = req.body.migo; let idxpoold = req.body.idxpoold; let qry = ""; if (idxpoold != idxpo && idxpoold != 0) { qry = "update tbl_po set isdeleted=1,remarkdeleted='Change Vendor',dby='" + nik + "',ddt=now() where _idx='" + idxpoold + "'"; db.query(qry); } qry = "select _idx from tbl_po where idxpr='" + idxpr + "' and idxvendor='" + idxvendor + "' and isdeleted=0 order by _idx desc limit 1"; console.log(idxpo); if (idxpo > 0) { qry = "select _idx from tbl_po where _idx='" + idxpo + "' and isdeleted=0 order by _idx desc limit 1"; } console.log(qry); // let qry = "select _idx from tbl_po where idxpr='"+idxpr+"' and idxpoboq in('"+idxpoboq+"') and isdeleted=0 order by _idx desc limit 1"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { let jsresult = JSON.parse(JSON.stringify(result)); // console.log(jsresult); let idxheader = jsresult.length > 0 ? jsresult[0]["_idx"] : 0; // console.log(idxheader); qry = "insert into tbl_po set idxpr='" + idxpr + "',prnumber='" + prnumber + "',idxjustification='" + idxjustification + "',justificationnumber='" + justificationnumber + "',"; qry = qry + "idxvendor='" + idxvendor + "',vendorid='" + vendorid + "',vendorname='" + vendorname + "',podate=now(),status='" + status + "',statusdescription='" + statusdescription + "',iby='" + nik + "',idt=now()"; if (result.length > 0) { // qry = "update tbl_po set idxpr='"+idxpr+"',prnumber='"+prnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',"; // qry = qry + "podate=now(),status='"+status+"',statusdescription='"+statusdescription+"',uby='"+nik+"',udt=now() "; // qry = qry + "where idxpr='"+idxpr+"'"; qry = "update tbl_po set idxvendor='" + idxvendor + "',vendorid='" + vendorid + "',vendorname='" + vendorname + "',uby='" + nik + "',udt=now() "; qry = qry + "where idxpr='" + idxpr + "' and idxvendor='" + idxvendor + "' and isdeleted=0"; if (idxpo > 0) { qry = "update tbl_po set idxvendor='" + idxvendor + "',vendorid='" + vendorid + "',vendorname='" + vendorname + "',uby='" + nik + "',udt=now() "; qry = qry + "where _idx='" + idxpo + "' and isdeleted=0"; } } // console.log(qry); db.query(qry, [], function (err1, result1, fields1) { if (err1) { apires.meta["message"] = err1.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (idxheader <= 0) { idxheader = result1.insertId; } // ==== Insert / Update boq PO qry = "select _idx from tbl_poboq where _idx='" + idxpoboq + "'"; // console.log(qry); db.query(qry, [], function (err2, result2, fields2) { if (err2) { apires.meta["message"] = err2.toString(); apires.meta["code"] = 500; callback("err", apires); } else { // ==== Insert / update boq qry = "insert into tbl_poboq set idxheader='" + idxheader + "',idxjustification='" + idxjustification + "',idxjustificationboq='" + idxjustificationboq + "',items='" + items + "',"; qry = qry + "qty='" + qty + "',unitprice='" + unitprice + "',units='" + units + "',total='" + total + "',idxvendor='" + idxvendor + "',vendorid='" + vendorid + "',vendorname='" + vendorname + "',"; qry = qry + "startdate='" + startdate + "',enddate='" + enddate + "',description='" + description + "',curr='" + curr + "',hs='" + hs + "',poamount='" + poamount + "',ratepo='" + ratepo + "',migo='" + migo + "',"; qry = qry + "status='" + status + "',statusdescription='" + statusdescription + "',iby='" + nik + "',idt=now()"; if (result2.length > 0) { qry = "update tbl_poboq set idxheader='" + idxheader + "',idxjustification='" + idxjustification + "',idxjustificationboq='" + idxjustificationboq + "',items='" + items + "',"; qry = qry + "qty='" + qty + "',unitprice='" + unitprice + "',units='" + units + "',total='" + total + "',idxvendor='" + idxvendor + "',vendorid='" + vendorid + "',vendorname='" + vendorname + "',"; qry = qry + "startdate='" + startdate + "',enddate='" + enddate + "',description='" + description + "',curr='" + curr + "',hs='" + hs + "',poamount='" + poamount + "',ratepo='" + ratepo + "',migo='" + migo + "',"; qry = qry + "status='" + status + "',statusdescription='" + statusdescription + "',uby='" + nik + "',udt=now() "; qry = qry + "where _idx='" + idxpoboq + "'"; } //console.log(qry); db.query(qry, [], function (err3, result3, fields3) { if (err3) { apires.meta["message"] = err3.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = { "idxpoboq": idxpoboq > 0 ? parseInt(idxpoboq) : result3.insertId, "idxpo": idxheader > 0 ? parseInt(idxheader) : 0, }; callback("", apires); } }); } }); } }); //callback(null, apires); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryDeletePoBoq(req, callback) { var apires = this.getApiResultDefined(); try { let idxpoboq = req.body.idxpoboq; let remarkdeleted = req.body.remarkdeleted; let nik = req.body.nik; let qry = "update tbl_poboq "; qry = qry + "set isdeleted=1,remarkdeleted='" + remarkdeleted + "',dby='" + nik + "',ddt=now()"; qry = qry + " where _idx='" + idxpoboq + "'"; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.meta.message = "Deleted Success"; callback(null, apires); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async querypoBoqDetail(req, callback) { var apires = this.getApiResultDefined(); try { let idxpoboq = req.body.idxpoboq; let qry = "select * from vw_poboq where idxpoboq in(" + idxpoboq + ")"; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { apires.success = true; apires.data = JSON.parse(JSON.stringify(result)); } else { apires.meta.code = 200; apires.meta.message = "Record Not Found"; } callback(null, apires); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryUpdatePoHeader(req, callback) { try { var apires = this.getApiResultDefined(); var idxpo = req.body.idxpo; var idxpoboq = req.body.idxpoboq; var vper_start = req.body.vper_start; var podatettd = req.body.vper_start; var vper_end = req.body.vper_end; var idxvendor = req.body.idxvendor; var vendorid = req.body.vendorid; var vendorname = req.body.vendorname; var totalpo = req.body.totalpo; var totalqty = req.body.totalqty; var podate = req.body.podate; var units = "PKT"; // var podescription = req.body.podescription; var idxapproval = req.body.idxapproval; var nikapproval = req.body.nikapproval; var nik = req.body.nik; // var ttd = JSON.parse(req.body.ttd); // console.log(ttd); var qry = "update tbl_po set idxvendor='" + idxvendor + "',vendorid='" + vendorid + "',vendorname='" + vendorname + "',"; qry = qry + "podescription=contractdescription,idxpoboq='" + idxpoboq + "',units='" + units + "',totalqty='" + totalqty + "',totalpo='" + totalpo + "',"; qry = qry + "vper_start='" + vper_start + "',vper_end='" + vper_end + "',podate='" + podate + "',podatettd='" + podatettd + "',idxapproval='" + idxapproval + "',"; qry = qry + "nikapproval='" + nikapproval + "',approveddate='" + podatettd + "',uby='" + nik + "',udt=now() "; qry = qry + "where _idx='" + idxpo + "'"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { qry = "select * from vw_po where _idx='" + idxpo + "'"; db.query(qry, [], function (err, result1, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = JSON.parse(JSON.stringify(result1)); callback(null, apires); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryUpdatePoHeaderold(req, callback) { try { var apires = this.getApiResultDefined(); var idxpo = req.body.idxpo; var idxpoboq = req.body.idxpoboq; var vper_start = req.body.vper_start; var podatettd = req.body.vper_start; var vper_end = req.body.vper_end; var idxvendor = req.body.idxvendor; var vendorid = req.body.vendorid; var vendorname = req.body.vendorname; var totalpo = req.body.totalpo; var totalqty = req.body.totalqty; var units = "PKT"; // var podescription = req.body.podescription; var nik = req.body.nik; var ttd = JSON.parse(req.body.ttd); console.log(ttd); var qry = "update tbl_po set idxvendor='" + idxvendor + "',vendorid='" + vendorid + "',vendorname='" + vendorname + "',"; qry = qry + "podescription=contractdescription,idxpoboq='" + idxpoboq + "',units='" + units + "',totalqty='" + totalqty + "',totalpo='" + totalpo + "',"; qry = qry + "vper_start='" + vper_start + "',vper_end='" + vper_end + "',podate=now(),podatettd='" + podatettd + "',uby='" + nik + "',udt=now() "; qry = qry + "where _idx='" + idxpo + "'"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { // === set ttd // var approval = approval.disetujuioleh; Object.keys(ttd).forEach(function (key) { var token = getToken(); var id = ttd[key]["id"] || 0; var idemployee = ttd[key]["idemployee"]; var nik = ttd[key]["nik"]; var action = ttd[key]["action"]; qry = "insert into tbl_pottd set idxpo='" + idxpo + "',idemployee='" + idemployee + "',"; qry = qry + "nik='" + nik + "',category='APR',token='" + token + "',imgqr='',iby='" + nik + "',idt=now()"; if (action == "update") { qry = "update tbl_justificationttd set idxpo='" + idxpo + "',idemployee='" + idemployee + "',"; qry = qry + "nik='" + nik + "',category='APR',token='" + token + "',imgqr='',uby='" + nik + "',udt=now() "; qry = qry + "where _idx='" + id + "'"; } if (action == "delete") { qry = "update tbl_pottd set isdeleted=1,dby='" + nik + "',ddt=now() "; qry = qry + "where _idx='" + id + "'"; } console.log(qry); db.query(qry, [], function (err3, result3, fields3) { return result3; }); }); qry = "select * from vw_po where _idx='" + idxpo + "'"; db.query(qry, [], function (err, result1, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = JSON.parse(JSON.stringify(result1)); callback(null, apires); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryGetLastSignDate(req, callback) { try { var apires = this.getApiResultDefined(); let idxjustification = req.body.idxjustification; let qry = "select idxjustification,nik,date_format(signeddate,'%Y-%m-%d') signeddate "; qry += "from tbl_justificationttd where category='APR' and idxjustification='" + idxjustification + "' and not(signeddate is null) order by signeddate desc limit 1"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = JSON.parse(JSON.stringify(result)); callback(null, apires); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async querySignedPo(req, callback) { try { var apires = this.getApiResultDefined(); let idxpo = req.body.idxpo; var idxapproval = req.body.idxapproval; var nikapproval = req.body.nikapproval; var datesigned = req.body.datesigned; // console.log(datesigned); var nik = req.body.nik; var token = this.getToken(); var filepng = token + ".png"; // token =getToken(); token = token + "," + nikapproval; QRCode.toDataURL(token, function (err, code) { // console.log(code);` if (err) { console.log("ddf"); apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { var imageBuffer = Adapter.decodeBase64Image(code); fs.writeFile("./assets/png/" + filepng, imageBuffer.data, function (err) { // console.log(err); if (err) { console.log("eee"); apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback(err.toString(), apires); } else { var qry = "update tbl_po set token=md5('" + token + "'),filepng='" + filepng + "',status='6',statusdescription='Approved',approveddate='" + datesigned + "',uby='" + nik + "',udt=now() "; qry = qry + "where _idx='" + idxpo + "'"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { // console.log('ttetete'); apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; // === qry = "select status from tbl_po where _idx='" + idxpo + "'"; db.query(qry, [], function (err, result2, fields) { if (err) { console.log("bbbb"); apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("error", apires); } else { var status = result2[0]["status"]; var isapproved = 0; if (status == 6) { isapproved = 1; } apires.data = { "isapproved": isapproved, "token": token, "urltoken": process.env.BASEURL + "/main/getimageinfo?route=png&name=" + filepng, }; callback(null, apires); } }); } }); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async querySignedPoold(req, callback) { try { var apires = this.getApiResultDefined(); let idxpo = req.body.idxpo; var idxapproval = req.body.idxapproval; var nikapproval = req.body.nikapproval; var datesigned = req.body.datesigned; // console.log(datesigned); var nik = req.body.nik; var token = this.getToken(); var filepng = token + ".png"; // token =getToken(); token = token + "," + nikapproval; QRCode.toDataURL(token, function (err, code) { // console.log(code);` if (err) { console.log("ddf"); apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { var imageBuffer = Adapter.decodeBase64Image(code); fs.writeFile("./assets/png/" + filepng, imageBuffer.data, function (err) { // console.log(err); if (err) { console.log("eee"); apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback(err.toString(), apires); } else { var qry = "update tbl_pottd set token=md5('" + token + "'),imgqr='" + filepng + "',issigned='1',signeddate='" + datesigned + "',uby='" + nik + "',udt=now() "; qry = qry + "where _idx='" + idxapproval + "'"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { // console.log('ttetete'); apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; // === qry = "select status from tbl_po where _idx='" + idxpo + "'"; db.query(qry, [], function (err, result2, fields) { if (err) { console.log("bbbb"); apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("error", apires); } else { var status = result2[0]["status"]; var isapproved = 0; if (status == 2) { isapproved = 1; } apires.data = { "isapproved": isapproved, "token": token, "urltoken": process.env.BASEURL + "/main/getimageinfo?route=png&name=" + filepng, }; callback(null, apires); } }); } }); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async querycheckidentifyprocject(req, identifyprojectnumber, callback) { try { var apires = this.getApiResultDefined(); var qry = "select _idx from tbl_po where identifyprojectnumber='" + identifyprojectnumber + "' and isdeleted=0 order by _idx desc limit 1"; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length <= 0) { apires.success = true; } else { apires.meta.message = "Nomor SP3 " + identifyprojectnumber + " Sudah digunakan, mohon masukkan nomor SP3 yang lain. TERIMA KASIH"; } callback("", apires); } }); } catch (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } } async queryUpdateIdentifyProject(req, callback) { try { var apires = this.getApiResultDefined(); var idxpr = req.body.idxpr; var prnumber = req.body.prnumber; var idxpoboq = req.body.idxpoboq; var idxpo = req.body.idxpo; var totalpoboq = req.body.totalpoboq; var totalqty = req.body.totalqty; var idxvendor = req.body.idxvendor; var vendorname = req.body.vendorname; var vendorid = req.body.vendorid; var idxjustification = req.body.idxjustification; var justificationnumber = req.body.justificationnumber; var podate = req.body.vper_start; var status = req.body.status; var statusdescription = req.body.statusdescription; var identifyprojectnumber = req.body.identifyprojectnumber; var contractdescription = req.body.contractdescription; var contractperiodfrom = req.body.contractperiodfrom; var contractperiodto = req.body.contractperiodto; var nik = req.body.nik; // var qry ="select _idx from tbl_po where status=0 and isdeleted=0 order by _idx desc limit 1"; var qry = "select _idx from tbl_po where _idx='" + idxpo + "' and (identifyprojectnumber is null or identifyprojectnumber='') and isdeleted=0 order by _idx desc limit 1"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length <= 0) { qry = "insert into tbl_po set ponumber='000',idxpr='" + idxpr + "',prnumber='" + prnumber + "',idxjustification='" + idxjustification + "',"; qry += "justificationnumber='" + justificationnumber + "',idxvendor='" + idxvendor + "',vendorname='" + vendorname + "',vendorid='" + vendorid + "',podate='" + podate + "',"; qry += "podescription='" + contractdescription + "',identifyprojectnumber='" + identifyprojectnumber + "',contractdescription='" + contractdescription + "',"; qry += "contractperiodfrom='" + contractperiodfrom + "',contractperiodto='" + contractperiodto + "',units='PKT',totalqty='" + totalqty + "',"; qry += "totalpo='" + totalpoboq + "',status='" + status + "',statusdescription='" + statusdescription + "',idxpoboq='" + idxpoboq + "',"; qry += "iby='" + nik + "',idt=now()"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { var idxheader = result.insertId; qry = "update tbl_poboq set idxheader='" + idxheader + "',identifyprojectnumber='" + identifyprojectnumber + "',status='" + status + "',statusdescription='" + statusdescription + "' "; qry += "where _idx in(" + idxpoboq + ")"; console.log(qry); db.query(qry, [], function (err, result1, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { qry = "select * from vw_po where _idx='" + idxpo + "'"; db.query(qry, [], function (err, result1, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = JSON.parse(JSON.stringify(result1)); callback(null, apires); } }); } }); } }); } else { // qry="update tbl_po set idxpoboq='"+idxpoboq+"',identifyprojectnumber='"+identifyprojectnumber+"',status='"+status+"',"; // qry+="podescription='"+contractdescription+"',contractdescription='"+contractdescription+"',contractperiodfrom='"+contractperiodfrom+"',"; // qry+="contractperiodto='"+contractperiodto+"',statusdescription='"+statusdescription+"' "; // qry+="where _idx='"+idxpo+"'"; qry = "update tbl_po p,tbl_poboq po set p.idxpoboq='" + idxpoboq + "',p.identifyprojectnumber='" + identifyprojectnumber + "',p.status='" + status + "',"; qry += "p.podescription='" + contractdescription + "',p.contractdescription='" + contractdescription + "',p.contractperiodfrom='" + contractperiodfrom + "',"; qry += "p.contractperiodto='" + contractperiodto + "',p.statusdescription='" + statusdescription + "',po.identifyprojectnumber='" + identifyprojectnumber + "',"; qry += "po.status='" + status + "',po.statusdescription='" + statusdescription + "' "; qry += "where p._idx='" + idxpo + "' and po._idx in (" + idxpoboq + ") and p.isdeleted=0 and po.isdeleted=0"; console.log(qry); db.query(qry, [], function (err, result1, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { qry = "select * from vw_po where _idx='" + idxpo + "'"; db.query(qry, [], function (err, result1, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = JSON.parse(JSON.stringify(result1)); callback(null, apires); } }); } }); } } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryUpdateIdentifyProjectold(req, callback) { try { var apires = this.getApiResultDefined(); var idxpo = req.body.idxpo; // var idxpoboq = req.body.idxpoboq; var status = req.body.status; var statusdescription = req.body.statusdescription; var identifyprojectnumber = req.body.identifyprojectnumber; var contractdescription = req.body.contractdescription; var contractperiodfrom = req.body.contractperiodfrom; var contractperiodto = req.body.contractperiodto; var nik = req.body.nik; var qry = "update tbl_po set podescription='" + contractdescription + "',contractdescription='" + contractdescription + "',status='" + status + "',statusdescription='" + statusdescription + "',"; qry = qry + "identifyprojectnumber='" + identifyprojectnumber + "',contractperiodfrom='" + contractperiodfrom + "',"; qry = qry + "contractperiodto='" + contractperiodto + "',uby='" + nik + "',udt=now() "; qry = qry + "where _idx='" + idxpo + "'"; // var qry = "update tbl_po p, tbl_poboq pb set p.podescription='"+contractdescription+"',p.contractdescription='"+contractdescription+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',"; // qry = qry +"p.identifyprojectnumber='"+identifyprojectnumber+"',pb.identifyprojectnumber='"+identifyprojectnumber+"',p.contractperiodfrom='"+contractperiodfrom+"',"; // qry = qry +"p.contractperiodto='"+contractperiodto+"',p.uby='"+nik+"',p.udt=now() "; // qry = qry + "where p._idx='"+idxpo+"' and pb._idx in('"+idxpoboq+"')"; console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { qry = "select * from vw_po where _idx='" + idxpo + "'"; db.query(qry, [], function (err, result1, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = JSON.parse(JSON.stringify(result1)); callback(null, apires); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryUpdatePoNumber(req, sapmessage, callback) { try { var apires = this.getApiResultDefined(); var idxpo = req.body.idxpo; var idxpoboq = req.body.idxpoboq; var nik = req.body.nik; var status = req.body.status; var posapnumber = req.body.ponumber || ""; var podate = req.body.podate || ""; var statusdescription = req.body.statusdescription; var sapmessage = sapmessage; if (!posapnumber || posapnumber == "") { posapnumber = "000"; } // var setvalues="p.ponumber='"+posapnumber+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',po.status='"+status+"',po.statusdescription='"+statusdescription+"',"; var setvalues = "p.ponumber='" + posapnumber + "',p.podate='" + podate + "',p.status='" + status + "',p.statusdescription='" + statusdescription + "',"; setvalues += "po.ponumber='" + posapnumber + "',po.status='" + status + "',po.statusdescription='" + statusdescription + "',"; // var setvalues="ponumber='"+posapnumber+"',status='"+status+"',statusdescription='"+statusdescription+"',"; if (!posapnumber || posapnumber == "" || posapnumber == "000") { setvalues = ""; } var qry = "update tbl_po p, tbl_poboq po set " + setvalues + "p.sapmessages='" + sapmessage + "',p.uby='" + nik + "',p.udt=now() "; qry = qry + "where (p._idx=po.idxheader and p._idx='" + idxpo + "' and po._idx in (" + idxpoboq + ")) and p.isdeleted=0 and po.isdeleted=0"; // var qry = "update tbl_po set "+setvalues+"sapmessages='"+sapmessage+"',uby='"+nik+"',udt=now() "; // qry = qry +"where (_idx=idxheader and _idx='"+idxpo+"' and p_idx in ("+idxpoboq+")) and p.isdeleted=0 and po.isdeleted=0"; console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { qry = "select idxpoboq,ponumber from vw_poboq where idxpoboq in(" + idxpoboq + ")"; db.query(qry, [], function (err, result1, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = JSON.parse(JSON.stringify(result1)); callback(null, apires); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryUpdateUploadPoNumber(req, sapmessage, callback) { try { var apires = this.getApiResultDefined(); var idxpo = req.body.idxpo; var idxpoboq = req.body.idxpoboq; var nik = req.body.nik; var status = req.body.status; var posapnumber = req.body.ponumber || ""; var sp3number = req.body.sp3number || ""; var podate = req.body.podate || ""; var statusdescription = req.body.statusdescription; var sapmessage = sapmessage; if (!posapnumber || posapnumber == "") { posapnumber = "000"; } // var setvalues="p.ponumber='"+posapnumber+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',po.status='"+status+"',po.statusdescription='"+statusdescription+"',"; var setvalues = "p.ponumber='" + posapnumber + "',p.podate='" + podate + "',p.status='" + status + "',p.statusdescription='" + statusdescription + "',"; setvalues += "po.ponumber='" + posapnumber + "po.identifyprojectnumber='" + sp3number + "',po.status='" + status + "',po.statusdescription='" + statusdescription + "',"; // var setvalues="ponumber='"+posapnumber+"',status='"+status+"',statusdescription='"+statusdescription+"',"; if (!posapnumber || posapnumber == "" || posapnumber == "000") { setvalues = ""; } var qry = "update tbl_po p, tbl_poboq po set " + setvalues + "p.sapmessages='" + sapmessage + "',p.uby='" + nik + "',p.udt=now() "; qry = qry + "where (p._idx=po.idxheader and p._idx='" + idxpo + "' and po._idx in (" + idxpoboq + ")) and p.isdeleted=0 and po.isdeleted=0"; // var qry = "update tbl_po set "+setvalues+"sapmessages='"+sapmessage+"',uby='"+nik+"',udt=now() "; // qry = qry +"where (_idx=idxheader and _idx='"+idxpo+"' and p_idx in ("+idxpoboq+")) and p.isdeleted=0 and po.isdeleted=0"; console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { qry = "select idxpoboq,ponumber from vw_poboq where idxpoboq in(" + idxpoboq + ")"; db.query(qry, [], function (err, result1, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = JSON.parse(JSON.stringify(result1)); callback(null, apires); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryUpdatePoNumberold(req, posapnumber, sapmessage, callback) { try { var apires = this.getApiResultDefined(); var idxpo = req.body.idxpo; var idxpoboq = req.body.idxpoboq; var nik = req.body.nik; var status = req.body.status; var statusdescription = req.body.statusdescription; if (!posapnumber || posapnumber == "") { posapnumber = "000"; } // var setvalues="p.ponumber='"+posapnumber+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',po.status='"+status+"',po.statusdescription='"+statusdescription+"',"; var setvalues = "p.ponumber='" + posapnumber + "',p.status='" + status + "',p.statusdescription='" + statusdescription + "',"; setvalues += "po.ponumber='" + posapnumber + "',po.identifyprojectnumber='" + sp3number + "',po.status='" + status + "',po.statusdescription='" + statusdescription + "',"; // var setvalues="ponumber='"+posapnumber+"',status='"+status+"',statusdescription='"+statusdescription+"',"; if (!posapnumber || posapnumber == "" || posapnumber == "000") { setvalues = ""; } var qry = "update tbl_po p, tbl_poboq po set " + setvalues + "p.sapmessages='" + sapmessage + "',p.uby='" + nik + "',p.udt=now() "; qry = qry + "where (p._idx=po.idxheader and p._idx='" + idxpo + "' and po._idx in (" + idxpoboq + ")) and p.isdeleted=0 and po.isdeleted=0"; // var qry = "update tbl_po set "+setvalues+"sapmessages='"+sapmessage+"',uby='"+nik+"',udt=now() "; // qry = qry +"where (_idx=idxheader and _idx='"+idxpo+"' and p_idx in ("+idxpoboq+")) and p.isdeleted=0 and po.isdeleted=0"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { qry = "select idxpoboq,ponumber from vw_poboq where idxpoboq in(" + idxpoboq + ")"; db.query(qry, [], function (err, result1, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = JSON.parse(JSON.stringify(result1)); callback(null, apires); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryUpdateMigoNumber(req, callback) { try { var apires = this.getApiResultDefined(); var idxpo = req.query.idxpo || req.body.idxpo; // var idxpoboq = req.body.idxpoboq; // var migonumber=""; var nik = req.body.nik; var migo = req.body.migo; var migosapmessage = req.body.migosapmessage; // var status = req.body.status; // var statusdescription = req.body.statusdescription; // if(!migo||migo==''){ // migonumber="000"; // } // var setvalues="p.ponumber='"+posapnumber+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',po.status='"+status+"',po.statusdescription='"+statusdescription+"',"; var setvalues = "p.migo='" + migo + "',p.migosapmessages='" + migosapmessage + "',po.migo='" + migo + "',"; // var setvalues="ponumber='"+posapnumber+"',status='"+status+"',statusdescription='"+statusdescription+"',"; if (!migo || migo == "") { setvalues = ""; } var qry = "update tbl_po p, tbl_poboq po set " + setvalues + "p.migosapmessages='" + migosapmessage + "',p.uby='" + nik + "',p.udt=now() "; qry = qry + "where (p._idx=po.idxheader and p._idx='" + idxpo + "') and p.isdeleted=0 and po.isdeleted=0"; // var qry = "update tbl_po set "+setvalues+"sapmessages='"+sapmessage+"',uby='"+nik+"',udt=now() "; // qry = qry +"where (_idx=idxheader and _idx='"+idxpo+"' and p_idx in ("+idxpoboq+")) and p.isdeleted=0 and po.isdeleted=0"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { qry = "select idxpoboq,ponumber,migo from vw_poboq where idxpo='" + idxpo + "'"; db.query(qry, [], function (err, result1, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = JSON.parse(JSON.stringify(result1)); callback(null, apires); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryUpdatePOSAP(req, posapnumber, sapmsg, callback) { try { var apires = this.getApiResultDefined(); var idxpo = req.body.idxpo; var status = req.body.status; var totalpo = req.body.totalpo; var podescription = req.body.podescription; var statusdescription = req.body.statusdescription; var nik = req.body.nik; var setvalues = "p.ponumber='" + posapnumber + "',po.ponumber='" + posapnumber + "',"; if (!posapnumber) { setvalues = ""; } if (typeof totalpo !== undefined) { setvalues = setvalues + "p.totalpo='" + totalpo + "',"; } if (typeof podescription !== undefined) { setvalues = setvalues + "p.podescription='" + podescription + "',"; } var qry = "update tbl_po p, tbl_poboq po set " + setvalues + "p.sapmessages='" + sapmsg + "',p.status='" + status + "',p.statusdescription='" + statusdescription + "',p.uby='" + nik + "',p.udt=now() "; qry = qry + "where p._idx=po.idxheader and p._idx='" + idxpo + "' and p.isdeleted=0 and po.isdeleted=0"; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = JSON.parse(JSON.stringify(result)); callback(null, apires); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } // async queryUpdatePoNumberold(req,posapnumber, callback) { // try { // var apires = this.getApiResultDefined(); // var idxpo = req.body.idxpo; // var idxpoboq = req.body.idxpoboq; // var vper_start = req.body.vper_start; // var vper_end = req.body.vper_end; // var idxvendor = req.body.idxvendor; // var vendorid = req.body.vendorid; // var vendorname = req.body.vendorname; // var totalpo = req.body.totalpo; // var totalqty = req.body.totalqty; // var units = "PKT"; // var status = req.body.status; // var statusdescription = req.body.statusdescription; // var status = req.body.status; // var statusdescription = req.body.statusdescription; // let podescription = req.body.podescription; // var nik = req.body.nik; // var qry = "update tbl_po p, tbl_poboq po set vper_start='"+vper_start+"',vper_end='"+vper_end+"',p.podate=now(),"; // qry = qry +"p.ponumber='"+posapnumber+"',p.idxvendor='"+idxvendor+"',p.vendorid='"+vendorid+"',p.vendorname='"+vendorname+"',"; // qry = qry +"p.podescription='"+podescription+"',p.units='"+units+"',p.totalqty='"+totalqty+"',p.totalpo='"+totalpo+"',po.ponumber='"+posapnumber+"',"; // qry = qry +"p.status='" + status +"',p.statusdescription='" + statusdescription +"',p.uby='"+nik+"',p.udt=now() "; // qry = qry +"where p._idx=po.idxheader and po._idx in(" + idxpoboq +") and p.isdeleted=0 and po.isdeleted=0"; // var qry = "update tbl_po p, tbl_poboq po set p.ponumber='"+posapnumber+"',po.ponumber='"+posapnumber+"',p.uby='"+nik+"',p.udt=now() "; // qry = qry +"where p._idx=po.idxheader and po._idx in(" + idxpoboq +") and p.isdeleted=0 and po.isdeleted=0"; // db.query(qry,[],function(err,result,fields){ // if(err){ // apires.meta['message'] = err.toString(); // apires.meta['code'] = 500; // callback('err',apires); // } // else // { // qry = "select idxpoboq,ponumber from vw_poboq where idxpoboq in("+idxpoboq+")"; // db.query(qry,[],function(err,result1,fields){ // if(err){ // apires.meta['message'] = err.toString(); // apires.meta['code'] = 500; // callback('err',apires); // } // else // { // apires.success = true; // apires.data = JSON.parse(JSON.stringify(result1)); // callback(null, apires); // } // }); // } // }); // } catch (err) { // apires.meta.code = 500; // apires.meta.message = err.toString(); // callback('error',apires); // } // } async queryPoManagementList(req, callback) { var apires = this.getApiResultDefined(); try { let limit = req.query.limit; let offset = req.query.offset; let keyword = req.query.keyword; // let nik = req.body.nik; let qry = "select * from vw_po "; qry = qry + "where trim(ponumber) like '%" + keyword + "%' and ponumber<>'000'"; // qry = qry +"order by _idx asc limit " + offset + ", " + limit; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { let pagination = result.length / limit; if (!Number.isInteger(pagination)) { pagination = Math.floor(result.length / limit) + 1; } // let pagination = Adapter.getPagination(result.length, limit); apires.success = true; apires.data.push({ "totalpage": pagination, "totalrows": result.length, }); qry = "select * from vw_po "; qry = qry + "where trim(ponumber) like '%" + keyword + "%' and ponumber<>'000'"; qry = qry + "order by _idx asc limit " + offset + ", " + limit; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.data.push({ "results": JSON.parse(JSON.stringify(result)), }); callback(null, apires); } }); } else { apires.meta.code = 200; apires.meta.message = "Record Not Found"; callback(null, apires); } } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryPottdList(req, callback) { var apires = this.getApiResultDefined(); try { let limit = req.query.limit; let offset = req.query.offset; let keyword = req.query.keyword; // let nik = req.body.nik; let qry = "select * from vw_po "; qry = qry + "where trim(ponumber) like '%" + keyword + "%' and status in(1,6) and ponumber<>'000' and ponumber<>'' "; // qry = qry +"order by _idx asc limit " + offset + ", " + limit; console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { let pagination = result.length / limit; if (!Number.isInteger(pagination)) { pagination = Math.floor(result.length / limit) + 1; } // let pagination = Adapter.getPagination(result.length, limit); apires.success = true; apires.data.push({ "totalpage": pagination, "totalrows": result.length, }); qry = "select * from vw_po "; qry = qry + "where trim(ponumber) like '%" + keyword + "%' and status in(1,6) and ponumber<>'000' and ponumber<>'' "; qry = qry + "order by _idx asc limit " + offset + ", " + limit; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.data.push({ "results": JSON.parse(JSON.stringify(result)), }); callback(null, apires); } }); } else { apires.meta.code = 200; apires.meta.message = "Record Not Found"; callback(null, apires); } } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryPottdListDetail(req, callback) { var apires = this.getApiResultDefined(); try { let _idx = req.query.idxpo; let qry = "select * from vw_po where _idx='" + _idx + "'"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length <= 0) { apires.meta.message = "Record not found"; callback("", apires); } else { let resultJson = JSON.stringify(result); resultJson = JSON.parse(resultJson); apires.success = true; apires.data = resultJson; callback(null, apires); } } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryPoMigoList(req, callback) { var apires = this.getApiResultDefined(); try { let limit = req.query.limit; let offset = req.query.offset; let keyword = req.query.keyword; // let nik = req.body.nik; let qry = "select * from vw_po "; qry = qry + "where trim(ponumber) like '%" + keyword + "%' and status in(2,4) and ponumber<>'000' and ponumber<>'' "; // qry = qry +"order by _idx asc limit " + offset + ", " + limit; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { let pagination = result.length / limit; if (!Number.isInteger(pagination)) { pagination = Math.floor(result.length / limit) + 1; } // let pagination = Adapter.getPagination(result.length, limit); apires.success = true; apires.data.push({ "totalpage": pagination, "totalrows": result.length, }); qry = "select * from vw_po "; qry = qry + "where trim(ponumber) like '%" + keyword + "%' and status in(2,4) and ponumber<>'000' and ponumber<>'' "; qry = qry + "order by _idx asc limit " + offset + ", " + limit; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.data.push({ "results": JSON.parse(JSON.stringify(result)), }); callback(null, apires); } }); } else { apires.meta.code = 200; apires.meta.message = "Record Not Found"; callback(null, apires); } } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryPoMigoListDetail(req, callback) { var apires = this.getApiResultDefined(); try { let _idx = req.query.idxpo; let qry = "select * from vw_poboq where idxpo='" + _idx + "'"; console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length <= 0) { apires.meta.message = "Record not found"; callback("", apires); } else { let resultJson = JSON.stringify(result); resultJson = JSON.parse(resultJson); apires.success = true; apires.data = resultJson; callback(null, apires); } } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryPottdListDetailold(req, callback) { var apires = this.getApiResultDefined(); try { let _idx = req.query.idxpo; let qry = "select * from vw_po where _idx='" + _idx + "'"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { let dataRows = result.length; if (result.length <= 0) { apires.meta.message = "Record not found"; callback("", apires); } else { let dataRows = result.length; Object.keys(result).forEach(function (key) { result[key]["ttd"] = []; // === Get Ttd qry = "select * from vw_pottd where idxpo='" + _idx + "' order by _idx asc"; // console.log(qry); db.query(qry, [], function (err, result3, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("error", apires); } else { if (result3.length > 0) { var disetujuioleh = []; Object.keys(result3).forEach(function (key2) { disetujuioleh.push(JSON.parse(JSON.stringify(result3[key2]))); }); result[key]["ttd"] = { "disetujuioleh": disetujuioleh, }; // result[key]['ttd'] = JSON.parse(JSON.stringify(result3)); } if (0 === --dataRows) { let resultJson = JSON.stringify(result); resultJson = JSON.parse(resultJson); apires.success = true; apires.data = resultJson; callback(null, apires); } } }); }); } } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryPoManagementListDetail(req, callback) { var apires = this.getApiResultDefined(); try { let idxpo = req.query.idxpo || req.body.idxpo; let qry = "select * from vw_po where _idx='" + idxpo + "'"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { apires.success = true; apires.data = JSON.parse(JSON.stringify(result)); } else { apires.meta.code = 200; apires.meta.message = "Record Not Found"; } callback(null, apires); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryPoInventoryList(req, callback) { var apires = this.getApiResultDefined(); try { let limit = req.query.limit; let offset = req.query.offset; let keyword = req.query.keyword; // let nik = req.body.nik; let qry = "select * from vw_poinventoryheader "; qry = qry + "where trim(ponumber) like '%" + keyword + "%' "; // qry = qry +"order by _idx asc limit " + offset + ", " + limit; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { let pagination = result.length / limit; if (!Number.isInteger(pagination)) { pagination = Math.floor(result.length / limit) + 1; } // let pagination = Adapter.getPagination(result.length, limit); apires.success = true; apires.data.push({ "totalpage": pagination, "totalrows": result.length, }); qry = "select * from vw_poinventoryheader "; qry = qry + "where trim(ponumber) like '%" + keyword + "%' "; qry = qry + "order by _idx asc limit " + offset + ", " + limit; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.data.push({ "results": JSON.parse(JSON.stringify(result)), }); callback(null, apires); } }); } else { apires.meta.code = 200; apires.meta.message = "Record Not Found"; callback(null, apires); } } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryPoInventoryDetailList(req, callback) { var apires = this.getApiResultDefined(); try { let limit = req.query.limit; let offset = req.query.offset; let keyword = req.query.keyword; let idxheader = req.query.idxpo; // let nik = req.body.nik; let qry = "select * from vw_poinventorydetail "; qry = qry + "where trim(ponumber) like '%" + keyword + "%' and idxheader='" + idxheader + "' "; qry = qry + "order by _idx asc limit " + offset + ", " + limit; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { let pagination = result.length / limit; if (!Number.isInteger(pagination)) { pagination = Math.floor(result.length / limit) + 1; } // let pagination = Adapter.getPagination(result.length, limit); apires.success = true; apires.data.push({ "totalpage": pagination, "totalrows": result.length, }); qry = "select * from vw_poinventorydetail "; qry = qry + "where trim(ponumber) like '%" + keyword + "%' and idxheader='" + idxheader + "' "; qry = qry + "order by _idx asc limit " + offset + ", " + limit; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.data.push({ "results": JSON.parse(JSON.stringify(result)), }); callback(null, apires); } }); } else { apires.meta.code = 200; apires.meta.message = "Record Not Found"; callback(null, apires); } } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryNewPoAdjustment(req, filename, callback) { var apires = this.getApiResultDefined(); try { let idxpo = req.body.idxpo; let ponumber = req.body.ponumber; let dates = req.body.dates; let reason = req.body.reason; let filedoc = filename; let totalpo = req.body.totalpo; let adjval = req.body.adjval; let grandtotal = req.body.grandtotal; let nik = req.body.nik; let qry = "select _idx from tbl_poadj where idxpo='" + idxpo + "' and isdeleted=0 order by _idx desc limit 1"; // console.log(qry); db.query(qry, [], function (err2, results2) { if (err2) { apires.meta["message"] = err2.toString(); apires.meta["code"] = 500; callback("err", apires); } else { qry = "insert into tbl_poadj "; qry = qry + "set idxpo='" + idxpo + "',ponumber='" + ponumber + "',dates='" + dates + "',"; qry = qry + "reason='" + reason + "',filedoc='" + filedoc + "',totalpo='" + totalpo + "',"; qry = qry + "adjval='" + adjval + "',grandtotal='" + grandtotal + "',status=-1,statusdescription='Draft',"; qry = qry + "laststatusupdated=now(),iby='" + nik + "',idt=now()"; if (results2.length >= 1) { qry = "update tbl_poadj "; qry = qry + "set idxpo='" + idxpo + "',ponumber='" + ponumber + "',dates='" + dates + "',"; qry = qry + "reason='" + reason + "',filedoc='" + filedoc + "',totalpo='" + totalpo + "',"; qry = qry + "adjval='" + adjval + "',grandtotal='" + grandtotal + "',uby='" + nik + "',udt=now() "; qry = qry + "where idxpo='" + idxpo + "' and isdeleted=0"; } // console.log(qry); db.query(qry, [], function (err3, results3) { if (err3) { apires.meta["message"] = err3.toString(); apires.meta["code"] = 500; callback("err", apires); } else { var res = JSON.parse(JSON.stringify(results3)); apires.success = true; apires.meta.message = "Updated Success"; apires.data = res; callback(null, apires); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryPoAdjList(req, callback) { var apires = this.getApiResultDefined(); try { let limit = req.query.limit; let offset = req.query.offset; let keyword = req.query.keyword; // let nik = req.body.nik; let qry = "select * from vw_poadjlist "; qry = qry + "where trim(ponumber) like '%" + keyword + "%' "; // qry = qry +"order by _idx asc limit " + offset + ", " + limit; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { let pagination = result.length / limit; if (!Number.isInteger(pagination)) { pagination = Math.floor(result.length / limit) + 1; } // let pagination = Adapter.getPagination(result.length, limit); apires.success = true; apires.data.push({ "totalpage": pagination, "totalrows": result.length, }); qry = "select * from vw_poadjlist "; qry = qry + "where trim(ponumber) like '%" + keyword + "%' "; qry = qry + "order by _idx asc limit " + offset + ", " + limit; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.data.push({ "results": JSON.parse(JSON.stringify(result)), }); callback(null, apires); } }); } else { apires.meta.code = 200; apires.meta.message = "Record Not Found"; callback(null, apires); } } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryPoAdjListDetail(req, callback) { var apires = this.getApiResultDefined(); try { let idx = req.query.idx; // let nik = req.body.nik; let qry = "select * from vw_poadjlist where _idx='" + idx + "'"; // qry = qry +"order by _idx asc limit " + offset + ", " + limit; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { apires.success = true; apires.data = JSON.parse(JSON.stringify(result)); callback(null, apires); } else { apires.meta.code = 200; apires.meta.message = "Record Not Found"; callback(null, apires); } } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryPoApproveList(req, callback) { var apires = this.getApiResultDefined(); try { let keyword = req.query.keyword; let nik = req.query.nik; let qry = "select * from vw_po "; qry = qry + "where (trim(ponumber) like '%" + keyword + "%') and (iby='" + nik + "' and status in(4,6) and isadjustment=0) "; // qry = qry +"order by _idx asc limit " + offset + ", " + limit; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { apires.success = true; apires.data = JSON.parse(JSON.stringify(result)); callback(null, apires); } else { apires.meta.code = 200; apires.meta.message = "Record Not Found"; callback(null, apires); } } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryUpdPoAdjustment(req, filename, callback) { var apires = this.getApiResultDefined(); try { let idx = req.body.idxadjustment; let idxpo = req.body.idxpo; let ponumber = req.body.ponumber; let dates = req.body.dates; let reason = req.body.reason; let filedoc = filename; let totalpo = req.body.totalpo; let adjval = req.body.adjval; let grandtotal = req.body.grandtotal; let nik = req.body.nik; let qry = "select _idx from tbl_poadj where _idx='" + idx + "' and isdeleted=0 order by _idx desc limit 1"; // console.log(qry); db.query(qry, [], function (err2, results2) { if (err2) { apires.meta["message"] = err2.toString(); apires.meta["code"] = 500; callback("err", apires); } else { var fileupd = "filedoc='" + filedoc + "',"; if (!filedoc) { fileupd = ""; } qry = "insert into tbl_poadj "; qry = qry + "set idxpo='" + idxpo + "',ponumber='" + ponumber + "',dates='" + dates + "',"; qry = qry + "reason='" + reason + "'," + fileupd + "totalpo='" + totalpo + "',"; qry = qry + "adjval='" + adjval + "',grandtotal='" + grandtotal + "',iby='" + nik + "',idt=now()"; if (results2.length >= 1) { qry = "update tbl_poadj "; qry = qry + "set idxpo='" + idxpo + "',ponumber='" + ponumber + "',dates='" + dates + "',"; qry = qry + "reason='" + reason + "'," + fileupd + "totalpo='" + totalpo + "',"; qry = qry + "adjval='" + adjval + "',grandtotal='" + grandtotal + "',uby='" + nik + "',udt=now() "; qry = qry + "where _idx='" + idx + "' and isdeleted=0"; } console.log(qry); db.query(qry, [], function (err3, results3) { if (err3) { apires.meta["message"] = err3.toString(); apires.meta["code"] = 500; callback("err", apires); } else { var res = JSON.parse(JSON.stringify(results3)); apires.success = true; apires.meta.message = "Updated Success"; apires.data = res; callback(null, apires); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryUpdPoBoq(req, filename, callback) { var apires = this.getApiResultDefined(); try { console.log("read files " + filename); // apires.success = true; // apires.meta.message = "Upload Success"; // apires.data = []; // callback(null, apires); const fs = require("fs"); const {parse} = require("csv-parse"); // fs.createReadStream(process.env.BASEPATH+'/assets/po/boq/'+filename) var totalrows = 0; var totalerr = 0; var totalsuccess = 0; fs.createReadStream("./assets/po/boq/" + filename) .pipe(parse({delimiter: ",", from_line: 2})) .on("data", function (row) { totalrows += 1; // console.log(row); //idxpo,sp3_number,items,idxpoboq,vendorid_sap,description,po_number,start_date,end_date,curr,unit_price,qty,po_amount,rate_po,po_amount_usd,migo var spdata = row[0].split(","); // console.log(spdata.length); if (spdata.length <= 1) { spdata = row[0].split(";"); } var idxpo = spdata[0]; var identifyprojectnumber = spdata[1]; var idxpoboq = spdata[3]; var description = spdata[5]; var startdate = spdata[7]; var enddate = spdata[8]; var curr = spdata[9]; var hs = spdata[10]; var qty = spdata[11]; var poamount = spdata[12]; var ratepo = spdata[13]; var migo = spdata[14]; var qry = "update tbl_poboq set identifyprojectnumber='" + identifyprojectnumber + "',description='" + description + "',"; qry += "startdate='" + startdate + "',enddate='" + enddate + "',curr='" + curr + "',hs='" + hs + "',qty='" + qty + "',poamount='" + poamount + "',"; qry += "ratepo='" + ratepo + "',migo='" + migo + "',udt=now() where _idx='" + idxpoboq + "'"; // console.log(qry); db.query(qry, [], function (err, result) { if (err) { totalerr += 1; } else { totalsuccess += 1; } }); // console.log(spdata[0]+' '+spdata[1]); }) .on("end", function () { console.log("finished"); apires.success = true; apires.meta.message = "Upload Success"; apires.data = { "totalrows": totalrows, "Success": totalsuccess, "Error": totalerr, }; callback(null, apires); }) .on("error", function (error) { console.log(error.message); apires.meta.code = 500; apires.meta.message = error.toString(); callback("error", apires); }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryDeleteAdjPO(req, callback) { var apires = this.getApiResultDefined(); try { let idxadjustment = req.body.idxadjustment; let remarkdeleted = req.body.remarkdeleted; let nik = req.body.nik; let qry = "update tbl_poadj "; qry = qry + "set isdeleted=1,remarkdeleted='" + remarkdeleted + "',dby='" + nik + "',ddt=now() "; qry = qry + " where _idx='" + idxadjustment + "'"; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.meta.message = "Deleted Success"; callback(null, apires); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async querySubmitAdjPO(req, callback) { var apires = this.getApiResultDefined(); try { let idxadjustment = req.body.idxadjusment; let nik = req.body.nik; let qry = "update tbl_poadj "; qry = qry + "set status=0,statusdescription='Submitted',laststatusupdated=now(),uby='" + nik + "',udt=now()"; qry = qry + " where _idx='" + idxadjustment + "'"; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.meta.message = "Deleted Success"; callback(null, apires); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryUpdatePoHeaderWithFile(req, filename, callback) { try { var apires = this.getApiResultDefined(); var idxpo = req.body.idxpo; var idxpoboq = req.body.idxpoboq; var vper_start = req.body.vper_start; var podatettd = req.body.vper_start; var vper_end = req.body.vper_end; var idxvendor = req.body.idxvendor; var vendorid = req.body.vendorid; var vendorname = req.body.vendorname; var totalpo = req.body.totalpo; var totalqty = req.body.totalqty; var podate = req.body.podate; var sp3number = req.body.sp3number; var units = "PKT"; // var podescription = req.body.podescription; var idxapproval = req.body.idxapproval; var nikapproval = req.body.nikapproval; var nik = req.body.nik; var po_file = filename; // var ttd = JSON.parse(req.body.ttd); // console.log(ttd); var qry = "update tbl_po set idxvendor='" + idxvendor + "',vendorid='" + vendorid + "',vendorname='" + vendorname + "',"; qry = qry + "podescription=contractdescription,idxpoboq='" + idxpoboq + "',units='" + units + "',totalqty='" + totalqty + "',totalpo='" + totalpo + "',identifyprojectnumber='" + sp3number + "',"; qry = qry + "vper_start='" + vper_start + "',vper_end='" + vper_end + "',podate='" + podate + "',podatettd='" + podatettd + "',idxapproval='" + idxapproval + "',po_file='" + po_file + "',"; qry = qry + "nikapproval='" + nikapproval + "',approveddate='" + podatettd + "',uby='" + nik + "',udt=now() "; qry = qry + "where _idx='" + idxpo + "'"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { qry = "select * from vw_po where _idx='" + idxpo + "'"; db.query(qry, [], function (err, result1, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = JSON.parse(JSON.stringify(result1)); callback(null, apires); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } } module.exports = PoAdapter;