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;