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

2737 lines
80 KiB
JavaScript

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) {
console.log("result =>", result);
if (err) {
apires.meta["message"] = err.toString();
apires.meta["code"] = 500;
callback("err", apires);
} else {
qry =
"select idxpoboq,ponumber,identifyprojectnumber from vw_poboq where idxpoboq in(" +
idxpoboq +
")";
console.log("qry", qry);
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;
console.log("result1 =>", result1);
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.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 {
const proc_nik = process.env.PROC_USER_NIK ?? "";
const proc_users = proc_nik.split(",");
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' and status in (1,2,3,4,5,6)";
if (nik) {
if (!proc_users.includes(nik)) {
qry += ' and (iby="' + nik + ' or nikapproval="' + nik + '")';
}
}
// 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'";
if (nik) {
if (!proc_users.includes(nik)) {
qry += ' and (iby="' + nik + ' or nikapproval="' + nik + '") ';
}
}
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 {
const proc_nik = process.env.PROC_USER_NIK ?? "";
const proc_users = proc_nik.split(",");
let limit = req.query.limit;
let offset = req.query.offset;
let keyword = req.query.keyword;
let nik = req.query.nik;
// let nik = req.body.nik;
let qry = "select * from vw_po ";
qry =
qry +
"where trim(ponumber) like '%" +
keyword +
"%' and status in(1,2,3,4,5,6) and ponumber<>'000' and ponumber<>'' ";
if (nik) {
if (!proc_users.includes(nik)) {
qry += 'and (iby="' + nik + ' or nikapproval="' + nik + '")';
}
}
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,2,3,4,5,6) and ponumber<>'000' and ponumber<>'' ";
if (nik) {
if (!proc_users.includes(nik)) {
qry += 'and (iby="' + nik + ' or nikapproval="' + nik + '") ';
}
}
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);
// PO BOQ
let qry = "select * from vw_poboq where idxpo='" + resultJson[0]._idx + "'";
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 resultJsonBoq = JSON.stringify(result);
resultJsonBoq = JSON.parse(resultJsonBoq);
resultJson[0]["boq"] = resultJsonBoq;
apires.success = true;
apires.data = resultJson;
callback(null, apires);
}
}
});
// 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 approvalname = req.body.approvalname;
var podesc = req.body.podesc;
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 +
"idxpoboq='" +
idxpoboq +
"',podescription='" +
podesc +
"',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 +
"',approvalname='" +
approvalname +
"',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;