From f6670321fc5fb6b06272a8266ac8455ec285287e Mon Sep 17 00:00:00 2001 From: Rizki Date: Fri, 6 Mar 2026 10:20:13 +0700 Subject: [PATCH] add field vendor in procjustification --- adapter/procjustificationadapter.js | 1730 ++++++++++++++++----------- controllers/po.js | 232 ++-- 2 files changed, 1128 insertions(+), 834 deletions(-) diff --git a/adapter/procjustificationadapter.js b/adapter/procjustificationadapter.js index 41a5c9c..4b59d52 100644 --- a/adapter/procjustificationadapter.js +++ b/adapter/procjustificationadapter.js @@ -1,731 +1,1063 @@ -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"); -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 ProcJustificationAdapter extends Adapter{ - constructor(){ - super(); - } +class ProcJustificationAdapter extends Adapter { + constructor() { + super(); + } - async queryPrList(req,callback){ - var apires = this.getApiResultDefined(); - try { - let nik = req.query.nik; - let isused = req.query.isused; - let swherenik=""; - if(nik){ - swherenik="iby='"+nik+"' and "; - } - - // let qry = "select * from vw_pr where status in(2,6) and isused="+isused+" and iby='"+nik+"' order by id asc"; - let qry = "select * from vw_pr where status in(2,6) and "+swherenik+" isused="+isused+" 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 queryNewProcJustification(req, callback){ - var apires = this.getApiResultDefined(); - try { - let idxpr= req.body.idxpr; - let prnumber= req.body.prnumber; - let procjustificationnumber = req.body.procjustificationnumber; - let idxjustification = req.body.idxjustification; - let justificationnumber = req.body.justificationnumber; - // let idxcreated = req.body.idxcreated; - // let nikcreated = req.body.nikcreated; - // let idxverified = req.body.idxverified; - // let nikverified = req.body.nikverified; - // let idxapproval = req.body.idxapproval; - // let nikapproval = req.body.nikapproval; - let nik = req.body.nik; - let ttd = JSON.parse(req.body.ttd); - let status = -1; - let statusdescription = "draft"; + async queryPrList(req, callback) { + var apires = this.getApiResultDefined(); + try { + let nik = req.query.nik; + let isused = req.query.isused; + let swherenik = ""; + if (nik) { + swherenik = "iby='" + nik + "' and "; + } - // let qry = "insert into tbl_procjustification "; - // qry = qry +"set idxpr='"+idxpr+"',prnumber='"+prnumber+"',procjustificationnumber='"+procjustificationnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',"; - // qry = qry +"status='"+status+"',statusdescription='"+statusdescription+"',idxcreated='"+idxcreated+"',nikcreated='"+nikcreated+"',idxverified='"+idxverified+"',nikverified='"+nikverified+"',"; - // qry = qry +"idxapproval='"+idxapproval+"',nikapproval='"+nikapproval+"',iby='"+nik+"',idt=now()"; - let qry = "insert into tbl_procjustification "; - qry = qry +"set idxpr='"+idxpr+"',prnumber='"+prnumber+"',procjustificationnumber='"+procjustificationnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',"; - qry = qry +"status='"+status+"',statusdescription='"+statusdescription+"',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 res = JSON.parse(JSON.stringify(result)); - var idxprocjustification = res.insertId; - - var created = ttd.dibuatoleh; - var verify = ttd.diverifikasioleh; - var approval = ttd.disetujuioleh; + // let qry = "select * from vw_pr where status in(2,6) and isused="+isused+" and iby='"+nik+"' order by id asc"; + let qry = + "select * from vw_pr where status in(2,6) and " + + swherenik + + " isused=" + + isused + + " order by id asc"; - Object.keys(created).forEach(function(key){ - var token =getToken(); - var idemployee = created[key]['idemployee']; - var nikcreated = created[key]['nik']; - - qry = "insert into tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',"; - qry = qry + "nik='"+nikcreated+"',category='CRE',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; - db.query(qry,[],function(err3,result3,fields3){return result3;}); - }); - - Object.keys(verify).forEach(function(key){ - var token =getToken(); - var idemployee = verify[key]['idemployee']; - var nikverify = verify[key]['nik']; - - // if(err) return console.log("error occurred") - qry = "insert into tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',"; - qry = qry + "nik='"+nikverify+"',category='VRF',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; - db.query(qry,[],function(err3,result3,fields3){return result3;}); - }); - - Object.keys(approval).forEach(function(key){ - var token =getToken(); - var idemployee = approval[key]['idemployee']; - var nikapproval = approval[key]['nik']; - - // if(err) return console.log("error occurred") - qry = "insert into tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',"; - qry = qry + "nik='"+nikapproval+"',category='APR',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; - db.query(qry,[],function(err3,result3,fields3){return result3;}); - }); + // 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); + } + } - apires.success = true; - apires.meta.message = "Saved Success"; - apires.data = res; - callback(null, apires); + async queryNewProcJustification(req, callback) { + var apires = this.getApiResultDefined(); + try { + let idxpr = req.body.idxpr; + let prnumber = req.body.prnumber; + let procjustificationnumber = req.body.procjustificationnumber; + let idxjustification = req.body.idxjustification; + let justificationnumber = req.body.justificationnumber; - } - }); - - } catch (err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - - } - } - - async queryUpdateProcJustification(req, filename, callback){ - var apires = this.getApiResultDefined(); - try { - //console.log(filename); - let idxprocjustification = req.body.idxprocjustification; - let idxpr= req.body.idxpr; - let prnumber= req.body.prnumber; - let procjustificationnumber = req.body.procjustificationnumber; - let idxjustification = req.body.idxjustification; - let justificationnumber = req.body.justificationnumber; - let filecategory = req.body.filecategory; - let descriptionfile = req.body.descriptionfile; - let numberoffile = req.body.numberoffile; - let ttd = JSON.parse(req.body.ttd); - let nik = req.body.nik; - let status = req.body.status; - let statusdescription = req.body.statusdescription; + let nik = req.body.nik; + let ttd = JSON.parse(req.body.ttd); + let vendors = JSON.parse(req.body.vendor); - // let qry = "update tbl_procjustification "; - // qry = qry +"set idxpr='"+idxpr+"',prnumber='"+prnumber+"',procjustificationnumber='"+procjustificationnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',"; - // qry = qry +"status='"+status+"',statusdescription='"+statusdescription+"',idxcreated='"+idxcreated+"',nikcreated='"+nikcreated+"',idxverified='"+idxverified+"',nikverified='"+nikverified+"',"; - // qry = qry +"idxapproval='"+idxapproval+"',nikapproval='"+nikapproval+"',uby='"+nik+"',udt=now() "; - // qry = qry +"where _idx='"+idxprocjustification+"'"; - let qry = "update tbl_procjustification "; - qry = qry +"set idxpr='"+idxpr+"',prnumber='"+prnumber+"',procjustificationnumber='"+procjustificationnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',"; - qry = qry +"status='"+status+"',statusdescription='"+statusdescription+"',uby='"+nik+"',udt=now() "; - qry = qry +"where _idx='"+idxprocjustification+"'"; - - // 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 _idx from tbl_procjustificationdoc "; - qry = qry +"where idxheader='"+idxprocjustification+"' and numberoffile='"+numberoffile+"' and filecategory='"+filecategory+"' 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{ + let status = -1; + let statusdescription = "draft"; - qry ="insert into tbl_procjustificationdoc "; - qry = qry + "set idxheader='"+idxprocjustification+"',numberoffile='"+numberoffile+"',filecategory='"+filecategory+"',"; - qry = qry + "filename='"+filename+"',descriptionfile='"+descriptionfile+"',iby='"+nik+"',idt=now()"; - if(results2.length>=1){ - qry ="update tbl_procjustificationdoc "; - qry = qry + "set idxheader='"+idxprocjustification+"',numberoffile='"+numberoffile+"',filecategory='"+filecategory+"',"; - qry = qry + "filename='"+filename+"',descriptionfile='"+descriptionfile+"',uby='"+nik+"',udt=now() "; - qry = qry +"where idxheader='"+idxprocjustification+"' and numberoffile='"+numberoffile+"' and filecategory='"+filecategory+"' and isdeleted=0"; - } - db.query(qry,[],function(err3,results3){ - if(err3){ - apires.meta['message'] = err3.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else{ - // === Update ttd - var created = ttd.dibuatoleh; - var verify = ttd.diverifikasioleh; - var approval = ttd.disetujuioleh; + let qry = "insert into tbl_procjustification "; + qry = + qry + + "set idxpr='" + + idxpr + + "',prnumber='" + + prnumber + + "',procjustificationnumber='" + + procjustificationnumber + + "',idxjustification='" + + idxjustification + + "',justificationnumber='" + + justificationnumber + + "',"; + qry = + qry + + "status='" + + status + + "',statusdescription='" + + statusdescription + + "',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 res = JSON.parse(JSON.stringify(result)); + var idxprocjustification = res.insertId; - Object.keys(created).forEach(function(key){ - var token =getToken(); - var id = created[key]['id']; - var idemployee = created[key]['idemployee']; - var nik = created[key]['nik']; - var action = created[key]['action']; - - qry = "insert into tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',"; - qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; - if(action=='update'){ - qry = "update tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',"; - qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() "; - qry = qry + "where _idx='"+id+"'"; - } - if(action=='delete'){ - qry = "update tbl_procjustificationttd set isdeleted=1,dby='"+nik+"',ddt=now() "; - qry = qry+ "where _idx='"+id+"'"; - } - - db.query(qry,[],function(err3,result3,fields3){return result3;}); - }); - - Object.keys(verify).forEach(function(key){ - var token =getToken(); - var id = verify[key]['id']; - var idemployee = verify[key]['idemployee']; - var nik = verify[key]['nik']; - var action = verify[key]['action']; - - qry = "insert into tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',"; - qry = qry + "nik='"+nik+"',category='VRF',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; - if(action=='update'){ - qry = "update tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',"; - qry = qry + "nik='"+nik+"',category='VRF',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() "; - qry = qry + "where _idx='"+id+"'"; - } - if(action=='delete'){ - qry = "update tbl_procjustificationttd set isdeleted=1,dby='"+nik+"',ddt=now() "; - qry = qry+ "where _idx='"+id+"'"; - } - - db.query(qry,[],function(err3,result3,fields3){return result3;}); - }); - - Object.keys(approval).forEach(function(key){ - var token =getToken(); - var id = approval[key]['id']; - var idemployee = approval[key]['idemployee']; - var nik = approval[key]['nik']; - var action = approval[key]['action']; - - qry = "insert into tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',"; - qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; - if(action=='update'){ - qry = "update tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',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_procjustificationttd set isdeleted=1,dby='"+nik+"',ddt=now() "; - qry = qry+ "where _idx='"+id+"'"; - } - - db.query(qry,[],function(err3,result3,fields3){return result3;}); - }); + var created = ttd.dibuatoleh; + var verify = ttd.diverifikasioleh; + var approval = ttd.disetujuioleh; - var res = JSON.parse(JSON.stringify(results3)); - apires.success = true; - apires.meta.message = "Updated Success"; - apires.data = res; - callback(null, apires); - } - }); - } - }); - - - + Object.keys(created).forEach(function (key) { + var token = getToken(); + var idemployee = created[key]["idemployee"]; + var nikcreated = created[key]["nik"]; - } - }); - - } catch (err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - - } - } - - async queryInquiryProcJustification(req, filename, callback){ - var apires = this.getApiResultDefined(); - try { - let idxprocjustification = req.body.idxprocjustification; - let filecategory = req.body.filecategory; - let numberoffile = req.body.numberoffile; - let descriptionfile = req.body.descriptionfile; - let nik = req.body.nik; - - let qry ="select _idx from tbl_procjustificationdoc "; - qry = qry +"where idxheader='"+idxprocjustification+"' and numberoffile='"+numberoffile+"' and filecategory='"+filecategory+"' 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_procjustificationttd set idxjustification='" + + idxprocjustification + + "',idemployee='" + + idemployee + + "',"; + qry = + qry + + "nik='" + + nikcreated + + "',category='CRE',token='" + + token + + "',imgqr='',iby='" + + nik + + "',idt=now()"; + db.query(qry, [], function (err3, result3, fields3) { + return result3; + }); + }); - qry ="insert into tbl_procjustificationdoc "; - qry = qry + "set idxheader='"+idxprocjustification+"',numberoffile='"+numberoffile+"',filecategory='"+filecategory+"',"; - qry = qry + "descriptionfile='"+descriptionfile+"',filename='"+filename+"',iby='"+nik+"',idt=now()"; - if(results2.length>=1){ - qry ="update tbl_procjustificationdoc "; - qry = qry + "set idxheader='"+idxprocjustification+"',numberoffile='"+numberoffile+"',filecategory='"+filecategory+"',"; - qry = qry + "descriptionfile='"+descriptionfile+"',filename='"+filename+"',uby='"+nik+"',udt=now() "; - qry = qry +"where idxheader='"+idxprocjustification+"' and numberoffile='"+numberoffile+"' and filecategory='"+filecategory+"' 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 querySignedProcJustification(req, callback){ - var apires = this.getApiResultDefined(); - try { - let idxprocjustification = req.body.idxprocjustification; - let nik = req.body.nik; - let idxsigned = req.body.idxsigned; - let idemployeesigned = req.body.idemployeesigned; - let niksigned = req.body.niksigned; - let datesigned = req.body.datesigned; - let idxsignedvrf = req.body.idxsignedvrf ?? 0; - let idemployeevrf = req.body.idemployeevrf ?? 0; - let niksignedvrf = req.body.niksignedvrf ?? 0; - let idxsignedapr = req.body.idxsignedapr ?? 0; - let idemployeeapr = req.body.idemployeeapr ?? 0; - let niksignedapr = req.body.niksignedapr ?? 0; - let status = req.body.status; - let statusdescription = req.body.statusdescription;//"Verified"; - var token = this.getToken(); - var filepng = token+".png"; - // token =getToken(); - token = token +","+niksigned; + Object.keys(verify).forEach(function (key) { + var token = getToken(); + var idemployee = verify[key]["idemployee"]; + var nikverify = verify[key]["nik"]; - // console.log(req.body); - let qry = "update tbl_procjustification "; - qry = qry +"set status='"+status+"',statusdescription='"+statusdescription+"',uby='"+nik+"',udt=now() "; - qry = qry +"where _idx='"+idxprocjustification+"'"; - - // 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(status==0){ - var qry = "update tbl_procjustificationttd set idemployee='"+idemployeevrf+"',nik='"+niksignedvrf+"',uby='"+nik+"',udt=now() "; - qry = qry +"where _idx='" + idxsignedvrf +"'"; - db.query(qry,[],function(err,result,fields){}); - - var qry = "update tbl_procjustificationttd set idemployee='"+idemployeeapr+"',nik='"+niksignedapr+"',uby='"+nik+"',udt=now() "; - qry = qry +"where _idx='" + idxsignedapr +"'"; - db.query(qry,[],function(err,result,fields){}); - } - QRCode.toDataURL(token, function (err, code) { - if(err) { - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - var imageBuffer = Adapter.decodeBase64Image(code); - fs.writeFile('./assets/pngproc/'+filepng, imageBuffer.data, function(err) { - // console.log(err); - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback(err.toString(), apires); - } - else{ - // var qry = "update tbl_procjustificationttd set token=md5('"+token+"'),imgqr='"+filepng+"',issigned='1',signeddate='"+datesigned+"',uby='"+nik+"',udt=now() "; - var qry = "update tbl_procjustificationttd set idemployee='"+idemployeesigned+"',nik='"+niksigned+"',token='"+token+"',imgqr='"+filepng+"',issigned='1',signeddate='"+datesigned+"',uby='"+nik+"',udt=now() "; - qry = qry +"where _idx='" + idxsigned +"'"; - // 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; - // === - qry = "select status from tbl_procjustification where _idx='"+idxprocjustification+"'"; + // if(err) return console.log("error occurred") + qry = + "insert into tbl_procjustificationttd set idxjustification='" + + idxprocjustification + + "',idemployee='" + + idemployee + + "',"; + qry = + qry + + "nik='" + + nikverify + + "',category='VRF',token='" + + token + + "',imgqr='',iby='" + + nik + + "',idt=now()"; + db.query(qry, [], function (err3, result3, fields3) { + return result3; + }); + }); - db.query(qry,[],function(err,result2,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('err',apires); - } - else - { - var status = result2[0]['status']; - var isverified=0; - if(status==1){isverified = 1;} - apires.data = { - "isverified":isverified, - "token":token, - "urltoken": process.env.BASEURL+"/main/getimageinfo?route=pngproc&name="+filepng - }; - callback(null, apires); - } - }); - - } - }); - } - }); - } - }); - } - }); - - } catch (err) { - apires.meta.code = 500; - apires.meta.message = err.toString(); - callback('error',apires); - - } - } + Object.keys(approval).forEach(function (key) { + var token = getToken(); + var idemployee = approval[key]["idemployee"]; + var nikapproval = approval[key]["nik"]; - async queryDeleteProcJustification(req, callback){ - var apires = this.getApiResultDefined(); - try { - let id = req.body.id; - let remarkdeleted = req.body.remarkdeleted; - let nik = req.body.nik; + // if(err) return console.log("error occurred") + qry = + "insert into tbl_procjustificationttd set idxjustification='" + + idxprocjustification + + "',idemployee='" + + idemployee + + "',"; + qry = + qry + + "nik='" + + nikapproval + + "',category='APR',token='" + + token + + "',imgqr='',iby='" + + nik + + "',idt=now()"; + db.query(qry, [], function (err3, result3, fields3) { + return result3; + }); + }); - let qry = "update tbl_procjustification "; - qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now()"; - qry = qry +" where _idx='"+id+"'"; + /* ========================= + INSERT VENDORS + ========================= */ - 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 queryProcJustificationDetail(req,callback){ - var apires = this.getApiResultDefined(); - try { - - let _idx= req.query.id; + if (vendors && vendors.length > 0) { + vendors.forEach(function (vendor, i) { + let numberoffile = i + 1; - let qry = "select * from vw_procjustification where id='"+_idx+"'"; + let qryVendor = "insert into tbl_procjustificationvendor "; + qryVendor += "set idxprocjustification='" + idxprocjustification + "',"; + qryVendor += "numberoffile='" + numberoffile + "',"; + qryVendor += "name='" + vendor.vendorname + "',"; + qryVendor += "address='" + vendor.address + "',"; + qryVendor += "phone='" + vendor.phone + "',"; + qryVendor += "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 - { - let dataRows = result.length; - if(result.length<=0){ - apires.meta.message = "Record not found"; - callback('',apires); - } - else{ - Object.keys(result).forEach(function(key){ - qry = "select * from vw_procjustificationdoc where idxheader='"+_idx+"' order by id asc"; - // console.log(qry); - db.query(qry,[],function(err,result2,fields){ - if(err){ - apires.meta['message'] = err.toString(); - apires.meta['code'] = 500; - callback('error',apires); - } - else{ - result[key]['filedoc'] = JSON.parse(JSON.stringify(result2)); - qry = "select * from vw_procjustificationttd where idxheader='"+_idx+"' order by id 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 dibuatoleh = []; - var diverifikasioleh = []; - var disetujuioleh = []; - Object.keys(result3).forEach(function(key2){ - if(result3[key2]['category']=='CRE'){ - dibuatoleh.push(JSON.parse(JSON.stringify(result3[key2]))); - } - else if(result3[key2]['category']=='VRF'){ - diverifikasioleh.push(JSON.parse(JSON.stringify(result3[key2]))); - }else{ - disetujuioleh.push(JSON.parse(JSON.stringify(result3[key2]))); - } - - }); - result[key]['ttd'] = { - "dibuatoleh" : dibuatoleh, - "diverifikasioleh" : diverifikasioleh, - "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); - } - - } - }); - - // 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); - } - } + db.query(qryVendor, [], function (errVendor, resultVendor) { + if (!errVendor) { + let idxvendor = resultVendor.insertId; - async queryProcJustificationList(req,callback){ - var apires = this.getApiResultDefined(); - try { - - let limit = req.body.limit; - let offset = req.body.offset; - let keyword = req.body.keyword; - let nik = req.body.nik; - let status = req.body.status; + /* ========================= + INSERT VENDOR BOQ + ========================= */ + if (vendor.boq && vendor.boq.length > 0) { + vendor.boq.forEach(function (boq) { + let qryBoq = "insert into tbl_procjustificationvendorboq "; + qryBoq += "set idxprocjustificationvendor='" + idxvendor + "',"; + qryBoq += "items='" + boq.items + "',"; + qryBoq += "qty='" + boq.qty + "',"; + qryBoq += "unitprice='" + boq.unitprice + "',"; + qryBoq += "units='" + boq.units + "',"; + qryBoq += "total='" + boq.total + "',"; + qryBoq += "iby='" + nik + "',idt=now()"; - let swherenik=""; - if(nik){ - swherenik="iby='"+nik+"' and "; - } + db.query(qryBoq, [], function (errBoq, resBoq) {}); + }); + } + } + }); + }); + } - // let qry = "select * from vw_procjustification "; - // qry = qry +"where (trim(prnumber) like '%"+ keyword +"%' or trim(justificationnumber) like '%"+ keyword +"%') "; - // qry = qry +"and iby='"+nik+"' and status in("+status+") order by id asc"; - let qry = "select * from vw_procjustification "; - qry = qry +"where (trim(prnumber) like '%"+ keyword +"%' or trim(justificationnumber) like '%"+ keyword +"%') "; - qry = qry +"and "+swherenik+" status in("+status+") order by id asc"; + apires.success = true; + apires.meta.message = "Saved Success"; + apires.data = res; + callback(null, apires); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } - // 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_procjustification "; - qry = qry +"where (trim(prnumber) like '%"+ keyword +"%' or trim(justificationnumber) like '%"+ keyword +"%') "; - qry = qry +"and "+swherenik+" status in("+status+") order by id 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 queryUpdateProcJustification(req, filename, callback) { + var apires = this.getApiResultDefined(); + try { + //console.log(filename); + let idxprocjustification = req.body.idxprocjustification; + let idxpr = req.body.idxpr; + let prnumber = req.body.prnumber; + let procjustificationnumber = req.body.procjustificationnumber; + let idxjustification = req.body.idxjustification; + let justificationnumber = req.body.justificationnumber; + let filecategory = req.body.filecategory; + let descriptionfile = req.body.descriptionfile; + let numberoffile = req.body.numberoffile; + let ttd = JSON.parse(req.body.ttd); + let nik = req.body.nik; + let status = req.body.status; + let statusdescription = req.body.statusdescription; - async queryUpdateStatusProcJustification(req, callback) { - try { - var apires = this.getApiResultDefined(); - var idxjustification = req.body.idxjustification; - var status = req.body.status; - var statusdescription = req.body.statusdescription; - var nik = req.body.nik; + // let qry = "update tbl_procjustification "; + // qry = qry +"set idxpr='"+idxpr+"',prnumber='"+prnumber+"',procjustificationnumber='"+procjustificationnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',"; + // qry = qry +"status='"+status+"',statusdescription='"+statusdescription+"',idxcreated='"+idxcreated+"',nikcreated='"+nikcreated+"',idxverified='"+idxverified+"',nikverified='"+nikverified+"',"; + // qry = qry +"idxapproval='"+idxapproval+"',nikapproval='"+nikapproval+"',uby='"+nik+"',udt=now() "; + // qry = qry +"where _idx='"+idxprocjustification+"'"; + let qry = "update tbl_procjustification "; + qry = + qry + + "set idxpr='" + + idxpr + + "',prnumber='" + + prnumber + + "',procjustificationnumber='" + + procjustificationnumber + + "',idxjustification='" + + idxjustification + + "',justificationnumber='" + + justificationnumber + + "',"; + qry = + qry + + "status='" + + status + + "',statusdescription='" + + statusdescription + + "',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + idxprocjustification + "'"; - var qry = "update tbl_procjustification set status='" + status +"',statusdescription='" + statusdescription +"',uby='"+nik+"',udt=now() "; - qry = qry +"where _idx='" + idxjustification +"'"; - 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); - } - } - + // 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 _idx from tbl_procjustificationdoc "; + qry = + qry + + "where idxheader='" + + idxprocjustification + + "' and numberoffile='" + + numberoffile + + "' and filecategory='" + + filecategory + + "' 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_procjustificationdoc "; + qry = + qry + + "set idxheader='" + + idxprocjustification + + "',numberoffile='" + + numberoffile + + "',filecategory='" + + filecategory + + "',"; + qry = + qry + + "filename='" + + filename + + "',descriptionfile='" + + descriptionfile + + "',iby='" + + nik + + "',idt=now()"; + if (results2.length >= 1) { + qry = "update tbl_procjustificationdoc "; + qry = + qry + + "set idxheader='" + + idxprocjustification + + "',numberoffile='" + + numberoffile + + "',filecategory='" + + filecategory + + "',"; + qry = + qry + + "filename='" + + filename + + "',descriptionfile='" + + descriptionfile + + "',uby='" + + nik + + "',udt=now() "; + qry = + qry + + "where idxheader='" + + idxprocjustification + + "' and numberoffile='" + + numberoffile + + "' and filecategory='" + + filecategory + + "' and isdeleted=0"; + } + db.query(qry, [], function (err3, results3) { + if (err3) { + apires.meta["message"] = err3.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + // === Update ttd + var created = ttd.dibuatoleh; + var verify = ttd.diverifikasioleh; + var approval = ttd.disetujuioleh; + Object.keys(created).forEach(function (key) { + var token = getToken(); + var id = created[key]["id"]; + var idemployee = created[key]["idemployee"]; + var nik = created[key]["nik"]; + var action = created[key]["action"]; + + qry = + "insert into tbl_procjustificationttd set idxjustification='" + + idxprocjustification + + "',idemployee='" + + idemployee + + "',"; + qry = + qry + + "nik='" + + nik + + "',category='CRE',token='" + + token + + "',imgqr='',iby='" + + nik + + "',idt=now()"; + if (action == "update") { + qry = + "update tbl_procjustificationttd set idxjustification='" + + idxprocjustification + + "',idemployee='" + + idemployee + + "',"; + qry = + qry + + "nik='" + + nik + + "',category='CRE',token='" + + token + + "',imgqr='',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + id + "'"; + } + if (action == "delete") { + qry = + "update tbl_procjustificationttd set isdeleted=1,dby='" + + nik + + "',ddt=now() "; + qry = qry + "where _idx='" + id + "'"; + } + + db.query(qry, [], function (err3, result3, fields3) { + return result3; + }); + }); + + Object.keys(verify).forEach(function (key) { + var token = getToken(); + var id = verify[key]["id"]; + var idemployee = verify[key]["idemployee"]; + var nik = verify[key]["nik"]; + var action = verify[key]["action"]; + + qry = + "insert into tbl_procjustificationttd set idxjustification='" + + idxprocjustification + + "',idemployee='" + + idemployee + + "',"; + qry = + qry + + "nik='" + + nik + + "',category='VRF',token='" + + token + + "',imgqr='',iby='" + + nik + + "',idt=now()"; + if (action == "update") { + qry = + "update tbl_procjustificationttd set idxjustification='" + + idxprocjustification + + "',idemployee='" + + idemployee + + "',"; + qry = + qry + + "nik='" + + nik + + "',category='VRF',token='" + + token + + "',imgqr='',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + id + "'"; + } + if (action == "delete") { + qry = + "update tbl_procjustificationttd set isdeleted=1,dby='" + + nik + + "',ddt=now() "; + qry = qry + "where _idx='" + id + "'"; + } + + db.query(qry, [], function (err3, result3, fields3) { + return result3; + }); + }); + + Object.keys(approval).forEach(function (key) { + var token = getToken(); + var id = approval[key]["id"]; + var idemployee = approval[key]["idemployee"]; + var nik = approval[key]["nik"]; + var action = approval[key]["action"]; + + qry = + "insert into tbl_procjustificationttd set idxjustification='" + + idxprocjustification + + "',idemployee='" + + idemployee + + "',"; + qry = + qry + + "nik='" + + nik + + "',category='APR',token='" + + token + + "',imgqr='',iby='" + + nik + + "',idt=now()"; + if (action == "update") { + qry = + "update tbl_procjustificationttd set idxjustification='" + + idxprocjustification + + "',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_procjustificationttd set isdeleted=1,dby='" + + nik + + "',ddt=now() "; + qry = qry + "where _idx='" + id + "'"; + } + + db.query(qry, [], function (err3, result3, fields3) { + return result3; + }); + }); + + 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 queryInquiryProcJustification(req, filename, callback) { + var apires = this.getApiResultDefined(); + try { + let idxprocjustification = req.body.idxprocjustification; + let filecategory = req.body.filecategory; + let numberoffile = req.body.numberoffile; + let descriptionfile = req.body.descriptionfile; + let nik = req.body.nik; + + let qry = "select _idx from tbl_procjustificationdoc "; + qry = + qry + + "where idxheader='" + + idxprocjustification + + "' and numberoffile='" + + numberoffile + + "' and filecategory='" + + filecategory + + "' 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_procjustificationdoc "; + qry = + qry + + "set idxheader='" + + idxprocjustification + + "',numberoffile='" + + numberoffile + + "',filecategory='" + + filecategory + + "',"; + qry = + qry + + "descriptionfile='" + + descriptionfile + + "',filename='" + + filename + + "',iby='" + + nik + + "',idt=now()"; + if (results2.length >= 1) { + qry = "update tbl_procjustificationdoc "; + qry = + qry + + "set idxheader='" + + idxprocjustification + + "',numberoffile='" + + numberoffile + + "',filecategory='" + + filecategory + + "',"; + qry = + qry + + "descriptionfile='" + + descriptionfile + + "',filename='" + + filename + + "',uby='" + + nik + + "',udt=now() "; + qry = + qry + + "where idxheader='" + + idxprocjustification + + "' and numberoffile='" + + numberoffile + + "' and filecategory='" + + filecategory + + "' 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 querySignedProcJustification(req, callback) { + var apires = this.getApiResultDefined(); + try { + let idxprocjustification = req.body.idxprocjustification; + let nik = req.body.nik; + let idxsigned = req.body.idxsigned; + let idemployeesigned = req.body.idemployeesigned; + let niksigned = req.body.niksigned; + let datesigned = req.body.datesigned; + let idxsignedvrf = req.body.idxsignedvrf ?? 0; + let idemployeevrf = req.body.idemployeevrf ?? 0; + let niksignedvrf = req.body.niksignedvrf ?? 0; + let idxsignedapr = req.body.idxsignedapr ?? 0; + let idemployeeapr = req.body.idemployeeapr ?? 0; + let niksignedapr = req.body.niksignedapr ?? 0; + let status = req.body.status; + let statusdescription = req.body.statusdescription; //"Verified"; + var token = this.getToken(); + var filepng = token + ".png"; + // token =getToken(); + token = token + "," + niksigned; + + // console.log(req.body); + let qry = "update tbl_procjustification "; + qry = + qry + + "set status='" + + status + + "',statusdescription='" + + statusdescription + + "',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + idxprocjustification + "'"; + + // 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 (status == 0) { + var qry = + "update tbl_procjustificationttd set idemployee='" + + idemployeevrf + + "',nik='" + + niksignedvrf + + "',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + idxsignedvrf + "'"; + db.query(qry, [], function (err, result, fields) {}); + + var qry = + "update tbl_procjustificationttd set idemployee='" + + idemployeeapr + + "',nik='" + + niksignedapr + + "',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + idxsignedapr + "'"; + db.query(qry, [], function (err, result, fields) {}); + } + QRCode.toDataURL(token, function (err, code) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + var imageBuffer = Adapter.decodeBase64Image(code); + fs.writeFile("./assets/pngproc/" + filepng, imageBuffer.data, function (err) { + // console.log(err); + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback(err.toString(), apires); + } else { + // var qry = "update tbl_procjustificationttd set token=md5('"+token+"'),imgqr='"+filepng+"',issigned='1',signeddate='"+datesigned+"',uby='"+nik+"',udt=now() "; + var qry = + "update tbl_procjustificationttd set idemployee='" + + idemployeesigned + + "',nik='" + + niksigned + + "',token='" + + token + + "',imgqr='" + + filepng + + "',issigned='1',signeddate='" + + datesigned + + "',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + idxsigned + "'"; + // 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; + // === + qry = + "select status from tbl_procjustification where _idx='" + + idxprocjustification + + "'"; + + db.query(qry, [], function (err, result2, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("err", apires); + } else { + var status = result2[0]["status"]; + var isverified = 0; + if (status == 1) { + isverified = 1; + } + apires.data = { + "isverified": isverified, + "token": token, + "urltoken": + process.env.BASEURL + + "/main/getimageinfo?route=pngproc&name=" + + filepng, + }; + callback(null, apires); + } + }); + } + }); + } + }); + } + }); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } + + async queryDeleteProcJustification(req, callback) { + var apires = this.getApiResultDefined(); + try { + let id = req.body.id; + let remarkdeleted = req.body.remarkdeleted; + let nik = req.body.nik; + + let qry = "update tbl_procjustification "; + qry = + qry + "set isdeleted=1,remarkdeleted='" + remarkdeleted + "',dby='" + nik + "',ddt=now()"; + qry = qry + " where _idx='" + id + "'"; + + 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 queryProcJustificationDetail(req, callback) { + var apires = this.getApiResultDefined(); + try { + let _idx = req.query.id; + + let qry = "select * from vw_procjustification where id='" + _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 { + Object.keys(result).forEach(function (key) { + qry = + "select * from vw_procjustificationdoc where idxheader='" + + _idx + + "' order by id asc"; + // console.log(qry); + db.query(qry, [], function (err, result2, fields) { + if (err) { + apires.meta["message"] = err.toString(); + apires.meta["code"] = 500; + callback("error", apires); + } else { + result[key]["filedoc"] = JSON.parse(JSON.stringify(result2)); + qry = + "select * from vw_procjustificationttd where idxheader='" + + _idx + + "' order by id 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 dibuatoleh = []; + var diverifikasioleh = []; + var disetujuioleh = []; + Object.keys(result3).forEach(function (key2) { + if (result3[key2]["category"] == "CRE") { + dibuatoleh.push(JSON.parse(JSON.stringify(result3[key2]))); + } else if (result3[key2]["category"] == "VRF") { + diverifikasioleh.push(JSON.parse(JSON.stringify(result3[key2]))); + } else { + disetujuioleh.push(JSON.parse(JSON.stringify(result3[key2]))); + } + }); + result[key]["ttd"] = { + "dibuatoleh": dibuatoleh, + "diverifikasioleh": diverifikasioleh, + "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); + } + } + }); + + // 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 queryProcJustificationList(req, callback) { + var apires = this.getApiResultDefined(); + try { + let limit = req.body.limit; + let offset = req.body.offset; + let keyword = req.body.keyword; + let nik = req.body.nik; + let status = req.body.status; + + let swherenik = ""; + if (nik) { + swherenik = "iby='" + nik + "' and "; + } + + // let qry = "select * from vw_procjustification "; + // qry = qry +"where (trim(prnumber) like '%"+ keyword +"%' or trim(justificationnumber) like '%"+ keyword +"%') "; + // qry = qry +"and iby='"+nik+"' and status in("+status+") order by id asc"; + let qry = "select * from vw_procjustification "; + qry = + qry + + "where (trim(prnumber) like '%" + + keyword + + "%' or trim(justificationnumber) like '%" + + keyword + + "%') "; + qry = qry + "and " + swherenik + " status in(" + status + ") 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) { + 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_procjustification "; + qry = + qry + + "where (trim(prnumber) like '%" + + keyword + + "%' or trim(justificationnumber) like '%" + + keyword + + "%') "; + qry = + qry + + "and " + + swherenik + + " status in(" + + status + + ") order by id 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 queryUpdateStatusProcJustification(req, callback) { + try { + var apires = this.getApiResultDefined(); + var idxjustification = req.body.idxjustification; + var status = req.body.status; + var statusdescription = req.body.statusdescription; + var nik = req.body.nik; + + var qry = + "update tbl_procjustification set status='" + + status + + "',statusdescription='" + + statusdescription + + "',uby='" + + nik + + "',udt=now() "; + qry = qry + "where _idx='" + idxjustification + "'"; + 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); + } + } } -module.exports = ProcJustificationAdapter; \ No newline at end of file +module.exports = ProcJustificationAdapter; diff --git a/controllers/po.js b/controllers/po.js index 71d419a..b482f96 100644 --- a/controllers/po.js +++ b/controllers/po.js @@ -119,89 +119,74 @@ exports.createPOSAPold = (req, res) => { // console.log(resdata.data.length); // poadapter.sendResponse(statusCode,resdata, res); if (resdata.data.length > 0) { - const idxpr = resdata.data[0]["idxpr"] ?? 0; + const data = resdata?.data?.[0] ?? {}; - let comp_code = "1603"; - let doc_type = "POTL"; - let creat_date = req.body.createdate; - let created_by = req.body.createdby; - let vendor = resdata.data[0]["vendorid"]; //"TL30000001"; - let purch_org = "1603"; - let pur_group = "TIL"; - let currency = "USD"; - let doc_date = resdata.data[0]["podate"]; - let vper_start = resdata.data[0]["vper_start"]; - let vper_end = resdata.data[0]["vper_end"]; - // === PO ITEM - let po_number = "000"; - let description = resdata.data[0]["podescription"]; //req.body.podescription; - // let quantity="1"; - let quantity = resdata.data[0]["totalqty"].toString().replace(",", "."); // TotalPo / TotalValue PR - let po_unit = "PKT"; - let net_price = req.body.totalpo; - let final_inv = "X"; - let gr_basediv = "X"; - let preq_no = resdata.data[0]["prnumber"]; - let preq_item = "00010"; - let poitem = - preq_item + - "|" + - description + - "|" + - quantity + - "|" + - po_unit + - "|" + - net_price + - "|" + - final_inv + - "|" + - gr_basediv + - "|" + - preq_no + - "|" + - preq_item; - let poschedule = "00010|" + resdata.data[0]["vper_end"]; - let zzctrnum = resdata.data[0]["identifyprojectnumber"].toString().trim(); //req.body.podescription; - const url = - baseurlsap + - "/createPo?comp_code=" + - comp_code + - "&doc_type=" + - doc_type + - "&creat_date=" + - creat_date + - "&created_by=" + - created_by + - "&vendor=" + - vendor + - "&purch_org=" + - purch_org + - "&pur_group=" + - pur_group + - "¤cy=" + - currency + - "&doc_date=" + - doc_date + - "&vper_start=" + - vper_start + - "&vper_end=" + - vper_end + - "&poitem[]=" + - poitem + - "&poschedule[]=" + - poschedule + - "&zzctrnum=" + - zzctrnum; - let resuri = { - "method": "POST", - // 'url': baseurlsap+'/createPo', - "url": url, - "headers": { + const { + idxpr = 0, + vendorid = "", + podate = "", + vper_start = "", + vper_end = "", + podescription = "", + totalqty = 0, + prnumber = "", + identifyprojectnumber = "", + } = data; + + // ===== HEADER PARAM ===== + const headerParams = { + comp_code: "1603", + doc_type: "POTL", + creat_date: req.body.createdate, + created_by: req.body.createdby, + vendor: vendorid, + purch_org: "1603", + pur_group: "TIL", + currency: "USD", + doc_date: podate, + vper_start, + vper_end, + zzctrnum: identifyprojectnumber?.toString().trim(), + }; + + // ===== ITEM PARAM ===== + const preq_item = "00010"; + const quantity = Number(totalqty).toString().replace(",", "."); + const po_unit = "PKT"; + const net_price = req.body.totalpo; + const final_inv = "X"; + const gr_basediv = "X"; + + const poitem = [ + preq_item, + podescription, + quantity, + po_unit, + net_price, + final_inv, + gr_basediv, + prnumber, + preq_item, + ].join("|"); + + const poschedule = [preq_item, vper_end].join("|"); + + // ===== BUILD QUERY ===== + const params = new URLSearchParams({ + ...headerParams, + "poitem[]": poitem, + "poschedule[]": poschedule, + }).toString(); + + const url = `${baseurlsap}/createPo?${params}`; + + const resuri = { + method: "POST", + url, + headers: { "Content-Type": "application/json", "x-api-key": apikeysap, }, - // form: formjson, }; const logData = { @@ -790,64 +775,41 @@ exports.createHeaderPOSAP = (req, res) => { // console.log(resdata.data.length); // poadapter.sendResponse(statusCode,resdata, res); if (resdata.data.length > 0) { - const idxpr = resdata.data[0]["idxpr"] ?? 0; + const data = resdata?.data?.[0] ?? {}; + const { + idxpr = 0, + identifyprojectnumber = "", + contractdescription = "", + contractperiodfrom = "", + contractperiodto = "", + vendorname = "", + } = data; - let identifyprojectnumber = resdata.data[0]["identifyprojectnumber"]; - let contractdescription = resdata.data[0]["contractdescription"]; - let contractperiodfrom = resdata.data[0]["contractperiodfrom"]; - let contractperiodto = resdata.data[0]["contractperiodto"]; - let im_ctrnum = identifyprojectnumber; - let im_bukrs = "1603"; - let im_werks = "1603"; - let im_ctrdsc = contractdescription; - let im_ctrtor = resdata.data[0]["vendorname"]; - let im_contract = identifyprojectnumber; - let im_contract2 = identifyprojectnumber; - let im_contdesc = contractdescription; - let im_spmon0 = contractperiodfrom; - let im_spmon1 = contractperiodto; - let im_ctrmax = 2; - let im_waers2 = "USD"; - let im_ctrval = "0"; - let im_ctrval2 = "0"; - let im_action = "I"; + // Static / default values + const params = { + im_ctrnum: identifyprojectnumber, + im_bukrs: "1603", + im_werks: "1603", + im_ctrdsc: contractdescription, + im_ctrtor: vendorname, + im_contract: identifyprojectnumber, + im_contract2: identifyprojectnumber, + im_contdesc: contractdescription, + im_spmon0: contractperiodfrom, + im_spmon1: contractperiodto, + im_ctrmax: 2, + im_waers2: "USD", + im_ctrval: "0", + im_ctrval2: "0", + im_action: "I", + }; - const url = - baseurlsap + - "/zcpxmm003?im_ctrnum=" + - im_ctrnum + - "&im_bukrs=" + - im_bukrs + - "&im_werks=" + - im_werks + - "&im_ctrdsc=" + - im_ctrdsc + - "&im_ctrtor=" + - im_ctrtor + - "&im_contract=" + - im_contract + - "&im_contract2=" + - im_contract2 + - "&im_contdesc=" + - im_contdesc + - "&im_spmon0=" + - im_spmon0 + - "&im_spmon1=" + - im_spmon1 + - "&im_ctrmax=" + - im_ctrmax + - "&im_waers2=" + - im_waers2 + - "&im_ctrval=" + - im_ctrval + - "&im_ctrval2=" + - im_ctrval2 + - "&im_action=" + - im_action; - let resuri = { - "method": "POST", - "url": url, - "headers": { + // Build URL safely + const url = `${baseurlsap}/zcpxmm003?${new URLSearchParams(params).toString()}`; + const resuri = { + method: "POST", + url, + headers: { "Content-Type": "application/json", "x-api-key": apikeysap, },