Files
backend-Eprocurement/adapter/poadapter.js
2025-12-05 06:21:42 +07:00

2136 lines
99 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, 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 ="PO Manual";
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 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 {
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);
}
}
}
module.exports = PoAdapter;