diff --git a/adapter/poadapter.js b/adapter/poadapter.js index e84a94d..d9e456a 100644 --- a/adapter/poadapter.js +++ b/adapter/poadapter.js @@ -1,2135 +1,2577 @@ -const db=require('../config/dbproc.js'); -const Adapter=require('./dbadapter.js'); -const QRCode = require('qrcode'); +const db = require("../config/dbproc.js"); +const Adapter = require("./dbadapter.js"); +const QRCode = require("qrcode"); const fs = require("fs"); -const { start } = require('repl'); +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; - } +function getToken() { + try { + var n1 = Math.floor(Math.random() * 9) + 0; + var n2 = Math.floor(Math.random() * 9) + 0; + var n3 = Math.floor(Math.random() * 9) + 0; + var n4 = Math.floor(Math.random() * 9) + 0; + var n5 = Math.floor(Math.random() * 9) + 0; + var n6 = Math.floor(Math.random() * 9) + 0; + var otp = + n1.toString() + n2.toString() + n3.toString() + n4.toString() + n5.toString() + n6.toString(); + // console.log(otp); + return otp; + } catch (error) { + return error; + } } -class PoAdapter extends Adapter{ - constructor(){ - super(); - } - - - async queryVendorList(req,callback){ - var apires = this.getApiResultDefined(); - try { - let keyword= req.query.keyword; - let qry = "select * from vw_vendorinfo where vendorname like '%"+keyword+"%' or vendorid like '%"+keyword+"%' order by id asc"; - - // console.log(qry); - db.query(qry,[],function(err,result,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - if(result.length>0){ - apires.success = true; - apires.data = JSON.parse(JSON.stringify(result)); - } - else{ - apires.meta.code = 200; - apires.meta.message = "Record Not Found"; - } - callback(null, apires); - } - }); - } - catch(err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - } - } - - async queryPoBoqlist(req,callback){ - var apires = this.getApiResultDefined(); - try { - let idxpr= req.query.idxpr; - let qry = "select * from vw_poboq where idxpr='"+idxpr+"'"; - - // console.log(qry); - db.query(qry,[],function(err,result,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - if(result.length>0){ - apires.success = true; - apires.data = JSON.parse(JSON.stringify(result)); - } - else{ - apires.meta.code = 200; - apires.meta.message = "Record Not Found"; - } - callback(null, apires); - } - }); - } - catch(err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - } - } - - async queryGetidxpoheader(req, callback){ - try { - // console.log(req); - var apires = this.getApiResultDefined(); - var idxpr = req.query.idxpr; - var idxpo = req.query.idxpo; - var idxvendor = req.query.idxvendor; - - var qry = "select _idx from tbl_po where idxpr='"+idxpr+"' and idxvendor='"+idxvendor+"' and isdeleted=0 order by _idx desc limit 1"; - if(idxpo>0){ - qry = "select _idx from tbl_po where _idx='"+idxpo+"' and isdeleted=0 order by _idx desc limit 1"; - } - // console.log(qry); - db.query(qry,[],function(err,result,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - var idxpo = 0; - if(result.length>0){ - idxpo = result[0]['_idx']; - } - apires.success = true; - apires.data = {"idxpo":idxpo}; - // console.log(apires); - callback(null, apires); - } - }); - } catch (err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - } - } - - async querySaveboqdetail(req,callback){ - var apires = this.getApiResultDefined(); - try { - let idxpo= req.body.idxpo; - let idxpr= req.body.idxpr; - let prnumber= req.body.prnumber; - let idxjustification = req.body.idxjustification; - let idxjustificationboq = req.body.idxjustificationboq; - let justificationnumber = req.body.justificationnumber; - // let podate = req.body.podate; - let status = 0; - let statusdescription = "Submitted"; - let nik = req.body.nik; - - // === PO boq; - let idxpoboq = req.body.idxpoboq; - let startdate = req.body.startdate; - let enddate = req.body.enddate; - let items = req.body.items; - let qty = req.body.qty; - let unitprice = req.body.unitprice; - let units = req.body.units; - let total = req.body.total; - let spidxvendor = req.body.idxvendor.split(','); - let idxvendor = spidxvendor[0]; - let vendorid = (spidxvendor[1]).toString().trim(); - let vendorname = req.body.vendorname.toString().trim(); - let description = req.body.description; - let curr = req.body.curr; - let hs = req.body.hs; - let poamount = req.body.poamount; - let ratepo = req.body.ratepo; - let migo = req.body.migo; - let idxpoold = req.body.idxpoold; - - let qry=""; - if(idxpoold!=idxpo&&idxpoold!=0){ - qry="update tbl_po set isdeleted=1,remarkdeleted='Change Vendor',dby='"+nik+"',ddt=now() where _idx='"+idxpoold+"'"; - db.query(qry); - } - - qry = "select _idx from tbl_po where idxpr='"+idxpr+"' and idxvendor='"+idxvendor+"' and isdeleted=0 order by _idx desc limit 1"; - console.log(idxpo); - if(idxpo>0){ - qry = "select _idx from tbl_po where _idx='"+idxpo+"' and isdeleted=0 order by _idx desc limit 1"; - } - - console.log(qry); - - // let qry = "select _idx from tbl_po where idxpr='"+idxpr+"' and idxpoboq in('"+idxpoboq+"') and isdeleted=0 order by _idx desc limit 1"; - // console.log(qry); - db.query(qry,[],function(err,result,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - let jsresult = JSON.parse(JSON.stringify(result)); - // console.log(jsresult); - let idxheader = jsresult.length > 0 ? jsresult[0]['_idx'] : 0; - // console.log(idxheader); - qry = "insert into tbl_po set idxpr='"+idxpr+"',prnumber='"+prnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',"; - qry = qry + "idxvendor='"+idxvendor+"',vendorid='"+vendorid+"',vendorname='"+vendorname+"',podate=now(),status='"+status+"',statusdescription='"+statusdescription+"',iby='"+nik+"',idt=now()"; - if(result.length>0){ - // qry = "update tbl_po set idxpr='"+idxpr+"',prnumber='"+prnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',"; - // qry = qry + "podate=now(),status='"+status+"',statusdescription='"+statusdescription+"',uby='"+nik+"',udt=now() "; - // qry = qry + "where idxpr='"+idxpr+"'"; - qry = "update tbl_po set idxvendor='"+idxvendor+"',vendorid='"+vendorid+"',vendorname='"+vendorname+"',uby='"+nik+"',udt=now() "; - qry = qry + "where idxpr='"+idxpr+"' and idxvendor='"+idxvendor+"' and isdeleted=0"; - if(idxpo>0){ - qry = "update tbl_po set idxvendor='"+idxvendor+"',vendorid='"+vendorid+"',vendorname='"+vendorname+"',uby='"+nik+"',udt=now() "; - qry = qry + "where _idx='"+idxpo+"' and isdeleted=0"; - - } - } - - // console.log(qry); - db.query(qry,[],function(err1,result1,fields1){ - if(err1){ - apires.meta['message'] = err1.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else{ - if(idxheader<=0){ - idxheader = result1.insertId; - } - - // ==== Insert / Update boq PO - qry = "select _idx from tbl_poboq where _idx='"+idxpoboq+"'"; - // console.log(qry); - db.query(qry,[],function(err2,result2,fields2){ - if(err2){ - apires.meta['message'] = err2.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else{ - // ==== Insert / update boq - qry = "insert into tbl_poboq set idxheader='"+idxheader+"',idxjustification='"+idxjustification+"',idxjustificationboq='"+idxjustificationboq+"',items='"+items+"',"; - qry = qry + "qty='"+qty+"',unitprice='"+unitprice+"',units='"+units+"',total='"+total+"',idxvendor='"+idxvendor+"',vendorid='"+vendorid+"',vendorname='"+vendorname+"',"; - qry = qry + "startdate='"+startdate+"',enddate='"+enddate+"',description='"+description+"',curr='"+curr+"',hs='"+hs+"',poamount='"+poamount+"',ratepo='"+ratepo+"',migo='"+migo+"',"; - qry = qry + "status='"+status+"',statusdescription='"+statusdescription+"',iby='"+nik+"',idt=now()"; - if(result2.length>0){ - qry = "update tbl_poboq set idxheader='"+idxheader+"',idxjustification='"+idxjustification+"',idxjustificationboq='"+idxjustificationboq+"',items='"+items+"',"; - qry = qry + "qty='"+qty+"',unitprice='"+unitprice+"',units='"+units+"',total='"+total+"',idxvendor='"+idxvendor+"',vendorid='"+vendorid+"',vendorname='"+vendorname+"',"; - qry = qry + "startdate='"+startdate+"',enddate='"+enddate+"',description='"+description+"',curr='"+curr+"',hs='"+hs+"',poamount='"+poamount+"',ratepo='"+ratepo+"',migo='"+migo+"',"; - qry = qry + "status='"+status+"',statusdescription='"+statusdescription+"',uby='"+nik+"',udt=now() "; - qry = qry + "where _idx='"+idxpoboq+"'"; - } - - //console.log(qry); - - db.query(qry,[],function(err3,result3,fields3){ - if(err3){ - apires.meta['message'] = err3.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else{ - apires.success = true; - apires.data = { - "idxpoboq" : idxpoboq>0 ? parseInt(idxpoboq) : result3.insertId, - "idxpo" : idxheader>0 ? parseInt(idxheader) : 0 - - }; - callback('',apires); - } - }); - } - }); - } - }) - //callback(null, apires); - } - }); - } - catch(err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - } - } - - - async queryDeletePoBoq(req, callback){ - var apires = this.getApiResultDefined(); - try { - let idxpoboq = req.body.idxpoboq; - let remarkdeleted = req.body.remarkdeleted; - let nik = req.body.nik; - - let qry = "update tbl_poboq "; - qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now()"; - qry = qry +" where _idx='"+idxpoboq+"'"; - - db.query(qry,[],function(err,result,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - apires.success = true; - apires.meta.message = "Deleted Success"; - callback(null, apires); - } - }); - } catch (err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - } - } - - async querypoBoqDetail(req,callback){ - var apires = this.getApiResultDefined(); - try { - let idxpoboq = req.body.idxpoboq; - let qry = "select * from vw_poboq where idxpoboq in("+idxpoboq+")"; - - db.query(qry,[],function(err,result,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - if(result.length>0){ - apires.success = true; - apires.data = JSON.parse(JSON.stringify(result)); - } - else{ - apires.meta.code = 200; - apires.meta.message = "Record Not Found"; - } - callback(null, apires); - } - }); - - } - catch(err){ - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - } - } - - async queryUpdatePoHeader(req, callback){ - try { - var apires = this.getApiResultDefined(); - var idxpo = req.body.idxpo; - var idxpoboq = req.body.idxpoboq; - var vper_start = req.body.vper_start; - var podatettd = req.body.vper_start; - var vper_end = req.body.vper_end; - var idxvendor = req.body.idxvendor; - var vendorid = req.body.vendorid; - var vendorname = req.body.vendorname; - var totalpo = req.body.totalpo; - var totalqty = req.body.totalqty; - var podate = req.body.podate; - var units = "PKT"; - // var podescription = req.body.podescription; - var idxapproval= req.body.idxapproval; - var nikapproval = req.body.nikapproval; - var nik = req.body.nik; - // var ttd = JSON.parse(req.body.ttd); - - // console.log(ttd); - var qry = "update tbl_po set idxvendor='"+idxvendor+"',vendorid='"+vendorid+"',vendorname='"+vendorname+"',"; - qry = qry + "podescription=contractdescription,idxpoboq='"+idxpoboq+"',units='"+units+"',totalqty='"+totalqty+"',totalpo='"+totalpo+"',"; - qry = qry + "vper_start='"+vper_start+"',vper_end='"+vper_end+"',podate='"+podate+"',podatettd='"+podatettd+"',idxapproval='"+idxapproval+"',"; - qry = qry + "nikapproval='"+nikapproval+"',approveddate='"+podatettd+"',uby='"+nik+"',udt=now() "; - qry = qry + "where _idx='"+idxpo+"'"; - - - // console.log(qry); - db.query(qry,[],function(err,result,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - qry = "select * from vw_po where _idx='"+idxpo+"'"; - db.query(qry,[],function(err,result1,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - apires.success = true; - apires.data = JSON.parse(JSON.stringify(result1)); - callback(null, apires); - } - }); - } - }); - } catch (err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - } - } - - async queryUpdatePoHeaderold(req, callback){ - try { - var apires = this.getApiResultDefined(); - var idxpo = req.body.idxpo; - var idxpoboq = req.body.idxpoboq; - var vper_start = req.body.vper_start; - var podatettd = req.body.vper_start; - var vper_end = req.body.vper_end; - var idxvendor = req.body.idxvendor; - var vendorid = req.body.vendorid; - var vendorname = req.body.vendorname; - var totalpo = req.body.totalpo; - var totalqty = req.body.totalqty; - var units = "PKT"; - // var podescription = req.body.podescription; - var nik = req.body.nik; - var ttd = JSON.parse(req.body.ttd); - - console.log(ttd); - var qry = "update tbl_po set idxvendor='"+idxvendor+"',vendorid='"+vendorid+"',vendorname='"+vendorname+"',"; - qry = qry + "podescription=contractdescription,idxpoboq='"+idxpoboq+"',units='"+units+"',totalqty='"+totalqty+"',totalpo='"+totalpo+"',"; - qry = qry + "vper_start='"+vper_start+"',vper_end='"+vper_end+"',podate=now(),podatettd='"+podatettd+"',uby='"+nik+"',udt=now() "; - qry = qry + "where _idx='"+idxpo+"'"; - - - // console.log(qry); - db.query(qry,[],function(err,result,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - // === set ttd - // var approval = approval.disetujuioleh; - - Object.keys(ttd).forEach(function(key){ - var token = getToken(); - var id = ttd[key]['id'] || 0; - var idemployee = ttd[key]['idemployee']; - var nik = ttd[key]['nik']; - var action = ttd[key]['action']; - - qry = "insert into tbl_pottd set idxpo='"+idxpo+"',idemployee='"+idemployee+"',"; - qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; - if(action=='update'){ - qry = "update tbl_justificationttd set idxpo='"+idxpo+"',idemployee='"+idemployee+"',"; - qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() "; - qry = qry + "where _idx='"+id+"'"; - } - if(action=='delete'){ - qry = "update tbl_pottd set isdeleted=1,dby='"+nik+"',ddt=now() "; - qry = qry+ "where _idx='"+id+"'"; - } - console.log(qry); - db.query(qry,[],function(err3,result3,fields3){return result3;}); - }); - qry = "select * from vw_po where _idx='"+idxpo+"'"; - db.query(qry,[],function(err,result1,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - apires.success = true; - apires.data = JSON.parse(JSON.stringify(result1)); - callback(null, apires); - } - }); - } - }); - } catch (err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - } - } - - async queryGetLastSignDate(req, callback) { - try { - var apires = this.getApiResultDefined(); - let idxjustification= req.body.idxjustification; - let qry="select idxjustification,nik,date_format(signeddate,'%Y-%m-%d') signeddate "; - qry+="from tbl_justificationttd where category='APR' and idxjustification='"+idxjustification+"' and not(signeddate is null) order by signeddate desc limit 1"; - - // console.log(qry); - db.query(qry,[],function(err,result,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - apires.success = true; - apires.data = JSON.parse(JSON.stringify(result)); - callback(null, apires); - } - }); - } catch (err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - } - } - - async querySignedPo(req, callback) { - try { - var apires = this.getApiResultDefined(); - let idxpo= req.body.idxpo; - var idxapproval = req.body.idxapproval; - var nikapproval = req.body.nikapproval; - var datesigned = req.body.datesigned; - // console.log(datesigned); - var nik = req.body.nik; - var token = this.getToken(); - var filepng = token+".png"; - // token =getToken(); - token = token +","+nikapproval; - - QRCode.toDataURL(token, function (err, code) { - // console.log(code);` - if(err) { - console.log('ddf'); - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - var imageBuffer = Adapter.decodeBase64Image(code); - fs.writeFile('./assets/png/'+filepng, imageBuffer.data, function(err) { - // console.log(err); - if(err){ - console.log('eee'); - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback(err.toString(), apires); - } - else{ - var qry = "update tbl_po set token=md5('"+token+"'),filepng='"+filepng+"',status='6',statusdescription='Approved',approveddate='"+datesigned+"',uby='"+nik+"',udt=now() "; - qry = qry +"where _idx='" + idxpo +"'"; - // console.log(qry); - db.query(qry,[],function(err,result,fields){ - if(err){ - // console.log('ttetete'); - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - apires.success = true; - // === - qry = "select status from tbl_po where _idx='"+idxpo+"'"; - db.query(qry,[],function(err,result2,fields){ - if(err){ - console.log('bbbb'); - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('error',apires); - } - else - { - var status = result2[0]['status']; - var isapproved=0; - if(status==6){isapproved = 1;} - apires.data = { - "isapproved":isapproved, - "token":token, - "urltoken": process.env.BASEURL+"/main/getimageinfo?route=png&name="+filepng - }; - callback(null, apires); - } - }); - - } - }); - } - - - }); - } - }); - } catch (err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - } - } - - async querySignedPoold(req, callback) { - try { - var apires = this.getApiResultDefined(); - let idxpo= req.body.idxpo; - var idxapproval = req.body.idxapproval; - var nikapproval = req.body.nikapproval; - var datesigned = req.body.datesigned; - // console.log(datesigned); - var nik = req.body.nik; - var token = this.getToken(); - var filepng = token+".png"; - // token =getToken(); - token = token +","+nikapproval; - - QRCode.toDataURL(token, function (err, code) { - // console.log(code);` - if(err) { - console.log('ddf'); - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - var imageBuffer = Adapter.decodeBase64Image(code); - fs.writeFile('./assets/png/'+filepng, imageBuffer.data, function(err) { - // console.log(err); - if(err){ - console.log('eee'); - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback(err.toString(), apires); - } - else{ - var qry = "update tbl_pottd set token=md5('"+token+"'),imgqr='"+filepng+"',issigned='1',signeddate='"+datesigned+"',uby='"+nik+"',udt=now() "; - qry = qry +"where _idx='" + idxapproval +"'"; - // console.log(qry); - db.query(qry,[],function(err,result,fields){ - if(err){ - // console.log('ttetete'); - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - apires.success = true; - // === - qry = "select status from tbl_po where _idx='"+idxpo+"'"; - db.query(qry,[],function(err,result2,fields){ - if(err){ - console.log('bbbb'); - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('error',apires); - } - else - { - var status = result2[0]['status']; - var isapproved=0; - if(status==2){isapproved = 1;} - apires.data = { - "isapproved":isapproved, - "token":token, - "urltoken": process.env.BASEURL+"/main/getimageinfo?route=png&name="+filepng - }; - callback(null, apires); - } - }); - - } - }); - } - - - }); - } - }); - } catch (err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - } - } - - async querycheckidentifyprocject(req,identifyprojectnumber,callback){ - try { - var apires = this.getApiResultDefined(); - var qry = "select _idx from tbl_po where identifyprojectnumber='"+identifyprojectnumber+"' and isdeleted=0 order by _idx desc limit 1"; - db.query(qry,[],function(err,result,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - if(result.length<=0){ - apires.success=true; - } - else{ - apires.meta.message = "Nomor SP3 "+identifyprojectnumber+" Sudah digunakan, mohon masukkan nomor SP3 yang lain. TERIMA KASIH"; - } - callback('',apires); - } - }); - } catch (err) { - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - } - - async queryUpdateIdentifyProject(req, callback){ - try { - var apires = this.getApiResultDefined(); - var idxpr = req.body.idxpr; - var prnumber = req.body.prnumber; - var idxpoboq = req.body.idxpoboq; - var idxpo = req.body.idxpo; - var totalpoboq = req.body.totalpoboq; - var totalqty = req.body.totalqty; - var idxvendor = req.body.idxvendor; - var vendorname = req.body.vendorname; - var vendorid = req.body.vendorid; - var idxjustification = req.body.idxjustification; - var justificationnumber = req.body.justificationnumber; - var podate=req.body.vper_start; - var status = req.body.status; - var statusdescription = req.body.statusdescription; - var identifyprojectnumber = req.body.identifyprojectnumber; - var contractdescription = req.body.contractdescription; - var contractperiodfrom = req.body.contractperiodfrom; - var contractperiodto = req.body.contractperiodto; - var nik = req.body.nik; - - // var qry ="select _idx from tbl_po where status=0 and isdeleted=0 order by _idx desc limit 1"; - var qry ="select _idx from tbl_po where _idx='"+idxpo+"' and (identifyprojectnumber is null or identifyprojectnumber='') and isdeleted=0 order by _idx desc limit 1"; - // console.log(qry); - db.query(qry,[],function(err,result,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - if(result.length<=0){ - qry="insert into tbl_po set ponumber='000',idxpr='"+idxpr+"',prnumber='"+prnumber+"',idxjustification='"+idxjustification+"',"; - qry+="justificationnumber='"+justificationnumber+"',idxvendor='"+idxvendor+"',vendorname='"+vendorname+"',vendorid='"+vendorid+"',podate='"+podate+"',"; - qry+="podescription='"+contractdescription+"',identifyprojectnumber='"+identifyprojectnumber+"',contractdescription='"+contractdescription+"',"; - qry+="contractperiodfrom='"+contractperiodfrom+"',contractperiodto='"+contractperiodto+"',units='PKT',totalqty='"+totalqty+"',"; - qry+="totalpo='"+totalpoboq+"',status='"+status+"',statusdescription='"+statusdescription+"',idxpoboq='"+idxpoboq+"',"; - qry+="iby='"+nik+"',idt=now()"; - // console.log(qry); - - db.query(qry,[],function(err,result,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - var idxheader = result.insertId; - qry="update tbl_poboq set idxheader='"+idxheader+"',identifyprojectnumber='"+identifyprojectnumber+"',status='"+status+"',statusdescription='"+statusdescription+"' "; - qry+="where _idx in("+idxpoboq+")"; - console.log(qry); - db.query(qry,[],function(err,result1,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - qry = "select * from vw_po where _idx='"+idxpo+"'"; - db.query(qry,[],function(err,result1,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - apires.success = true; - apires.data = JSON.parse(JSON.stringify(result1)); - callback(null, apires); - } - }); - } - - }); - } - }); - } - else{ - // qry="update tbl_po set idxpoboq='"+idxpoboq+"',identifyprojectnumber='"+identifyprojectnumber+"',status='"+status+"',"; - // qry+="podescription='"+contractdescription+"',contractdescription='"+contractdescription+"',contractperiodfrom='"+contractperiodfrom+"',"; - // qry+="contractperiodto='"+contractperiodto+"',statusdescription='"+statusdescription+"' "; - // qry+="where _idx='"+idxpo+"'"; - qry="update tbl_po p,tbl_poboq po set p.idxpoboq='"+idxpoboq+"',p.identifyprojectnumber='"+identifyprojectnumber+"',p.status='"+status+"',"; - qry+="p.podescription='"+contractdescription+"',p.contractdescription='"+contractdescription+"',p.contractperiodfrom='"+contractperiodfrom+"',"; - qry+="p.contractperiodto='"+contractperiodto+"',p.statusdescription='"+statusdescription+"',po.identifyprojectnumber='"+identifyprojectnumber+"',"; - qry+="po.status='"+status+"',po.statusdescription='"+statusdescription+"' "; - qry+="where p._idx='"+idxpo+"' and po._idx in ("+idxpoboq+") and p.isdeleted=0 and po.isdeleted=0"; - console.log(qry); - db.query(qry,[],function(err,result1,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - qry = "select * from vw_po where _idx='"+idxpo+"'"; - db.query(qry,[],function(err,result1,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - apires.success = true; - apires.data = JSON.parse(JSON.stringify(result1)); - callback(null, apires); - } - }); - } - - }); - } - } - }); - - - } catch (err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - } - } - - - - async queryUpdateIdentifyProjectold(req, callback){ - try { - var apires = this.getApiResultDefined(); - var idxpo = req.body.idxpo; - // var idxpoboq = req.body.idxpoboq; - var status = req.body.status; - var statusdescription = req.body.statusdescription; - var identifyprojectnumber = req.body.identifyprojectnumber; - var contractdescription = req.body.contractdescription; - var contractperiodfrom = req.body.contractperiodfrom; - var contractperiodto = req.body.contractperiodto; - var nik = req.body.nik; - - var qry = "update tbl_po set podescription='"+contractdescription+"',contractdescription='"+contractdescription+"',status='"+status+"',statusdescription='"+statusdescription+"',"; - qry = qry +"identifyprojectnumber='"+identifyprojectnumber+"',contractperiodfrom='"+contractperiodfrom+"',"; - qry = qry +"contractperiodto='"+contractperiodto+"',uby='"+nik+"',udt=now() "; - qry = qry + "where _idx='"+idxpo+"'"; - // var qry = "update tbl_po p, tbl_poboq pb set p.podescription='"+contractdescription+"',p.contractdescription='"+contractdescription+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',"; - // qry = qry +"p.identifyprojectnumber='"+identifyprojectnumber+"',pb.identifyprojectnumber='"+identifyprojectnumber+"',p.contractperiodfrom='"+contractperiodfrom+"',"; - // qry = qry +"p.contractperiodto='"+contractperiodto+"',p.uby='"+nik+"',p.udt=now() "; - // qry = qry + "where p._idx='"+idxpo+"' and pb._idx in('"+idxpoboq+"')"; - - console.log(qry); - db.query(qry,[],function(err,result,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - qry = "select * from vw_po where _idx='"+idxpo+"'"; - db.query(qry,[],function(err,result1,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - apires.success = true; - apires.data = JSON.parse(JSON.stringify(result1)); - callback(null, apires); - } - }); - } - }); - } catch (err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - } - } - - async queryUpdatePoNumber(req, sapmessage, callback) { - try { - var apires = this.getApiResultDefined(); - var idxpo = req.body.idxpo; - var idxpoboq= req.body.idxpoboq; - var nik = req.body.nik; - var status = req.body.status; - var posapnumber = req.body.ponumber || ''; - var podate = req.body.podate || ''; - var statusdescription = req.body.statusdescription; - var sapmessage =sapmessage - - if(!posapnumber||posapnumber==''){ - posapnumber="000"; - } - // var setvalues="p.ponumber='"+posapnumber+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',po.status='"+status+"',po.statusdescription='"+statusdescription+"',"; - var setvalues="p.ponumber='"+posapnumber+"',p.podate='"+podate+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',"; - setvalues+="po.ponumber='"+posapnumber+"',po.status='"+status+"',po.statusdescription='"+statusdescription+"',"; - // var setvalues="ponumber='"+posapnumber+"',status='"+status+"',statusdescription='"+statusdescription+"',"; - if(!posapnumber||posapnumber==''||posapnumber=='000'){ - setvalues=""; - } - var qry = "update tbl_po p, tbl_poboq po set "+setvalues+"p.sapmessages='"+sapmessage+"',p.uby='"+nik+"',p.udt=now() "; - qry = qry +"where (p._idx=po.idxheader and p._idx='"+idxpo+"' and po._idx in ("+idxpoboq+")) and p.isdeleted=0 and po.isdeleted=0"; - - // var qry = "update tbl_po set "+setvalues+"sapmessages='"+sapmessage+"',uby='"+nik+"',udt=now() "; - // qry = qry +"where (_idx=idxheader and _idx='"+idxpo+"' and p_idx in ("+idxpoboq+")) and p.isdeleted=0 and po.isdeleted=0"; - - console.log(qry); - db.query(qry,[],function(err,result,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - qry = "select idxpoboq,ponumber from vw_poboq where idxpoboq in("+idxpoboq+")"; - db.query(qry,[],function(err,result1,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - apires.success = true; - apires.data = JSON.parse(JSON.stringify(result1)); - callback(null, apires); - } - }); - - } - }); - } catch (err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - } - } - - async 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); - } - } +class PoAdapter extends Adapter { + constructor() { + super(); + } + + async queryVendorList(req, callback) { + var apires = this.getApiResultDefined(); + try { + let keyword = req.query.keyword; + let qry = + "select * from vw_vendorinfo where vendorname like '%" + + keyword + + "%' or vendorid like '%" + + keyword + + "%' order by id asc"; + + // console.log(qry); + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + if (result.length > 0) { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result)); + } else { + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + } + callback(null, apires); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async queryPoBoqlist(req, callback) { + var apires = this.getApiResultDefined(); + try { + let idxpr = req.query.idxpr; + let qry = "select * from vw_poboq where idxpr='" + idxpr + "'"; + + // console.log(qry); + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + if (result.length > 0) { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result)); + } else { + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + } + callback(null, apires); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async queryGetidxpoheader(req, callback) { + try { + // console.log(req); + var apires = this.getApiResultDefined(); + var idxpr = req.query.idxpr; + var idxpo = req.query.idxpo; + var idxvendor = req.query.idxvendor; + + var qry = + "select _idx from tbl_po where idxpr='" + + idxpr + + "' and idxvendor='" + + idxvendor + + "' and isdeleted=0 order by _idx desc limit 1"; + if (idxpo > 0) { + qry = + "select _idx from tbl_po where _idx='" + + idxpo + + "' and isdeleted=0 order by _idx desc limit 1"; + } + // console.log(qry); + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + var idxpo = 0; + if (result.length > 0) { + idxpo = result[0]["_idx"]; + } + apires.success = true; + apires.data = {"idxpo": idxpo}; + // console.log(apires); + callback(null, apires); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async querySaveboqdetail(req, callback) { + var apires = this.getApiResultDefined(); + try { + let idxpo = req.body.idxpo; + let idxpr = req.body.idxpr; + let prnumber = req.body.prnumber; + let idxjustification = req.body.idxjustification; + let idxjustificationboq = req.body.idxjustificationboq; + let justificationnumber = req.body.justificationnumber; + // let podate = req.body.podate; + let status = 0; + let statusdescription = "Submitted"; + let nik = req.body.nik; + + // === PO boq; + let idxpoboq = req.body.idxpoboq; + let startdate = req.body.startdate; + let enddate = req.body.enddate; + let items = req.body.items; + let qty = req.body.qty; + let unitprice = req.body.unitprice; + let units = req.body.units; + let total = req.body.total; + let spidxvendor = req.body.idxvendor.split(","); + let idxvendor = spidxvendor[0]; + let vendorid = spidxvendor[1].toString().trim(); + let vendorname = req.body.vendorname.toString().trim(); + let description = req.body.description; + let curr = req.body.curr; + let hs = req.body.hs; + let poamount = req.body.poamount; + let ratepo = req.body.ratepo; + let migo = req.body.migo; + let idxpoold = req.body.idxpoold; + + let qry = ""; + if (idxpoold != idxpo && idxpoold != 0) { + qry = + "update tbl_po set isdeleted=1,remarkdeleted='Change Vendor',dby='" + + nik + + "',ddt=now() where _idx='" + + idxpoold + + "'"; + db.query(qry); + } + + qry = + "select _idx from tbl_po where idxpr='" + + idxpr + + "' and idxvendor='" + + idxvendor + + "' and isdeleted=0 order by _idx desc limit 1"; + console.log(idxpo); + if (idxpo > 0) { + qry = + "select _idx from tbl_po where _idx='" + + idxpo + + "' and isdeleted=0 order by _idx desc limit 1"; + } + + console.log(qry); + + // let qry = "select _idx from tbl_po where idxpr='"+idxpr+"' and idxpoboq in('"+idxpoboq+"') and isdeleted=0 order by _idx desc limit 1"; + // console.log(qry); + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + let jsresult = JSON.parse(JSON.stringify(result)); + // console.log(jsresult); + let idxheader = jsresult.length > 0 ? jsresult[0]["_idx"] : 0; + // console.log(idxheader); + qry = + "insert into tbl_po set idxpr='" + + idxpr + + "',prnumber='" + + prnumber + + "',idxjustification='" + + idxjustification + + "',justificationnumber='" + + justificationnumber + + "',"; + qry = + qry + + "idxvendor='" + + idxvendor + + "',vendorid='" + + vendorid + + "',vendorname='" + + vendorname + + "',podate=now(),status='" + + status + + "',statusdescription='" + + statusdescription + + "',iby='" + + nik + + "',idt=now()"; + if (result.length > 0) { + // qry = "update tbl_po set idxpr='"+idxpr+"',prnumber='"+prnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',"; + // qry = qry + "podate=now(),status='"+status+"',statusdescription='"+statusdescription+"',uby='"+nik+"',udt=now() "; + // qry = qry + "where idxpr='"+idxpr+"'"; + qry = + "update tbl_po set idxvendor='" + + idxvendor + + "',vendorid='" + + vendorid + + "',vendorname='" + + vendorname + + "',uby='" + + nik + + "',udt=now() "; + qry = + qry + "where idxpr='" + idxpr + "' and idxvendor='" + idxvendor + "' and isdeleted=0"; + if (idxpo > 0) { + qry = + "update tbl_po set idxvendor='" + + idxvendor + + "',vendorid='" + + vendorid + + "',vendorname='" + + vendorname + + "',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + idxpo + "' and isdeleted=0"; + } + } + + // console.log(qry); + db.query(qry, [], function (err1, result1, fields1) { + if (err1) { + apires.meta["message"] = err1.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + if (idxheader <= 0) { + idxheader = result1.insertId; + } + + // ==== Insert / Update boq PO + qry = "select _idx from tbl_poboq where _idx='" + idxpoboq + "'"; + // console.log(qry); + db.query(qry, [], function (err2, result2, fields2) { + if (err2) { + apires.meta["message"] = err2.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + // ==== Insert / update boq + qry = + "insert into tbl_poboq set idxheader='" + + idxheader + + "',idxjustification='" + + idxjustification + + "',idxjustificationboq='" + + idxjustificationboq + + "',items='" + + items + + "',"; + qry = + qry + + "qty='" + + qty + + "',unitprice='" + + unitprice + + "',units='" + + units + + "',total='" + + total + + "',idxvendor='" + + idxvendor + + "',vendorid='" + + vendorid + + "',vendorname='" + + vendorname + + "',"; + qry = + qry + + "startdate='" + + startdate + + "',enddate='" + + enddate + + "',description='" + + description + + "',curr='" + + curr + + "',hs='" + + hs + + "',poamount='" + + poamount + + "',ratepo='" + + ratepo + + "',migo='" + + migo + + "',"; + qry = + qry + + "status='" + + status + + "',statusdescription='" + + statusdescription + + "',iby='" + + nik + + "',idt=now()"; + if (result2.length > 0) { + qry = + "update tbl_poboq set idxheader='" + + idxheader + + "',idxjustification='" + + idxjustification + + "',idxjustificationboq='" + + idxjustificationboq + + "',items='" + + items + + "',"; + qry = + qry + + "qty='" + + qty + + "',unitprice='" + + unitprice + + "',units='" + + units + + "',total='" + + total + + "',idxvendor='" + + idxvendor + + "',vendorid='" + + vendorid + + "',vendorname='" + + vendorname + + "',"; + qry = + qry + + "startdate='" + + startdate + + "',enddate='" + + enddate + + "',description='" + + description + + "',curr='" + + curr + + "',hs='" + + hs + + "',poamount='" + + poamount + + "',ratepo='" + + ratepo + + "',migo='" + + migo + + "',"; + qry = + qry + + "status='" + + status + + "',statusdescription='" + + statusdescription + + "',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + idxpoboq + "'"; + } + + //console.log(qry); + + db.query(qry, [], function (err3, result3, fields3) { + if (err3) { + apires.meta["message"] = err3.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + apires.success = true; + apires.data = { + "idxpoboq": idxpoboq > 0 ? parseInt(idxpoboq) : result3.insertId, + "idxpo": idxheader > 0 ? parseInt(idxheader) : 0, + }; + callback("", apires); + } + }); + } + }); + } + }); + //callback(null, apires); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async queryDeletePoBoq(req, callback) { + var apires = this.getApiResultDefined(); + try { + let idxpoboq = req.body.idxpoboq; + let remarkdeleted = req.body.remarkdeleted; + let nik = req.body.nik; + + let qry = "update tbl_poboq "; + qry = + qry + "set isdeleted=1,remarkdeleted='" + remarkdeleted + "',dby='" + nik + "',ddt=now()"; + qry = qry + " where _idx='" + idxpoboq + "'"; + + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + apires.success = true; + apires.meta.message = "Deleted Success"; + callback(null, apires); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async querypoBoqDetail(req, callback) { + var apires = this.getApiResultDefined(); + try { + let idxpoboq = req.body.idxpoboq; + let qry = "select * from vw_poboq where idxpoboq in(" + idxpoboq + ")"; + + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + if (result.length > 0) { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result)); + } else { + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + } + callback(null, apires); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async queryUpdatePoHeader(req, callback) { + try { + var apires = this.getApiResultDefined(); + var idxpo = req.body.idxpo; + var idxpoboq = req.body.idxpoboq; + var vper_start = req.body.vper_start; + var podatettd = req.body.vper_start; + var vper_end = req.body.vper_end; + var idxvendor = req.body.idxvendor; + var vendorid = req.body.vendorid; + var vendorname = req.body.vendorname; + var totalpo = req.body.totalpo; + var totalqty = req.body.totalqty; + var podate = req.body.podate; + var units = "PKT"; + // var podescription = req.body.podescription; + var idxapproval = req.body.idxapproval; + var nikapproval = req.body.nikapproval; + var nik = req.body.nik; + // var ttd = JSON.parse(req.body.ttd); + + // console.log(ttd); + var qry = + "update tbl_po set idxvendor='" + + idxvendor + + "',vendorid='" + + vendorid + + "',vendorname='" + + vendorname + + "',"; + qry = + qry + + "podescription=contractdescription,idxpoboq='" + + idxpoboq + + "',units='" + + units + + "',totalqty='" + + totalqty + + "',totalpo='" + + totalpo + + "',"; + qry = + qry + + "vper_start='" + + vper_start + + "',vper_end='" + + vper_end + + "',podate='" + + podate + + "',podatettd='" + + podatettd + + "',idxapproval='" + + idxapproval + + "',"; + qry = + qry + + "nikapproval='" + + nikapproval + + "',approveddate='" + + podatettd + + "',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + idxpo + "'"; + + // console.log(qry); + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + qry = "select * from vw_po where _idx='" + idxpo + "'"; + db.query(qry, [], function (err, result1, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async queryUpdatePoHeaderold(req, callback) { + try { + var apires = this.getApiResultDefined(); + var idxpo = req.body.idxpo; + var idxpoboq = req.body.idxpoboq; + var vper_start = req.body.vper_start; + var podatettd = req.body.vper_start; + var vper_end = req.body.vper_end; + var idxvendor = req.body.idxvendor; + var vendorid = req.body.vendorid; + var vendorname = req.body.vendorname; + var totalpo = req.body.totalpo; + var totalqty = req.body.totalqty; + var units = "PKT"; + // var podescription = req.body.podescription; + var nik = req.body.nik; + var ttd = JSON.parse(req.body.ttd); + + console.log(ttd); + var qry = + "update tbl_po set idxvendor='" + + idxvendor + + "',vendorid='" + + vendorid + + "',vendorname='" + + vendorname + + "',"; + qry = + qry + + "podescription=contractdescription,idxpoboq='" + + idxpoboq + + "',units='" + + units + + "',totalqty='" + + totalqty + + "',totalpo='" + + totalpo + + "',"; + qry = + qry + + "vper_start='" + + vper_start + + "',vper_end='" + + vper_end + + "',podate=now(),podatettd='" + + podatettd + + "',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + idxpo + "'"; + + // console.log(qry); + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + // === set ttd + // var approval = approval.disetujuioleh; + + Object.keys(ttd).forEach(function (key) { + var token = getToken(); + var id = ttd[key]["id"] || 0; + var idemployee = ttd[key]["idemployee"]; + var nik = ttd[key]["nik"]; + var action = ttd[key]["action"]; + + qry = + "insert into tbl_pottd set idxpo='" + idxpo + "',idemployee='" + idemployee + "',"; + qry = + qry + + "nik='" + + nik + + "',category='APR',token='" + + token + + "',imgqr='',iby='" + + nik + + "',idt=now()"; + if (action == "update") { + qry = + "update tbl_justificationttd set idxpo='" + + idxpo + + "',idemployee='" + + idemployee + + "',"; + qry = + qry + + "nik='" + + nik + + "',category='APR',token='" + + token + + "',imgqr='',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + id + "'"; + } + if (action == "delete") { + qry = "update tbl_pottd set isdeleted=1,dby='" + nik + "',ddt=now() "; + qry = qry + "where _idx='" + id + "'"; + } + console.log(qry); + db.query(qry, [], function (err3, result3, fields3) { + return result3; + }); + }); + qry = "select * from vw_po where _idx='" + idxpo + "'"; + db.query(qry, [], function (err, result1, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async queryGetLastSignDate(req, callback) { + try { + var apires = this.getApiResultDefined(); + let idxjustification = req.body.idxjustification; + let qry = "select idxjustification,nik,date_format(signeddate,'%Y-%m-%d') signeddate "; + qry += + "from tbl_justificationttd where category='APR' and idxjustification='" + + idxjustification + + "' and not(signeddate is null) order by signeddate desc limit 1"; + + // console.log(qry); + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result)); + callback(null, apires); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async querySignedPo(req, callback) { + try { + var apires = this.getApiResultDefined(); + let idxpo = req.body.idxpo; + var idxapproval = req.body.idxapproval; + var nikapproval = req.body.nikapproval; + var datesigned = req.body.datesigned; + // console.log(datesigned); + var nik = req.body.nik; + var token = this.getToken(); + var filepng = token + ".png"; + // token =getToken(); + token = token + "," + nikapproval; + + QRCode.toDataURL(token, function (err, code) { + // console.log(code);` + if (err) { + console.log("ddf"); + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + var imageBuffer = Adapter.decodeBase64Image(code); + fs.writeFile("./assets/png/" + filepng, imageBuffer.data, function (err) { + // console.log(err); + if (err) { + console.log("eee"); + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback(err.toString(), apires); + } else { + var qry = + "update tbl_po set token=md5('" + + token + + "'),filepng='" + + filepng + + "',status='6',statusdescription='Approved',approveddate='" + + datesigned + + "',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + idxpo + "'"; + // console.log(qry); + db.query(qry, [], function (err, result, fields) { + if (err) { + // console.log('ttetete'); + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + apires.success = true; + // === + qry = "select status from tbl_po where _idx='" + idxpo + "'"; + db.query(qry, [], function (err, result2, fields) { + if (err) { + console.log("bbbb"); + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("error", apires); + } else { + var status = result2[0]["status"]; + var isapproved = 0; + if (status == 6) { + isapproved = 1; + } + apires.data = { + "isapproved": isapproved, + "token": token, + "urltoken": + process.env.BASEURL + "/main/getimageinfo?route=png&name=" + filepng, + }; + callback(null, apires); + } + }); + } + }); + } + }); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async querySignedPoold(req, callback) { + try { + var apires = this.getApiResultDefined(); + let idxpo = req.body.idxpo; + var idxapproval = req.body.idxapproval; + var nikapproval = req.body.nikapproval; + var datesigned = req.body.datesigned; + // console.log(datesigned); + var nik = req.body.nik; + var token = this.getToken(); + var filepng = token + ".png"; + // token =getToken(); + token = token + "," + nikapproval; + + QRCode.toDataURL(token, function (err, code) { + // console.log(code);` + if (err) { + console.log("ddf"); + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + var imageBuffer = Adapter.decodeBase64Image(code); + fs.writeFile("./assets/png/" + filepng, imageBuffer.data, function (err) { + // console.log(err); + if (err) { + console.log("eee"); + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback(err.toString(), apires); + } else { + var qry = + "update tbl_pottd set token=md5('" + + token + + "'),imgqr='" + + filepng + + "',issigned='1',signeddate='" + + datesigned + + "',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + idxapproval + "'"; + // console.log(qry); + db.query(qry, [], function (err, result, fields) { + if (err) { + // console.log('ttetete'); + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + apires.success = true; + // === + qry = "select status from tbl_po where _idx='" + idxpo + "'"; + db.query(qry, [], function (err, result2, fields) { + if (err) { + console.log("bbbb"); + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("error", apires); + } else { + var status = result2[0]["status"]; + var isapproved = 0; + if (status == 2) { + isapproved = 1; + } + apires.data = { + "isapproved": isapproved, + "token": token, + "urltoken": + process.env.BASEURL + "/main/getimageinfo?route=png&name=" + filepng, + }; + callback(null, apires); + } + }); + } + }); + } + }); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async querycheckidentifyprocject(req, identifyprojectnumber, callback) { + try { + var apires = this.getApiResultDefined(); + var qry = + "select _idx from tbl_po where identifyprojectnumber='" + + identifyprojectnumber + + "' and isdeleted=0 order by _idx desc limit 1"; + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + if (result.length <= 0) { + apires.success = true; + } else { + apires.meta.message = + "Nomor SP3 " + + identifyprojectnumber + + " Sudah digunakan, mohon masukkan nomor SP3 yang lain. TERIMA KASIH"; + } + callback("", apires); + } + }); + } catch (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } + } + + async queryUpdateIdentifyProject(req, callback) { + try { + var apires = this.getApiResultDefined(); + var idxpr = req.body.idxpr; + var prnumber = req.body.prnumber; + var idxpoboq = req.body.idxpoboq; + var idxpo = req.body.idxpo; + var totalpoboq = req.body.totalpoboq; + var totalqty = req.body.totalqty; + var idxvendor = req.body.idxvendor; + var vendorname = req.body.vendorname; + var vendorid = req.body.vendorid; + var idxjustification = req.body.idxjustification; + var justificationnumber = req.body.justificationnumber; + var podate = req.body.vper_start; + var status = req.body.status; + var statusdescription = req.body.statusdescription; + var identifyprojectnumber = req.body.identifyprojectnumber; + var contractdescription = req.body.contractdescription; + var contractperiodfrom = req.body.contractperiodfrom; + var contractperiodto = req.body.contractperiodto; + var nik = req.body.nik; + + // var qry ="select _idx from tbl_po where status=0 and isdeleted=0 order by _idx desc limit 1"; + var qry = + "select _idx from tbl_po where _idx='" + + idxpo + + "' and (identifyprojectnumber is null or identifyprojectnumber='') and isdeleted=0 order by _idx desc limit 1"; + // console.log(qry); + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + if (result.length <= 0) { + qry = + "insert into tbl_po set ponumber='000',idxpr='" + + idxpr + + "',prnumber='" + + prnumber + + "',idxjustification='" + + idxjustification + + "',"; + qry += + "justificationnumber='" + + justificationnumber + + "',idxvendor='" + + idxvendor + + "',vendorname='" + + vendorname + + "',vendorid='" + + vendorid + + "',podate='" + + podate + + "',"; + qry += + "podescription='" + + contractdescription + + "',identifyprojectnumber='" + + identifyprojectnumber + + "',contractdescription='" + + contractdescription + + "',"; + qry += + "contractperiodfrom='" + + contractperiodfrom + + "',contractperiodto='" + + contractperiodto + + "',units='PKT',totalqty='" + + totalqty + + "',"; + qry += + "totalpo='" + + totalpoboq + + "',status='" + + status + + "',statusdescription='" + + statusdescription + + "',idxpoboq='" + + idxpoboq + + "',"; + qry += "iby='" + nik + "',idt=now()"; + // console.log(qry); + + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + var idxheader = result.insertId; + qry = + "update tbl_poboq set idxheader='" + + idxheader + + "',identifyprojectnumber='" + + identifyprojectnumber + + "',status='" + + status + + "',statusdescription='" + + statusdescription + + "' "; + qry += "where _idx in(" + idxpoboq + ")"; + console.log(qry); + db.query(qry, [], function (err, result1, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + qry = "select * from vw_po where _idx='" + idxpo + "'"; + db.query(qry, [], function (err, result1, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + } + }); + } + }); + } else { + // qry="update tbl_po set idxpoboq='"+idxpoboq+"',identifyprojectnumber='"+identifyprojectnumber+"',status='"+status+"',"; + // qry+="podescription='"+contractdescription+"',contractdescription='"+contractdescription+"',contractperiodfrom='"+contractperiodfrom+"',"; + // qry+="contractperiodto='"+contractperiodto+"',statusdescription='"+statusdescription+"' "; + // qry+="where _idx='"+idxpo+"'"; + qry = + "update tbl_po p,tbl_poboq po set p.idxpoboq='" + + idxpoboq + + "',p.identifyprojectnumber='" + + identifyprojectnumber + + "',p.status='" + + status + + "',"; + qry += + "p.podescription='" + + contractdescription + + "',p.contractdescription='" + + contractdescription + + "',p.contractperiodfrom='" + + contractperiodfrom + + "',"; + qry += + "p.contractperiodto='" + + contractperiodto + + "',p.statusdescription='" + + statusdescription + + "',po.identifyprojectnumber='" + + identifyprojectnumber + + "',"; + qry += "po.status='" + status + "',po.statusdescription='" + statusdescription + "' "; + qry += + "where p._idx='" + + idxpo + + "' and po._idx in (" + + idxpoboq + + ") and p.isdeleted=0 and po.isdeleted=0"; + console.log(qry); + db.query(qry, [], function (err, result1, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + qry = "select * from vw_po where _idx='" + idxpo + "'"; + db.query(qry, [], function (err, result1, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + } + }); + } + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async queryUpdateIdentifyProjectold(req, callback) { + try { + var apires = this.getApiResultDefined(); + var idxpo = req.body.idxpo; + // var idxpoboq = req.body.idxpoboq; + var status = req.body.status; + var statusdescription = req.body.statusdescription; + var identifyprojectnumber = req.body.identifyprojectnumber; + var contractdescription = req.body.contractdescription; + var contractperiodfrom = req.body.contractperiodfrom; + var contractperiodto = req.body.contractperiodto; + var nik = req.body.nik; + + var qry = + "update tbl_po set podescription='" + + contractdescription + + "',contractdescription='" + + contractdescription + + "',status='" + + status + + "',statusdescription='" + + statusdescription + + "',"; + qry = + qry + + "identifyprojectnumber='" + + identifyprojectnumber + + "',contractperiodfrom='" + + contractperiodfrom + + "',"; + qry = qry + "contractperiodto='" + contractperiodto + "',uby='" + nik + "',udt=now() "; + qry = qry + "where _idx='" + idxpo + "'"; + // var qry = "update tbl_po p, tbl_poboq pb set p.podescription='"+contractdescription+"',p.contractdescription='"+contractdescription+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',"; + // qry = qry +"p.identifyprojectnumber='"+identifyprojectnumber+"',pb.identifyprojectnumber='"+identifyprojectnumber+"',p.contractperiodfrom='"+contractperiodfrom+"',"; + // qry = qry +"p.contractperiodto='"+contractperiodto+"',p.uby='"+nik+"',p.udt=now() "; + // qry = qry + "where p._idx='"+idxpo+"' and pb._idx in('"+idxpoboq+"')"; + + console.log(qry); + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + qry = "select * from vw_po where _idx='" + idxpo + "'"; + db.query(qry, [], function (err, result1, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async queryUpdatePoNumber(req, sapmessage, callback) { + try { + var apires = this.getApiResultDefined(); + var idxpo = req.body.idxpo; + var idxpoboq = req.body.idxpoboq; + var nik = req.body.nik; + var status = req.body.status; + var posapnumber = req.body.ponumber || ""; + var podate = req.body.podate || ""; + var statusdescription = req.body.statusdescription; + var sapmessage = sapmessage; + + if (!posapnumber || posapnumber == "") { + posapnumber = "000"; + } + // var setvalues="p.ponumber='"+posapnumber+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',po.status='"+status+"',po.statusdescription='"+statusdescription+"',"; + var setvalues = + "p.ponumber='" + + posapnumber + + "',p.podate='" + + podate + + "',p.status='" + + status + + "',p.statusdescription='" + + statusdescription + + "',"; + setvalues += + "po.ponumber='" + + posapnumber + + "',po.status='" + + status + + "',po.statusdescription='" + + statusdescription + + "',"; + // var setvalues="ponumber='"+posapnumber+"',status='"+status+"',statusdescription='"+statusdescription+"',"; + if (!posapnumber || posapnumber == "" || posapnumber == "000") { + setvalues = ""; + } + var qry = + "update tbl_po p, tbl_poboq po set " + + setvalues + + "p.sapmessages='" + + sapmessage + + "',p.uby='" + + nik + + "',p.udt=now() "; + qry = + qry + + "where (p._idx=po.idxheader and p._idx='" + + idxpo + + "' and po._idx in (" + + idxpoboq + + ")) and p.isdeleted=0 and po.isdeleted=0"; + + // var qry = "update tbl_po set "+setvalues+"sapmessages='"+sapmessage+"',uby='"+nik+"',udt=now() "; + // qry = qry +"where (_idx=idxheader and _idx='"+idxpo+"' and p_idx in ("+idxpoboq+")) and p.isdeleted=0 and po.isdeleted=0"; + + console.log(qry); + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + qry = "select idxpoboq,ponumber from vw_poboq where idxpoboq in(" + idxpoboq + ")"; + db.query(qry, [], function (err, result1, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async 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); + } + } + + async queryUpdatePoHeaderWithFile(req, filename, callback) { + try { + var apires = this.getApiResultDefined(); + var idxpo = req.body.idxpo; + var idxpoboq = req.body.idxpoboq; + var vper_start = req.body.vper_start; + var podatettd = req.body.vper_start; + var vper_end = req.body.vper_end; + var idxvendor = req.body.idxvendor; + var vendorid = req.body.vendorid; + var vendorname = req.body.vendorname; + var totalpo = req.body.totalpo; + var totalqty = req.body.totalqty; + var podate = req.body.podate; + var units = "PKT"; + // var podescription = req.body.podescription; + var idxapproval = req.body.idxapproval; + var nikapproval = req.body.nikapproval; + var nik = req.body.nik; + var po_file = filename; + // var ttd = JSON.parse(req.body.ttd); + + // console.log(ttd); + var qry = + "update tbl_po set idxvendor='" + + idxvendor + + "',vendorid='" + + vendorid + + "',vendorname='" + + vendorname + + "',"; + qry = + qry + + "podescription=contractdescription,idxpoboq='" + + idxpoboq + + "',units='" + + units + + "',totalqty='" + + totalqty + + "',totalpo='" + + totalpo + + "',"; + qry = + qry + + "vper_start='" + + vper_start + + "',vper_end='" + + vper_end + + "',podate='" + + podate + + "',podatettd='" + + podatettd + + "',idxapproval='" + + idxapproval + + "',po_file='" + + po_file + + "',"; + qry = + qry + + "nikapproval='" + + nikapproval + + "',approveddate='" + + podatettd + + "',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + idxpo + "'"; + + // console.log(qry); + db.query(qry, [], function (err, result, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + qry = "select * from vw_po where _idx='" + idxpo + "'"; + db.query(qry, [], function (err, result1, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } } module.exports = PoAdapter; - - diff --git a/controllers/po.js b/controllers/po.js index b482f96..e95d6a1 100644 --- a/controllers/po.js +++ b/controllers/po.js @@ -1249,3 +1249,44 @@ exports.submitpoadj = (req, res) => { poadapter.sendResponse(502, apireshandler, res); } }; + +exports.uploadPOSAP = (req, res) => { + try { + let status = req.body.status; + let ext = req.body.filename.split(".")[1]; + let filename = req.body.filename + "_" + req.nik + "_" + Date.now() + "." + ext; + + fs.rename( + process.env.BASEPATH + "/assets/sap-po/" + req.body.filename, + process.env.BASEPATH + "/assets/sap-po/" + filename, + function (err) { + if (err) { + poadapter.sendResponse(500, err, res); + } else { + console.log('filename', filename) + + poadapter.queryUpdatePoHeaderWithFile(req, filename, function (err, resdata) { + console.log("err upload PO =>", err); + let statusCode = resdata != null ? resdata.meta.code : 200; + if (err) { + statusCode = 500; + poadapter.sendResponse(statusCode, data, res); + } else { + poadapter.queryUpdatePoNumber(req, "Success Bypass", function (err, data) { + console.log("err queryUpdatePoNumber =>", err); + + let statusCode = data != null ? data.meta.code : 200; + if (err) statusCode = 500; + poadapter.sendResponse(statusCode, data, res); + }); + } + }); + } + }, + ); + } catch (err) { + apireshandler.meta.code = 502; + apireshandler.meta.message = " [123] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +}; diff --git a/middlewares/multer/singlepo.js b/middlewares/multer/singlepo.js new file mode 100644 index 0000000..56f902f --- /dev/null +++ b/middlewares/multer/singlepo.js @@ -0,0 +1,74 @@ +const multer = require('multer'); + +const path = require('path'); +var imageStorage = multer.diskStorage({ + // Destination to store image + // destination: 'assets/images/'+pathDir, + destination: (req, file, cb) => { + // console.log(req.get("path")); + // let pathdir = req.get("path"); + cb(null, "assets/sap-po/") + // cb(null, "assets/words/" + pathdir + "/") + }, + filename : (req, file, cb) => { + // let filename=file.originalname.split(".")[0]; + let nik = req.nik; + let filedoc = 'sap_po_'+nik+'_' + Date.now() + path.extname(file.originalname); + // req.body.filedoc = filedoc; + // cb(null, filedoc); + req.body.filename = filedoc; + cb(null, filedoc); + // file.fieldname is name of the field (image) + // path.extname get the uploaded file extension + } +}); +var imageUpload = multer({ + storage: imageStorage, + limits: { + fileSize: '25mb' // 1000000 Bytes = 5 MB + }, + fileFilter(req, file, cb) { + if (!file.originalname.match(/\.(docx|pdf|PDF)$/)) { + // if (!file.originalname.match(/\.(docx)$/)) { + // upload only png and jpg format + req.fileValidationError = "Please upload a word document in ( docx ) / pdf file max 25 mb"; + cb(new Error('Please upload a word document in ( docx ) / pdf file max 25 mb'), false); + } + else{ + cb(null, true); + } + } +}).single("file-doc"); +module.exports = (req, res, next) => { + try { + imageUpload(req,res, function(err){ + try { + + // if (err || err instanceof multer.MulterError){ + if (err){ + + res.status(500).send({ + "meta":{ + "auth": false, + "code" : 500, + "message" : req.fileValidationError || err.toString(), + }, + "data" :[] + }); + } else { + next(); + // console.log('The filename is ' + res.req.file.filename); + } + + } catch (error) { + console.log("error "+error); + } + }); + + } catch (error) { + console.log("error " + error); + error.message = error.message; + error.statusCode = 500; + throw error; + } +} \ No newline at end of file diff --git a/routes/po.js b/routes/po.js index 068d89f..69f9562 100644 --- a/routes/po.js +++ b/routes/po.js @@ -4,6 +4,9 @@ const pocontroller = require('../controllers/po'); const jwtauth = require('../middlewares/auth.js'); const uploadfile = require('../middlewares/multer/po-doc.js'); const uploadfileBoq = require('../middlewares/multer/poboq-csv.js'); + +const uploadfilePO = require('../middlewares/multer/singlepo.js'); + const router=express.Router(); router.get('/getlistvendor',[jwtauth], pocontroller.getListVendor); @@ -31,6 +34,8 @@ router.post('/releaseposap',[jwtauth], pocontroller.releasePOSAP); router.post('/unreleaseposap',[jwtauth], pocontroller.unreleasePOSAP); router.post('/createheaderposap',[jwtauth], pocontroller.createHeaderPOSAP); +// === Upload PO SAP +router.post('/uploadpo',[jwtauth, uploadfilePO], pocontroller.uploadPOSAP); // === PO Adjustment router.post('/newpoadj',[jwtauth, uploadfile], pocontroller.newpoadjustment);