commit a3c945a60a1692a47c76204a3d7470b02df191d8 Author: asansal Date: Fri Dec 5 06:21:42 2025 +0700 first commit diff --git a/adapter/bastadapter.js b/adapter/bastadapter.js new file mode 100644 index 0000000..75e1810 --- /dev/null +++ b/adapter/bastadapter.js @@ -0,0 +1,419 @@ +const db=require('../config/dbproc.js'); +const Adapter=require('./dbadapter.js'); +const fs = require("fs"); + + +class BastAdapter extends Adapter{ + constructor(){ + super(); + } + + async queryBastActivityList(req,callback){ + var apires = this.getApiResultDefined(); + try { + let limit = req.query.limit; + let offset = req.query.offset; + let keyword = req.query.keyword; + + let qry = "select * from vw_bastactivitylist "; + qry = qry + "where activityname like '%" + keyword + "%' "; + qry = qry + "order by idxbudget asc limit " + offset + ", " + limit; + // let qry = "select * from vw_basthandoverlist "; + // qry = qry + "where bastnumber 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_bastactivitylist "; + qry = qry + "where activityname like '%" + keyword + "%' "; + qry = qry + "order by idxbudget asc limit " + offset + ", " + limit; + // qry = "select * from vw_basthandoverlist "; + // qry = qry + "where bastnumber 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 queryBastHandoverList(req,callback){ + var apires = this.getApiResultDefined(); + try { + let limit = req.query.limit; + let offset = req.query.offset; + let keyword = req.query.keyword; + + // let qry = "select * from vw_bastactivitylist "; + // qry = qry + "where activityname like '%" + keyword + "%' "; + // qry = qry + "order by idxbudget asc limit " + offset + ", " + limit; + let qry = "select * from vw_basthandoverlist "; + qry = qry + "where bastnumber like '%" + keyword + "%' "; + qry = qry + "order by _idx 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_bastactivitylist "; + // qry = qry + "where activityname like '%" + keyword + "%' "; + // qry = qry + "order by idxbudget asc limit " + offset + ", " + limit; + qry = "select * from vw_basthandoverlist "; + qry = qry + "where bastnumber 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 queryBastActivityListDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + let idxpr = req.query.idxpr; + + let qry = "select * from vw_bastactivitylistdetail "; + qry = qry + "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 queryCreateBAST(filedoctemplate, req,callback){ + var apires = this.getApiResultDefined(); + try { + let idxpoboq = req.body.idxpoboq; + let idxpo = req.body.idxpo; + let totalpo = req.body.totalpo; + let bastnumber = req.body.bastnumber; + let bastdates = req.body.bastdates; + let description = req.body.description; + let idxvendor = req.body.idxvendor; + let vendorcode = req.body.vendorcode; + let vendorname = req.body.vendorname; + let povendornumber = req.body.povendornumber; + let status = 0; + let statusdescription = "Submitted"; + let nik = req.body.nik; + + // let qry = "insert into tbl_bast set idxpo='"+idxpo+"',bastnumber='"+bastnumber+"',bastdates='"+bastdates+"',"; + // qry = qry + "description='"+description+"',idxvendor='"+idxvendor+"',vendorcode='"+vendorcode+"',vendorname='"+vendorname+"',"; + // qry = qry + "totalpo='"+totalpo+"',povendornumber='"+povendornumber+"',filedoctemplate='"+filedoctemplate+"',status='"+status+"',"; + // qry = qry + "statusdescription='"+statusdescription+"',laststatusupdate=now(),iby='"+nik+"',idt=now()"; + let qry = "insert into tbl_bast set idxpo='"+idxpo+"',bastnumber='"+bastnumber+"',bastdates='"+bastdates+"',"; + qry = qry + "description='"+description+"',idxvendor='"+idxvendor+"',vendorcode='"+vendorcode+"',vendorname='"+vendorname+"',"; + qry = qry + "totalpo='"+totalpo+"',povendornumber='"+povendornumber+"',filepdf='"+filedoctemplate+"',ismergedoc=1,status='"+status+"',"; + qry = qry + "statusdescription='"+statusdescription+"',laststatusupdate=now(),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 ="insert into tbl_bastdetail(idxheader,idxpoboq,description,qty,units,poamount,iby,idt) "; + // qry = qry + "select '"+idxheader+"', _idx , description, qty, units, poamount, '"+nik+"',now() "; + // qry = qry + "from tbl_poboq where _idx in("+idxpoboq+")"; + qry ="insert into tbl_bastdetail(idxheader,idxpoboq,description,qty,units,poamount,iby,idt) "; + qry = qry + "select '"+idxheader+"', _idx , description, qty, units, poamount, '"+nik+"',now() "; + qry = qry + "from tbl_poboq where _idx in("+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.data = JSON.parse(JSON.stringify(result)); + apires.meta.code = 200; + callback(null, apires); + } + }); + + } + }); + } + catch(err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryUploadHandoverSign(filehandoversign, req,callback){ + var apires = this.getApiResultDefined(); + try { + let idxbast = req.body.idxbast; + let nik = req.body.nik; + let bastdates=req.body.bastdates; + let description=req.body.description; + + + let qry = "update tbl_bast set status=1,statusdescription='Upload Handover',bastdateshandover='"+bastdates+"',descriptionhandover='"+description+"',"; + qry +="filehandoversign='"+filehandoversign+"',uby='"+nik+"',udt=now() where _idx='"+idxbast+"'"; + // let qry = "update tbl_bast set filehandoversign='"+filehandoversign+"',uby='"+nik+"',udt=now() where _idx='"+idxbast+"'"; + + // 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.meta.code = 200; + callback(null, apires); + } + }); + } + catch(err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryBastList(req,callback){ + var apires = this.getApiResultDefined(); + try { + let limit = req.query.limit; + let offset = req.query.offset; + let keyword = req.query.keyword; + + let qry = "select * from vw_bast "; + qry = qry + "where description like '%" + keyword + "%' and status=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){ + 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_bast "; + qry = qry + "where description 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 queryBastDetailList(req,callback){ + var apires = this.getApiResultDefined(); + try { + let idxbast = req.query.idxbast; + + let qry = "select * from vw_bast "; + qry = qry + "where _idx='"+idxbast+"'"; + + // 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.data.push({ + "results": JSON.parse(JSON.stringify(result)) + }); + callback(null, apires); + } + }); + } + catch(err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryUpdateHandover(req,filehandover, callback) { + try { + var apires = this.getApiResultDefined(); + var idxbast = req.body.idxbast; + var status = req.body.status; + var statusdescription = req.body.statusdescription; + var nik = req.body.nik; + + var qry = "update tbl_bast set filehandover='"+filehandover+"',status='" + status +"',statusdescription='" + statusdescription +"',uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='" + idxbast +"'"; + 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); + } + } +} + +module.exports = BastAdapter; + + diff --git a/adapter/budgetadapter.js b/adapter/budgetadapter.js new file mode 100644 index 0000000..b12d335 --- /dev/null +++ b/adapter/budgetadapter.js @@ -0,0 +1,570 @@ +const db=require('../config/dbproc.js'); +const Adapter=require('./dbadapter.js'); + + +class BudgetAdapter extends Adapter{ + constructor(){ + super(); + } + + + async queryBudgetList(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let limit = req.body.limit; + let offset = req.body.offset; + let keyword = req.body.keyword; + + let qry = "select * from vw_budgetcapexinfo "; + qry = qry +"where (trim(budgetid) like '%"+ keyword +"%' or trim(activityname) 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){ + 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_budgetcapexinfo "; + qry = qry +"where (trim(budgetid) like '%"+ keyword +"%' or trim(activityname) like '%"+ keyword +"%') 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 queryBudgetDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let id = req.query.id; + // console.log(req); + let qry = "select * from vw_budgetcapexinfo "; + qry = qry +"where id='"+id+"' order by id asc 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){ + 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 queryDeleteBudget(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_budgetcapexinfo "; + 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 queryBudgetType(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let qry = "select _idx id,budgettype from tbl_budgettype "; + qry = qry +"where isdeleted=0 order by _idx 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 queryNewBudget(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let idxbudgettype= req.body.idbudgettype; + let budgetid = req.body.budgetid; + let activityname = req.body.activityname; + let amount = req.body.amount; + let targetrfs = req.body.targetrfs; + let months = req.body.months; + let years = req.body.years; + let nik = req.body.nik; + + let qry = "insert into tbl_budgetcapexinfo "; + qry = qry +"set idxbudgettype='"+idxbudgettype+"', budgetid='"+budgetid+"',activityname='"+activityname+"',amount='"+amount+"',months='"+months+"',"; + qry = qry +"targetrfs='"+targetrfs+"',years='"+years+"', 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 + { + 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 queryUpdateBudget(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let idxbudgettype= req.body.idbudgettype; + let budgetid = req.body.budgetid; + let activityname = req.body.activityname; + let amount = req.body.amount; + let targetrfs = req.body.targetrfs; + let months = req.body.months; + let years = req.body.years; + let nik = req.body.nik; + let id = req.body.id; + + let qry = "update tbl_budgetcapexinfo "; + qry = qry +"set idxbudgettype='"+idxbudgettype+"', budgetid='"+budgetid+"',activityname='"+activityname+"',amount='"+amount+"',months='"+months+"',"; + qry = qry +"targetrfs='"+targetrfs+"',years='"+years+"', uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='"+id+"'"; + + // 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.meta.message = "Updated Success"; + callback(null, apires); + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + // === Request budget + + async queryReqBudget(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let trxid= req.body.trxid; + let justificationnumber= req.body.justificationnumber; + let yearstgt= req.body.years; + let transactiondate = req.body.transactiondate; + let idxbudgettype= req.body.idbudgettype; + let budgettype = req.body.budgettype; + let idxbudgetid = req.body.idxbudgetid; + let budgetid = req.body.budgetid; + let activityname = req.body.activityname; + let idcoa = req.body.idcoa; + let glacc = req.body.coacode; + let amount = req.body.amount; + let targetrfs = req.body.targetrfs; + let crdb = "K"; + let nik = req.body.nik; + + let qry = "insert into tbl_requestbudget "; + qry = qry +"set trxid='"+trxid+"',justificationnumber='"+justificationnumber+"',yearstgt='"+yearstgt+"',transactiondate='"+transactiondate+"',idxbudgettype='"+idxbudgettype+"',budgettype='"+budgettype+"',"; + qry = qry +"idxbudgetid='"+idxbudgetid+"',budgetid='"+budgetid+"',activityname='"+activityname+"',idcoa='"+idcoa+"',glacc='"+glacc+"',targetrfs='"+targetrfs+"',"; + qry = qry +"amount='"+amount+"',crdb='"+crdb+"',months=month(now()),years=year(now()), 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 + { + 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 queryGetTrxIdReqBudget(req, callback){ + var apires = this.getApiResultDefined(); + try { + let nik = req.query.nik; + let qry = "select count(_idx) totalrows,date_format(now(),'%Y%m%d') dates from tbl_requestbudget where iby='"+nik+"' and year(idt)=year(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 resp = JSON.parse(JSON.stringify(result)); + // console.log(resp[0]['dates']); + var ymd = resp[0]['dates']; + ymd = ymd.toString().trim().replace("-",""); + var counter = resp[0]['totalrows']+1; + var counterstr = ("0000000000"+counter); + counterstr = counterstr.substring(counterstr.length-4, counterstr.length); + var trxid = "TRX/"+ymd+"/"+nik+"/"+counterstr; + apires.success = true; + apires.data = trxid + callback(null, apires); + + } + }); + } catch (error) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryUpdateReqBudget(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let trxid= req.body.trxid; + let yearstgt= req.body.years; + let transactiondate = req.body.transactiondate; + let idxbudgettype= req.body.idbudgettype; + let budgettype = req.body.budgettype; + let idxbudgetid = req.body.idxbudgetid; + let budgetid = req.body.budgetid; + let activityname = req.body.activityname; + let idcoa = req.body.idcoa; + let glacc = req.body.coacode; + let amount = req.body.amount; + let targetrfs = req.body.targetrfs; + let crdb = "K"; + let nik = req.body.nik; + let idreqbudget = req.body.idreqbudget; + + let qry = "update tbl_requestbudget "; + qry = qry +"set trxid='"+trxid+"',yearstgt='"+yearstgt+"',transactiondate='"+transactiondate+"',idxbudgettype='"+idxbudgettype+"',budgettype='"+budgettype+"',"; + qry = qry +"idxbudgetid='"+idxbudgetid+"',budgetid='"+budgetid+"',activityname='"+activityname+"',idcoa='"+idcoa+"',glacc='"+glacc+"',targetrfs='"+targetrfs+"',"; + qry = qry +"amount='"+amount+"',crdb='"+crdb+"',uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='"+idreqbudget+"'"; + + // 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.meta.message = "Data has been updated"; + callback(null, apires); + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryDeleteReqBudget(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_requestbudget "; + 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 queryReqBudgetList(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 qry = "select * from vw_requestbudget "; + qry = qry +"where (trim(budgetid) like '%"+ keyword +"%' or trim(activityname) like '%"+ keyword +"%') "; + qry = qry +"and iby='"+nik+"' 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_requestbudget "; + qry = qry +"where (trim(budgetid) like '%"+ keyword +"%' or trim(activityname) like '%"+ keyword +"%') "; + qry = qry +"and iby='"+nik+"' 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 queryReqBudgetDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let id = req.query.id; + // console.log(req); + let qry = "select * from vw_requestbudget "; + qry = qry +"where id='"+id+"' order by id asc 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){ + 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 queryBudgetListbyRequest(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let qry = "select * from vw_budgetlistbyrequest order by _idx 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); + } + } + +} + +module.exports = BudgetAdapter; diff --git a/adapter/coaadapter.js b/adapter/coaadapter.js new file mode 100644 index 0000000..fb075d8 --- /dev/null +++ b/adapter/coaadapter.js @@ -0,0 +1,345 @@ +const db=require('../config/dbproc.js'); +const Adapter=require('./dbadapter.js'); + + +class CoaAdapter extends Adapter{ + constructor(){ + super(); + } + + + async queryCoaList(req,callback){ + var apires = this.getApiResultDefined(); + try { + let limit = req.body.limit; + let offset = req.body.offset; + let keyword = req.body.keyword; + + let qry = "select * from vw_coa "; + qry = qry +"where (trim(coacode) like '%"+ keyword +"%' or trim(coaname) 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){ + 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 + }); + qry = "select * from vw_coa "; + qry = qry +"where (trim(coacode) like '%"+ keyword +"%' or trim(coaname) like '%"+ keyword +"%') 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 queryGetCostCenter(req,callback){ + var apires = this.getApiResultDefined(); + try { + let limit = req.query.limit; + let offset = req.query.offset; + let keyword = req.query.keyword; + + let qry = "select * from vw_costcenter "; + qry = qry +"where (trim(costcentercode) like '%"+ keyword +"%' or trim(costcentername) 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){ + 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 + }); + qry = "select * from vw_costcenter "; + qry = qry +"where (trim(costcentercode) like '%"+ keyword +"%' or trim(costcentername) like '%"+ keyword +"%') 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 queryGetProfitCenter(req,callback){ + var apires = this.getApiResultDefined(); + try { + let limit = req.query.limit; + let offset = req.query.offset; + let keyword = req.query.keyword; + + let qry = "select * from vw_profitcenter "; + qry = qry +"where (trim(profitcode) like '%"+ keyword +"%' or trim(profitname) 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){ + 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 + }); + qry = "select * from vw_profitcenter "; + qry = qry +"where (trim(profitcode) like '%"+ keyword +"%' or trim(profitname) like '%"+ keyword +"%') 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 queryCoaDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + let id = req.query.id; + // console.log(req); + let qry = "select * from vw_coa "; + qry = qry +"where id='"+id+"' order by id asc 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){ + 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 queryDeleteCoa(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_coa "; + 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 queryNewCoa(req,callback){ + var apires = this.getApiResultDefined(); + try { + let glacc = req.body.coacode; + let glaccname = req.body.coaname; + let nik = req.body.nik; + + let qry = "insert into tbl_coa "; + qry = qry +"set glacc='"+glacc+"',glaccname='"+glaccname+"',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 + { + 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 queryUpdateCoa(req,callback){ + var apires = this.getApiResultDefined(); + try { + let glacc = req.body.coacode; + let glaccname = req.body.coaname; + let nik = req.body.nik; + let id = req.body.id; + + let qry = "update tbl_coa "; + qry = qry +"set glacc='"+glacc+"',glaccname='"+glaccname+"',uby='"+nik+"',udt=now()"; + qry = qry +"where _idx='"+id+"'"; + + // 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.meta.message = "Updated Success"; + callback(null, apires); + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + + + + + + +} + +module.exports = CoaAdapter; diff --git a/adapter/dbadapter.js b/adapter/dbadapter.js new file mode 100644 index 0000000..7a29142 --- /dev/null +++ b/adapter/dbadapter.js @@ -0,0 +1,68 @@ +const e = require('express'); +const db=require('../config/dbproc.js'); +const Controller = require('../controllers/controller.js'); + +class DbAdapter extends Controller { + constructor(){ + super(); + } + + + async queryDynamictable(columninfo,tablename,callback) { + db.query('SELECT '+columninfo+' from ?? where isdeleted=0 order by id asc', [tablename], function (error, results, fields) { + var apiResult = {}; + if (error) { + apiResult.meta = { + table: tablename, + type: "collection", + total: 0 + } + apiResult.data = []; + callback(error,apiResult); + } + + //make results + var resultJson = JSON.stringify(results); + resultJson = JSON.parse(resultJson); + + apiResult.meta = { + table: tablename, + type: "collection", + total: resultJson.length, + total_entries: 0 + } + + //add our JSON results to the data table + apiResult.data = resultJson; + callback(null, apiResult); + }); + } + + + static async queryExistsTransactionHeader(fakturnumber,callback){ + var qry="select h.id idheader,d.id iddetail from tbl_salesheader h inner join tbl_salesdetail d on h.id=d.idheader"; + qry= qry +" where h.fakturnumber='"+fakturnumber+"' and h.isdeleted=0 and d.isdeleted=0"; + db.query(qry, [], function (error, results) { + var res={"res":false,"id":0}; + if(error){throw error;} + if(results.length>0) + { + var iddetail=[]; + results.forEach(function(e){ + iddetail.push(e.iddetail); + }); + res={ + "res":true, + "id" :results[0].idheader, + "iddetail" : iddetail + } + + } + callback(res); + }); + } + + +} + +module.exports = DbAdapter; diff --git a/adapter/employeeadapter.js b/adapter/employeeadapter.js new file mode 100644 index 0000000..f46b123 --- /dev/null +++ b/adapter/employeeadapter.js @@ -0,0 +1,414 @@ +const db=require('../config/dbproc.js'); +const Adapter=require('./dbadapter.js'); +const MainAdapter = require('./mainadapter.js'); +const mainadapter = new MainAdapter(); +const jwt = require('jsonwebtoken'); +const request = require('request'); +const baseldap="https://mw.telkomcel.tl/tcel/v1/portal/"; +const basetokenldap="https://mw.telkomcel.tl/tcel/v1/portal/tokenLDAP/"; +// const Controller = require('../../WebServicesWakepo/controllers/controller.js'); + +class EmployeeAdapter extends Adapter{ + constructor(){ + super(); + } + + + async queryEmployeeAuth(req,callback){ + try { + var apires = this.getApiResultDefined(); + let resuri={ + 'method': 'post', + 'url': baseldap+'loginLDAP', + 'headers': { + 'Content-Type': 'application/x-www-form-urlencoded', + 'Authorization': 'Bearer isadjoijoij87y123jkj912839u1201932' + }, + form: { + "nik":req.body.nik, + "pass":req.body.pass, + "app":"e-Procurement" + }, + }; + + //console.log(resuri); + request(resuri, function (error, response) { + if (error) { + apires.meta.code = 500; + apires.meta.message = error.toString(); + callback('error',apires); + } + else + { + var res = JSON.parse(response.body); + var token = res['data']['data']['token']; + // console.log(token); + // console.log(res['data']['status']); + if(res['data']['status']=='success'){ + // if(200==200){ + resuri={ + 'method': 'post', + 'url': basetokenldap, + 'headers': { + 'Content-Type': 'application/x-www-form-urlencoded', + 'Authorization': 'Bearer isadjoijoij87y123jkj912839u1201932' + }, + form: { + "nik":req.body.nik, + "token":token, + "otp":1 + } + } + // console.log(resuri); + request(resuri, function (error, resp1) { + if (error) { + apires.meta.code = 500; + apires.meta.message = error.toString(); + callback('error',apires); + } + else + { + var res=JSON.parse(resp1.body); + console.log(res); + if(res['data']['status']=='error'){ + apires.meta.code = 500; + apires.meta.message = res['data']['message'].toString(); + callback('error',apires); + } + else{ + mainadapter.queryGetToken(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + let message = data.meta.message; + let success = true; + // console.log(data); + if(err) { + statusCode = 500; + success = false; + } + apires.meta.code = statusCode; + apires.meta.message = message; + apires.success = success; + apires.data = data.data; + // console.log(apires); + callback(null,apires); + }); + } + + } + }); + + + } + else{ + apires.meta.code = 201; + apires.meta.message = "Get token failed or LDAP authentication not authorize"; + callback(null, apires); + } + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryEmployeeWithoutAuth(req,callback){ + try { + var apires = this.getApiResultDefined(); + let resuri={ + 'method': 'post', + 'url': baseldap+'loginLDAP', + 'headers': { + 'Content-Type': 'application/x-www-form-urlencoded', + 'Authorization': 'Bearer isadjoijoij87y123jkj912839u1201932' + }, + form: { + "nik":req.body.nik, + "pass":req.body.pass, + "app":"e-Procurement" + }, + }; + + // console.log(resuri); + // request(resuri, function (error, response) { + // if (error) { + // apires.meta.code = 500; + // apires.meta.message = error.toString(); + // callback('error',apires); + // } + // else + // { + // console.log(response.body); + // var res = JSON.parse(response.body); + // console.log(res); + // console.log(res['data']['res']); + // if(res['data']['res']==200){ + if(200==200){ + mainadapter.queryGetToken(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + let message = data.meta.message; + let success = true; + // console.log(data); + if(err) { + statusCode = 500; + success = false; + } + apires.meta.code = statusCode; + apires.meta.message = message; + apires.success = success; + apires.data = data.data; + // console.log(apires); + callback(null,apires); + }); + + } + else{ + apires.meta.code = 201; + apires.meta.message = "Get token failed or LDAP authentication not authorize"; + callback(null, apires); + } + // } + // }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryEmployeeAccessibility(req, callback){ + try { + var apires = this.getApiResultDefined(); + var nik = req.body.nik; + // let qry = "select * from vw_menusaccessibility where nik='"+nik+"'"; + let qry = "select ifnull(t._idx,n._idx) _idx,ifnull(t.menutext,n.menutext) menutext,"; + qry = qry +"ifnull(t.sort, n.sort) sort,ifnull(t.idemployee,0) idemployee,ifnull(t.nik,'') nik,ifnull(t.isactivated,0) isactivated from "; + qry = qry +"tbl_menus n left join (select * from vw_menusaccessibility where nik='"+nik+"') t on n._idx=t._idx or t._idx is null"; + + // 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 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 queryEmployeeSetMenuAccessibility(req, callback){ + try { + var apires = this.getApiResultDefined(); + var idemployee = req.body.idemployee; + var nik = req.body.nik; + var datamenu = JSON.parse(req.body.datamenu); + var userby = req.body.userby; + + // console.log(datamenu);return false; + var dataRows = datamenu.length; + Object.keys(datamenu).forEach(function(key){ + var idxmenu =datamenu[key]['idxmenu']; + var isactivated = datamenu[key]['isactivated']; + let qrym="insert into tbl_employee_accessibility "; + qrym=qrym+"set idemployee='"+idemployee+"',nik='"+nik+"',idxmenu='"+idxmenu+"',isactivated='"+isactivated+"',"; + qrym=qrym+"iby='"+userby+"',idt=now()"; + + let qry="select _idx from tbl_employee_accessibility where nik='"+nik+"' and idxmenu='"+idxmenu+"' and isdeleted=0 order by _idx asc 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){ + qrym="update tbl_employee_accessibility "; + qrym=qrym+"set isactivated='"+isactivated+"',uby='"+userby+"',udt=now()"; + qrym=qrym+"where _idx='"+result[0]['_idx']+"'"; + } + + // console.log(qrym); + db.query(qrym,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(0 === --dataRows){ + apires.success = true; + apires.data = "Data Has been Saved"; + callback(null,apires); + } + } + }); + + } + }); + }); + // console.log(qry); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryListEmployee(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let qry = "select * from vw_employee 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 queryEmployeeMenus(req,callback){ + try { + let apires = this.getApiResultDefined(); + let nik = req.body.nik; + let qry = "select * from vw_emp_accessibility where nik='" + nik + "' and menutype<>'D' order by sort,name 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 + { + let menusRows = result.length; + if(menusRows>0){ + Object.keys(result).forEach(function(key){ + qry = "select * from vw_emp_accessibility where menuheader='"+result[key]['_idx']+"' and nik='" + nik + "' and menutype='D' order by _idx asc"; + db.query(qry,[],function(err,resultsubmenus,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback(apires,null); + } + else{ + // result[key]['submenus'] = []; + if(resultsubmenus.length>0){ + // result[key]['countSubmenus'] = resultsubmenus.length; + Object.keys(resultsubmenus).forEach(function(key){ + delete resultsubmenus[key]['_idx']; + delete resultsubmenus[key]['menuid']; + delete resultsubmenus[key]['menuheader']; + delete resultsubmenus[key]['isactivated']; + delete resultsubmenus[key]['nik']; + delete resultsubmenus[key]['menutype']; + delete resultsubmenus[key]['class']; + delete resultsubmenus[key]['icon']; + }) + result[key]['submenu'] = JSON.parse(JSON.stringify(resultsubmenus)); + } + if(result[key]['menutype']=='H'){ + delete result[key]['_idx']; + delete result[key]['menuid']; + delete result[key]['menuheader']; + delete result[key]['isactivated']; + delete result[key]['nik']; + delete result[key]['menutype']; + } + if(result[key]['menutype']=='H1'){ + result[key]['navheader']=result[key]['name']; + delete result[key]['_idx']; + delete result[key]['menuid']; + delete result[key]['menuheader']; + delete result[key]['isactivated']; + delete result[key]['nik']; + delete result[key]['menutype']; + delete result[key]['i18n']; + delete result[key]['class']; + delete result[key]['url']; + delete result[key]['slug']; + delete result[key]['name']; + } + + if(result[key]['menutype']=='S'){ + delete result[key]['_idx']; + delete result[key]['menuid']; + delete result[key]['menuheader']; + delete result[key]['isactivated']; + delete result[key]['nik']; + delete result[key]['menutype']; + } + if(0 === --menusRows){ + + let resultJson = JSON.stringify(result); + resultJson = JSON.parse(resultJson); + apires.success = true; + apires.data = resultJson; + callback(null,apires); + } + + } + }); + + + }); + } + else{ + apires.meta['message'] = "Menu not found for nik "+nik; + apires.meta['code'] = 201; + callback('err',apires); + + } + + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error', apires); + } + } + + + +} + +module.exports = EmployeeAdapter; diff --git a/adapter/financeadapter.js b/adapter/financeadapter.js new file mode 100644 index 0000000..f66d270 --- /dev/null +++ b/adapter/financeadapter.js @@ -0,0 +1,533 @@ +const db=require('../config/dbproc.js'); +const Adapter=require('./dbadapter.js'); +const fs = require("fs"); + + +class FinanceAdapter extends Adapter{ + constructor(){ + super(); + } + + async queryPoPayList(req,callback){ + var apires = this.getApiResultDefined(); + try { + let limit = req.query.limit; + let offset = req.query.offset; + let keyword = req.query.keyword; + + let qry = "select * from vw_popaylist "; + qry = qry + "where podescription like '%" + keyword + "%' "; + // qry = qry + "order by idxpo 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_popaylist "; + qry = qry + "where podescription like '%" + keyword + "%' "; + qry = qry + "order by idxpo 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 queryPoPayListDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + let idxpo = req.query.idxpo; + + let qry = "select * from vw_popaylist "; + qry = qry + "where idxpo='" + idxpo + "' "; + qry = qry + "order by idxpo 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){ + 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 queryPayChecklist(req,callback){ + var apires = this.getApiResultDefined(); + try { + // let limit = req.query.limit; + // let offset = req.query.offset; + // let keyword = req.query.keyword; + + let qry = "select _idx, checklistname from tbl_financechecklist where 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 + { + if(result.length>0){ + 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 queryCurrencyList(req,callback){ + var apires = this.getApiResultDefined(); + try { + // let limit = req.query.limit; + // let offset = req.query.offset; + // let keyword = req.query.keyword; + + let qry = "select _idx, currency from tbl_currency where 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 + { + if(result.length>0){ + 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 querySubmitPayPo(req,callback){ + var apires = this.getApiResultDefined(); + try { + let idxpo = req.body.idxpo; + let ponumber = req.body.ponumber; + let idxvendor = req.body.idxvendor; + let vendorname = req.body.vendorname; + let totalpo = req.body.totalpo; + let contractnumber = req.body.contractnumber; + let percentpay = req.body.percentpay; + let totalinvoice = req.body.totalinvoice; + let payto = req.body.payto; + let paymentdate = req.body.paymentdate; + let payperiod = req.body.payperiod; + let whtvalue = req.body.whtvalue; + let costcenter = req.body.costcenter; + let description = req.body.description; + let status = req.body.status; + let statusdescription = req.body.statusdescription; + let nikpreparedby = req.body.nikpreparedby; + let prepareddate = req.body.prepareddate; + let nikreviewby = req.body.nikreviewby; + let reviewdate = req.body.reviewdate; + let nikreviewdirby = req.body.nikreviewdirby; + let reviewdirdate = req.body.reviewdirdate; + let reviewdescription = req.body.reviewdescription; + let nik = req.body.nik; + let checklistdata = req.body.checklistdata; + + // console.log(checklistdata) + + let qry = "insert into tbl_finance set idxpo='"+idxpo+"',ponumber='"+ponumber+"',idxvendor='"+idxvendor+"',"; + qry = qry + "vendorname='"+vendorname+"',totalpo='"+totalpo+"',contractnumber='"+contractnumber+"',"; + qry = qry + "percentpay='"+percentpay+"',totalinvoice='"+totalinvoice+"',payto='"+payto+"',paymentdate='"+paymentdate+"',"; + qry = qry + "payperiod='"+payperiod+"',whtvalue='"+whtvalue+"',costcenter='"+costcenter+"',"; + qry = qry + "description='"+description+"',status='"+status+"',statusdescription='"+statusdescription+"',"; + qry = qry + "laststatusupdate=now(),nikpreparedby='"+nikpreparedby+"',prepareddate='"+prepareddate+"',"; + qry = qry + "nikreviewby='"+nikreviewby+"',reviewdate='"+reviewdate+"',nikreviewdirby='"+nikreviewdirby+"',"; + qry = qry + "reviewdirdate='"+reviewdirdate+"',reviewdescription='"+reviewdescription+"',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; + Object.keys(checklistdata).forEach(function(key){ + var idxchecklist = checklistdata[key]['idxchecklist']; + var checklistname = checklistdata[key]['checklistname']; + var iscomplete = checklistdata[key]['iscomplete']; + var isvalid = checklistdata[key]['isvalid']; + qry = "insert into tbl_financedetailchecklist set idxheader='"+idxheader+"',"; + qry = qry + "idxchecklist='"+idxchecklist+"',checklistname='"+checklistname+"',"; + qry = qry + "iscomplete='"+iscomplete+"',isvalid='"+isvalid+"',iby='"+nik+"',idt=now()"; + db.query(qry,[],function(err2,result2,fields2){return result2;}); + }); + + apires.success = true; + apires.data={ + "idxfinance":idxheader, + "status" : "Data Has Been Submitted" + }; + callback(null, apires); + // if(result.length>0){ + // 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 queryFinanceList(req,callback){ + var apires = this.getApiResultDefined(); + try { + let limit = req.query.limit; + let offset = req.query.offset; + let keyword = req.query.keyword; + + // let qry = "select * from vw_financelist "; + // qry = qry + "where podescription like '%" + keyword + "%' "; + // qry = qry + "order by idxpo asc limit " + offset + ", " + limit; + + let qry = "select * from vw_financelist "; + qry = qry + "where podescription like '%" + keyword + "%' "; + qry = qry + "order by idxpo 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_financelist "; + qry = qry + "where podescription like '%" + keyword + "%' "; + qry = qry + "order by idxpo 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 queryFinanceListDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + let limit = req.query.limit; + let offset = req.query.offset; + let idxpo = req.query.idxpo; + + let qry = "select * from vw_financelistdetail "; + qry = qry + "where idxpo='"+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){ + 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_financelistdetail "; + qry = qry + "where idxpo='"+idxpo+"' "; + qry = qry + "order by idxfinance 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 queryFinanceDetailUpload(req,callback){ + var apires = this.getApiResultDefined(); + try { + let idxfinance = req.query.idxfinance; + + let qry = "select * from vw_financelistdetail "; + qry = qry + "where idxfinance='"+idxfinance+"'"; + + // 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.data = JSON.parse(JSON.stringify(result)); + qry = "select _idx,idxchecklist,checklistname,iscomplete,isvalid "; + qry = qry +"from tbl_financedetailchecklist where idxheader='"+idxfinance+"' and isdeleted=0 "; + qry = qry +"order by _idx asc"; + db.query(qry,[],function(err1,result1,fields1){ + if(err1){ + apires.meta['message'] = err1.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.data[0]['checklistinfo'] = JSON.parse(JSON.stringify(result1)); + callback(null,apires); + } + }); + // 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 queryUploadDocFin(req,filedoc, callback) { + try { + var apires = this.getApiResultDefined(); + var idxfinance = req.body.idxfinance; + var paymentdate = req.body.paymentdate; + var nik = req.body.nik; + + var qry = "update tbl_finance set status=2,statusdescription='Verify By Fin',filedoc='"+filedoc+"',paymentdate='"+paymentdate+"',uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='" + idxfinance +"'"; + 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); + } + } +} + +module.exports = FinanceAdapter; + + diff --git a/adapter/invadapter.js b/adapter/invadapter.js new file mode 100644 index 0000000..407340e --- /dev/null +++ b/adapter/invadapter.js @@ -0,0 +1,221 @@ +const db=require('../config/dbproc.js'); +const Adapter=require('./dbadapter.js'); + + +class InventoryAdapter extends Adapter{ + constructor(){ + super(); + } + + + async queryNewInventory(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let idxpoboq= req.body.idxpoboq; + let description= req.body.description; + let nik = req.body.nik; + + let qry = "insert into tbl_poboqdetail "; + qry = qry +"set description='"+description+"',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 qry = "select * from vw_poboqdetail where idxpoboq='"+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 queryUpdInventory(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let idxpoboq= req.body.idxpoboq; + let idxpoboqdetail= req.body.idxpoboqdetail; + let description= req.body.description; + let nik = req.body.nik; + + let qry = "update tbl_poboqdetail "; + qry = qry +"set description='"+description+"',uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='"+idxpoboqdetail+"'"; + + // 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 qry = "select * from vw_poboqdetail where idxpoboq='"+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 queryDelInventory(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let idxpoboq= req.body.idxpoboq; + let idxpoboqdetail= req.body.idxpoboqdetail; + let remarkdeleted=req.body.remarkdeleted; + let nik = req.body.nik; + + let qry = "update tbl_poboqdetail "; + qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now() "; + qry = qry +"where _idx='"+idxpoboqdetail+"'"; + + // 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 qry = "select * from vw_poboqdetail where idxpoboq='"+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 queryInventoryList(req,callback){ + var apires = this.getApiResultDefined(); + try { + let idxpoboq = req.query.idxpoboq; + 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_poboqdetail "; + qry = qry +"where idxpoboq='"+ idxpoboq +"' "; + 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_poboqdetail "; + qry = qry +"where idxpoboq='"+ idxpoboq +"' "; + 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); + } + } + + +} + +module.exports = InventoryAdapter; diff --git a/adapter/inventoryadapter.js b/adapter/inventoryadapter.js new file mode 100644 index 0000000..2ad481e --- /dev/null +++ b/adapter/inventoryadapter.js @@ -0,0 +1,358 @@ +const db=require('../config/dbproc.js'); +const Adapter=require('./dbadapter.js'); + + +class InventoryAdapter extends Adapter{ + constructor(){ + super(); + } + + + async queryNewInventory(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let idxpoboq= req.body.idxpoboq; + let description= req.body.description; + let nik = req.body.nik; + let qty = req.body.qty; + let isbulk = req.body.isbulk; + + let qry = "insert into tbl_poboqdetail "; + qry = qry +"set idxpoboq='"+idxpoboq+"',description='"+description+"',qty='"+qty+"',isbulk='"+isbulk+"',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 qry = "select * from vw_poboqdetail where idxpoboq='"+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 queryUpdInventory(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let idxpoboq= req.body.idxpoboq; + let idxpoboqdetail= req.body.idxpoboqdetail; + let description= req.body.description; + let nik = req.body.nik; + + let qry = "update tbl_poboqdetail "; + qry = qry +"set description='"+description+"',uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='"+idxpoboqdetail+"'"; + + // 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 qry = "select * from vw_poboqdetail where idxpoboq='"+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 queryDelInventory(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let idxpoboq= req.body.idxpoboq; + let idxpoboqdetail= req.body.idxpoboqdetail; + let remarkdeleted=req.body.remarkdeleted; + let nik = req.body.nik; + + let qry = "update tbl_poboqdetail "; + qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now() "; + qry = qry +"where _idx='"+idxpoboqdetail+"'"; + + // 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 qry = "select * from vw_poboqdetail where idxpoboq='"+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 queryInventoryList(req,callback){ + var apires = this.getApiResultDefined(); + try { + let idxpoboq = req.query.idxpoboq; + 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_poboqdetail "; + qry = qry +"where idxpoboq='"+ idxpoboq +"' "; + 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_poboqdetail "; + qry = qry +"where idxpoboq='"+ idxpoboq +"' "; + 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 queryInventoryHeaderList(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 identifyprojectnumber 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 identifyprojectnumber 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 queryInventoryDetailList(req,callback){ + var apires = this.getApiResultDefined(); + try { + let idxpo = req.query.idxpo; + 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_poinventorydetail "; + qry = qry +"where idxheader='"+idxpo+"' and items 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_poinventorydetail "; + qry = qry +"where idxheader='"+idxpo+"' and items 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); + } + } + + +} + +module.exports = InventoryAdapter; diff --git a/adapter/justificationadapter.js b/adapter/justificationadapter.js new file mode 100644 index 0000000..ef3eeb7 --- /dev/null +++ b/adapter/justificationadapter.js @@ -0,0 +1,864 @@ +const db=require('../config/dbproc.js'); +// const slashes = require('slashes'); +const QRCode = require('qrcode'); +const Adapter=require('./dbadapter.js'); +const fs = require("fs"); +const { callbackPromise } = require('nodemailer/lib/shared/index.js'); + +const path = require('path'); +// const { fs } = require('fs').promises; + +const libre = require('libreoffice-convert'); +libre.convertAsync = require('util').promisify(libre.convert); + + +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; + } +} + +async function ConvertToPdf(inputPath, outputPath) { + // const ext = '.pdf' + // const inputPath = path.join(__dirname, '/resources/example.docx'); + // const outputPath = path.join(__dirname, `/resources/example${ext}`); + + // Read file + const docxBuf = await fs.readFile(inputPath); + + // Convert it to pdf format with undefined filter (see Libreoffice docs about filter) + let pdfBuf = await libre.convertAsync(docxBuf, '.pdf', undefined); + + // Here in done you have pdf file which you can save or transfer in another stream + await fs.writeFile(outputPath, pdfBuf); +} + +class JustificationAdapter extends Adapter{ + constructor(){ + super(); + } + + + + async queryJustificationBudgetRequestList(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let id = req.query.id; + // console.log(req); + let qry = "select * from vw_requestbudget 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 queryNewJustification(filename, req, callback){ + var apires = this.getApiResultDefined(); + try { + // console.log(req.body); + let idxrequestbudget= req.body.idxrequestbudget; + let trxid = req.body.trxid; + let justificationnumber = req.body.nomorjustifikasi; + let title = req.body.judul; + let division = req.body.divisi; + let glacc = req.body.acccode; + let description = req.body.deskripsi; + let budgettype = req.body.jenisbudget; + let amount = req.body.nilai; + let useddate = req.body.tanggalpelaksanaan; + let textpurpose = "";//req.body.maksudtujuan; + let textintroduce = "";//req.body.latarbelakang; + let textstrategic = "";//req.body.strategis; + let textbussiness = "";//req.body.bisnis; + let textrisk = "";//req.body.risiko; + let textfund = "";//req.body.pembiayaan; + let textrecomendation = "";//req.body.rekomendasi; + let textschedule = "";//req.body.penjadwalan; + let filedoc = filename; + let nik = req.body.nik; + let boq = JSON.parse(req.body.boq); + let ttd = JSON.parse(req.body.ttd); + let status = -1; + let statusdescription = "draft"; + + let qry = "insert into tbl_justification "; + qry = qry +"set idxrequestbudget='"+idxrequestbudget+"', trxid='"+trxid+"',justificationnumber='"+justificationnumber+"',title='"+title+"',division='"+division+"',"; + qry = qry +"glacc='"+glacc+"',description='"+description+"',budgettype='"+budgettype+"',amount='"+amount+"',useddate='"+useddate+"',textpurpose='"+textpurpose+"',textintroduce='"+textintroduce+"',"; + qry = qry +"textstrategic='"+textstrategic+"',textbussiness='"+textbussiness+"',textrisk='"+textrisk+"',textfund='"+textfund+"',textrecomendation='"+textrecomendation+"',"; + qry = qry +"textschedule='"+textschedule+"',status='"+status+"',statusdescription='"+statusdescription+"',filedoc='"+filedoc+"',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 idjustification = res.insertId; + // ==== Add boq + // console.log(boq); + qry=""; + Object.keys(boq).forEach(function(key){ + var items = boq[key]['items']; + var qty = boq[key]['qty']; + var unitprice = boq[key]['unitprice']; + var units = boq[key]['units']||""; + var total = boq[key]['total']; + qry = "insert into tbl_justificationboq set idxjustification='"+idjustification+"',"; + qry = qry + "items='"+items+"',qty='"+qty+"',units='"+units+"',unitprice='"+unitprice+"',total='"+total+"',iby='"+nik+"',idt=now()"; + db.query(qry,[],function(err2,result2,fields2){return result2;}); + // console.log(r); + }); + + // ==== add ttd + var created = ttd.dibuatoleh; + var approval = ttd.disetujuioleh; + + Object.keys(created).forEach(function(key){ + var token =getToken(); + var idemployee = created[key]['idemployee']; + var nikapproval = created[key]['nik']; + + qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',"; + qry = qry + "nik='"+nikapproval+"',category='CRE',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; + db.query(qry,[],function(err3,result3,fields3){return result3;}); + // QRCode.toDataURL(token, function (err, code) { + // if(err) return console.log("error occurred") + // qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',"; + // qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='"+code+"',iby='"+nik+"',idt=now()"; + // db.query(qry,[],function(err3,result3,fields3){return result3;}); + // // Printing the code + // // console.log(code) + // }) + + + // console.log(r); + }); + + Object.keys(approval).forEach(function(key){ + var token =getToken(); + var idemployee = approval[key]['idemployee']; + var nik = approval[key]['nik']; + + // if(err) return console.log("error occurred") + qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',"; + qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; + db.query(qry,[],function(err3,result3,fields3){return result3;}); + // QRCode.toDataURL(token, function (err, code) { + // if(err) return console.log("error occurred") + // qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',"; + // qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='"+code+"',iby='"+nik+"',idt=now()"; + // db.query(qry,[],function(err3,result3,fields3){return result3;}); + + // // Printing the code + // // console.log(code) + // }) + + // console.log(r); + }); + + 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); + + } + } + + async queryUpdateJustification(filename, req, callback){ + var apires = this.getApiResultDefined(); + try { + // console.log(req.body); + let idxjustification= req.body.idxjustification; + let idxrequestbudget= req.body.idxrequestbudget; + let trxid = req.body.trxid; + let justificationnumber = req.body.nomorjustifikasi; + let title = req.body.judul; + let division = req.body.divisi; + let glacc = req.body.acccode; + let description = req.body.deskripsi; + let budgettype = req.body.jenisbudget; + let amount = req.body.nilai; + let useddate = req.body.tanggalpelaksanaan; + let textpurpose = "";//req.body.maksudtujuan; + let textintroduce = "";//req.body.latarbelakang; + let textstrategic = "";//req.body.strategis; + let textbussiness = "";//req.body.bisnis; + let textrisk = "";//req.body.risiko; + let textfund = "";//req.body.pembiayaan; + let textrecomendation = "";//req.body.rekomendasi; + let textschedule = "";//req.body.penjadwalan; + let filedoc = filename; + let nik = req.body.nik; + let boq = JSON.parse(req.body.boq); + let ttd = JSON.parse(req.body.ttd); + + let filedocqry = "filedoc='"+filedoc+"',"; + if(filename==""){filedocqry="";} + + // console.log(filedocqry); + let qry = "update tbl_justification "; + qry = qry +"set idxrequestbudget='"+idxrequestbudget+"', trxid='"+trxid+"',justificationnumber='"+justificationnumber+"',title='"+title+"',division='"+division+"',"; + qry = qry +"glacc='"+glacc+"',description='"+description+"',budgettype='"+budgettype+"',amount='"+amount+"',useddate='"+useddate+"',textpurpose='"+textpurpose+"',textintroduce='"+textintroduce+"',"; + qry = qry +"textstrategic='"+textstrategic+"',textbussiness='"+textbussiness+"',textrisk='"+textrisk+"',textfund='"+textfund+"',textrecomendation='"+textrecomendation+"',"; + qry = qry +"textschedule='"+textschedule+"',"+filedocqry+"uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='"+idxjustification+"'"; + + // 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 + { + Object.keys(boq).forEach(function(key){ + var idboq = boq[key]['id']; + var items = boq[key]['items']; + var qty = boq[key]['qty']; + var unitprice = boq[key]['unitprice']; + var units = boq[key]['units']; + var total = boq[key]['total']; + var action = boq[key]['action']; + qry = "insert into tbl_justificationboq set idxjustification='"+idxjustification+"',"; + qry = qry + "items='"+items+"',qty='"+qty+"',units='"+units+"',unitprice='"+unitprice+"',total='"+total+"',iby='"+nik+"',idt=now()"; + if(action=='update'){ + qry = "update tbl_justificationboq set idxjustification='"+idxjustification+"',"; + qry = qry + "items='"+items+"',qty='"+qty+"',units='"+units+"',unitprice='"+unitprice+"',total='"+total+"',uby='"+nik+"',udt=now() "; + qry = qry + "where _idx='"+idboq+"'"; + } + if(action=='delete'){ + qry = "update tbl_justificationboq set isdeleted=1,dby='"+nik+"',ddt=now() "; + qry = qry + "where _idx='"+idboq+"'"; + } + db.query(qry,[],function(err2,result2,fields2){return result2;}); + // console.log(r); + }); + + var created = ttd.dibuatoleh; + 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_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',"; + qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; + if(action=='update'){ + qry = "update tbl_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',"; + qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() "; + qry = qry + "where _idx='"+id+"' and issigned=0"; + } + if(action=='delete'){ + qry = "update tbl_justificationttd 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_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',"; + qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; + if(action=='update'){ + qry = "update tbl_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',"; + qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() "; + qry = qry + "where _idx='"+id+"' and issigned=0"; + } + if(action=='delete'){ + qry = "update tbl_justificationttd set isdeleted=1,dby='"+nik+"',ddt=now() "; + qry = qry+ "where _idx='"+id+"'"; + } + db.query(qry,[],function(err3,result3,fields3){return result3;}); + }); + apires.success = true; + apires.meta.message = "Updated Success"; + 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 queryUpdateStatusJustification(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_justification 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); + } + } + + async queryConvertdocxtoPdf(req, callback) { + try { + var apires = this.getApiResultDefined(); + var idxjustification = req.body.idxjustification; + + var qry = "select * from vw_justification where id='" + idxjustification +"'"; + // 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){ + const inputPath = "/home/nodejs/wsproc/assets/words/justifikasitemplate.docx"; + const outputPath = "/home/nodejs/wsproc/assets/pdf/justifikasitemplate.pdf"; + // console.log(__dirname); + ConvertToPdf(inputPath, outputPath).catch(function (err) { + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else{ + apires.success = true; + callback(null,apires); + } + // console.log(`Error converting file: ${err}`); + }); + + } + 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 querySignedJustification(filename, req, callback) { + try { + var apires = this.getApiResultDefined(); + let idxjustification= req.body.idxjustification; + let idxrequestbudget= req.body.idxrequestbudget; + let trxid = req.body.trxid; + let justificationnumber = req.body.nomorjustifikasi; + let title = req.body.judul; + let division = req.body.divisi; + let glacc = req.body.acccode; + let description = req.body.deskripsi; + let budgettype = req.body.jenisbudget; + let amount = req.body.nilai; + let useddate = req.body.tanggalpelaksanaan; + let filedoc = filename; + 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; + + let filedocqry = "filedoc='"+filedoc+"',"; + if(filename=="") + { + filedocqry=""; + // apires.meta['message'] = "File tidak ditemukan"; + // apires.meta['code'] = 500; + // callback(null, apires); + } + + let qry = "update tbl_justification "; + qry = qry +"set idxrequestbudget='"+idxrequestbudget+"', trxid='"+trxid+"',justificationnumber='"+justificationnumber+"',title='"+title+"',division='"+division+"',"; + qry = qry +"glacc='"+glacc+"',description='"+description+"',budgettype='"+budgettype+"',amount='"+amount+"',useddate='"+useddate+"',"; + qry = qry +filedocqry+"uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='"+idxjustification+"'"; + + db.query(qry,[],function(err,result,fields){ + if(err){ + console.log('d'); + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + 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_justificationttd 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_justification where _idx='"+idxjustification+"'"; + 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); + } + }); + + } + }); + } + + + }); + } + }); + } + }); + // else{ + + // } + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + + async queryDeleteJustification(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_justification "; + 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 queryListCreatedBy(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let qry = "select * from vw_createdby 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 queryListCheckedBy(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let qry = "select * from vw_checkedby 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 queryListApprovedBy(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let qry = "select * from vw_approvedby 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 queryJustificationDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let _idx= req.query.id; + + let qry = "select * from vw_justificationdetail 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_justificationboq where idxjustification='"+_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]['boq'] = []; + result[key]['ttd']= []; + if(result2.length>0){ + result[key]['boq'] = JSON.parse(JSON.stringify(result2)); + } + // === Get Ttd + qry = "select * from vw_justificationttd where idxjustification='"+_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 disetujuioleh = []; + Object.keys(result3).forEach(function(key2){ + if(result3[key2]['category']=='CRE'){ + dibuatoleh.push(JSON.parse(JSON.stringify(result3[key2]))); + }else{ + disetujuioleh.push(JSON.parse(JSON.stringify(result3[key2]))); + } + + }); + result[key]['ttd'] = { + "dibuatoleh" : dibuatoleh, + "disetujuioleh" : disetujuioleh + } + // result[key]['ttd'] = JSON.parse(JSON.stringify(result3)); + } + if(0 === --dataRows){ + let resultJson = JSON.stringify(result); + console.log(resultJson); + 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 queryJustificationList(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_justification "; + // qry = qry +"where (trim(acccode) like '%"+ keyword +"%' or trim(nomorjustifikasi) like '%"+ keyword +"%') "; + // qry = qry +"and iby='"+nik+"' and status in("+status+") order by id asc"; + let qry = "select * from vw_justification "; + qry = qry +"where (trim(acccode) like '%"+ keyword +"%' or trim(nomorjustifikasi) 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_justification "; + qry = qry +"where (trim(acccode) like '%"+ keyword +"%' or trim(nomorjustifikasi) like '%"+ keyword +"%') "; + qry = qry +"and "+swherenik+" status in("+status+") order by id 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 + { + 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); + } + } + +} + +module.exports = JustificationAdapter; diff --git a/adapter/justificationadapter_20251204.js b/adapter/justificationadapter_20251204.js new file mode 100644 index 0000000..ef3eeb7 --- /dev/null +++ b/adapter/justificationadapter_20251204.js @@ -0,0 +1,864 @@ +const db=require('../config/dbproc.js'); +// const slashes = require('slashes'); +const QRCode = require('qrcode'); +const Adapter=require('./dbadapter.js'); +const fs = require("fs"); +const { callbackPromise } = require('nodemailer/lib/shared/index.js'); + +const path = require('path'); +// const { fs } = require('fs').promises; + +const libre = require('libreoffice-convert'); +libre.convertAsync = require('util').promisify(libre.convert); + + +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; + } +} + +async function ConvertToPdf(inputPath, outputPath) { + // const ext = '.pdf' + // const inputPath = path.join(__dirname, '/resources/example.docx'); + // const outputPath = path.join(__dirname, `/resources/example${ext}`); + + // Read file + const docxBuf = await fs.readFile(inputPath); + + // Convert it to pdf format with undefined filter (see Libreoffice docs about filter) + let pdfBuf = await libre.convertAsync(docxBuf, '.pdf', undefined); + + // Here in done you have pdf file which you can save or transfer in another stream + await fs.writeFile(outputPath, pdfBuf); +} + +class JustificationAdapter extends Adapter{ + constructor(){ + super(); + } + + + + async queryJustificationBudgetRequestList(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let id = req.query.id; + // console.log(req); + let qry = "select * from vw_requestbudget 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 queryNewJustification(filename, req, callback){ + var apires = this.getApiResultDefined(); + try { + // console.log(req.body); + let idxrequestbudget= req.body.idxrequestbudget; + let trxid = req.body.trxid; + let justificationnumber = req.body.nomorjustifikasi; + let title = req.body.judul; + let division = req.body.divisi; + let glacc = req.body.acccode; + let description = req.body.deskripsi; + let budgettype = req.body.jenisbudget; + let amount = req.body.nilai; + let useddate = req.body.tanggalpelaksanaan; + let textpurpose = "";//req.body.maksudtujuan; + let textintroduce = "";//req.body.latarbelakang; + let textstrategic = "";//req.body.strategis; + let textbussiness = "";//req.body.bisnis; + let textrisk = "";//req.body.risiko; + let textfund = "";//req.body.pembiayaan; + let textrecomendation = "";//req.body.rekomendasi; + let textschedule = "";//req.body.penjadwalan; + let filedoc = filename; + let nik = req.body.nik; + let boq = JSON.parse(req.body.boq); + let ttd = JSON.parse(req.body.ttd); + let status = -1; + let statusdescription = "draft"; + + let qry = "insert into tbl_justification "; + qry = qry +"set idxrequestbudget='"+idxrequestbudget+"', trxid='"+trxid+"',justificationnumber='"+justificationnumber+"',title='"+title+"',division='"+division+"',"; + qry = qry +"glacc='"+glacc+"',description='"+description+"',budgettype='"+budgettype+"',amount='"+amount+"',useddate='"+useddate+"',textpurpose='"+textpurpose+"',textintroduce='"+textintroduce+"',"; + qry = qry +"textstrategic='"+textstrategic+"',textbussiness='"+textbussiness+"',textrisk='"+textrisk+"',textfund='"+textfund+"',textrecomendation='"+textrecomendation+"',"; + qry = qry +"textschedule='"+textschedule+"',status='"+status+"',statusdescription='"+statusdescription+"',filedoc='"+filedoc+"',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 idjustification = res.insertId; + // ==== Add boq + // console.log(boq); + qry=""; + Object.keys(boq).forEach(function(key){ + var items = boq[key]['items']; + var qty = boq[key]['qty']; + var unitprice = boq[key]['unitprice']; + var units = boq[key]['units']||""; + var total = boq[key]['total']; + qry = "insert into tbl_justificationboq set idxjustification='"+idjustification+"',"; + qry = qry + "items='"+items+"',qty='"+qty+"',units='"+units+"',unitprice='"+unitprice+"',total='"+total+"',iby='"+nik+"',idt=now()"; + db.query(qry,[],function(err2,result2,fields2){return result2;}); + // console.log(r); + }); + + // ==== add ttd + var created = ttd.dibuatoleh; + var approval = ttd.disetujuioleh; + + Object.keys(created).forEach(function(key){ + var token =getToken(); + var idemployee = created[key]['idemployee']; + var nikapproval = created[key]['nik']; + + qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',"; + qry = qry + "nik='"+nikapproval+"',category='CRE',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; + db.query(qry,[],function(err3,result3,fields3){return result3;}); + // QRCode.toDataURL(token, function (err, code) { + // if(err) return console.log("error occurred") + // qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',"; + // qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='"+code+"',iby='"+nik+"',idt=now()"; + // db.query(qry,[],function(err3,result3,fields3){return result3;}); + // // Printing the code + // // console.log(code) + // }) + + + // console.log(r); + }); + + Object.keys(approval).forEach(function(key){ + var token =getToken(); + var idemployee = approval[key]['idemployee']; + var nik = approval[key]['nik']; + + // if(err) return console.log("error occurred") + qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',"; + qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; + db.query(qry,[],function(err3,result3,fields3){return result3;}); + // QRCode.toDataURL(token, function (err, code) { + // if(err) return console.log("error occurred") + // qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',"; + // qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='"+code+"',iby='"+nik+"',idt=now()"; + // db.query(qry,[],function(err3,result3,fields3){return result3;}); + + // // Printing the code + // // console.log(code) + // }) + + // console.log(r); + }); + + 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); + + } + } + + async queryUpdateJustification(filename, req, callback){ + var apires = this.getApiResultDefined(); + try { + // console.log(req.body); + let idxjustification= req.body.idxjustification; + let idxrequestbudget= req.body.idxrequestbudget; + let trxid = req.body.trxid; + let justificationnumber = req.body.nomorjustifikasi; + let title = req.body.judul; + let division = req.body.divisi; + let glacc = req.body.acccode; + let description = req.body.deskripsi; + let budgettype = req.body.jenisbudget; + let amount = req.body.nilai; + let useddate = req.body.tanggalpelaksanaan; + let textpurpose = "";//req.body.maksudtujuan; + let textintroduce = "";//req.body.latarbelakang; + let textstrategic = "";//req.body.strategis; + let textbussiness = "";//req.body.bisnis; + let textrisk = "";//req.body.risiko; + let textfund = "";//req.body.pembiayaan; + let textrecomendation = "";//req.body.rekomendasi; + let textschedule = "";//req.body.penjadwalan; + let filedoc = filename; + let nik = req.body.nik; + let boq = JSON.parse(req.body.boq); + let ttd = JSON.parse(req.body.ttd); + + let filedocqry = "filedoc='"+filedoc+"',"; + if(filename==""){filedocqry="";} + + // console.log(filedocqry); + let qry = "update tbl_justification "; + qry = qry +"set idxrequestbudget='"+idxrequestbudget+"', trxid='"+trxid+"',justificationnumber='"+justificationnumber+"',title='"+title+"',division='"+division+"',"; + qry = qry +"glacc='"+glacc+"',description='"+description+"',budgettype='"+budgettype+"',amount='"+amount+"',useddate='"+useddate+"',textpurpose='"+textpurpose+"',textintroduce='"+textintroduce+"',"; + qry = qry +"textstrategic='"+textstrategic+"',textbussiness='"+textbussiness+"',textrisk='"+textrisk+"',textfund='"+textfund+"',textrecomendation='"+textrecomendation+"',"; + qry = qry +"textschedule='"+textschedule+"',"+filedocqry+"uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='"+idxjustification+"'"; + + // 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 + { + Object.keys(boq).forEach(function(key){ + var idboq = boq[key]['id']; + var items = boq[key]['items']; + var qty = boq[key]['qty']; + var unitprice = boq[key]['unitprice']; + var units = boq[key]['units']; + var total = boq[key]['total']; + var action = boq[key]['action']; + qry = "insert into tbl_justificationboq set idxjustification='"+idxjustification+"',"; + qry = qry + "items='"+items+"',qty='"+qty+"',units='"+units+"',unitprice='"+unitprice+"',total='"+total+"',iby='"+nik+"',idt=now()"; + if(action=='update'){ + qry = "update tbl_justificationboq set idxjustification='"+idxjustification+"',"; + qry = qry + "items='"+items+"',qty='"+qty+"',units='"+units+"',unitprice='"+unitprice+"',total='"+total+"',uby='"+nik+"',udt=now() "; + qry = qry + "where _idx='"+idboq+"'"; + } + if(action=='delete'){ + qry = "update tbl_justificationboq set isdeleted=1,dby='"+nik+"',ddt=now() "; + qry = qry + "where _idx='"+idboq+"'"; + } + db.query(qry,[],function(err2,result2,fields2){return result2;}); + // console.log(r); + }); + + var created = ttd.dibuatoleh; + 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_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',"; + qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; + if(action=='update'){ + qry = "update tbl_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',"; + qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() "; + qry = qry + "where _idx='"+id+"' and issigned=0"; + } + if(action=='delete'){ + qry = "update tbl_justificationttd 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_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',"; + qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; + if(action=='update'){ + qry = "update tbl_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',"; + qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() "; + qry = qry + "where _idx='"+id+"' and issigned=0"; + } + if(action=='delete'){ + qry = "update tbl_justificationttd set isdeleted=1,dby='"+nik+"',ddt=now() "; + qry = qry+ "where _idx='"+id+"'"; + } + db.query(qry,[],function(err3,result3,fields3){return result3;}); + }); + apires.success = true; + apires.meta.message = "Updated Success"; + 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 queryUpdateStatusJustification(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_justification 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); + } + } + + async queryConvertdocxtoPdf(req, callback) { + try { + var apires = this.getApiResultDefined(); + var idxjustification = req.body.idxjustification; + + var qry = "select * from vw_justification where id='" + idxjustification +"'"; + // 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){ + const inputPath = "/home/nodejs/wsproc/assets/words/justifikasitemplate.docx"; + const outputPath = "/home/nodejs/wsproc/assets/pdf/justifikasitemplate.pdf"; + // console.log(__dirname); + ConvertToPdf(inputPath, outputPath).catch(function (err) { + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else{ + apires.success = true; + callback(null,apires); + } + // console.log(`Error converting file: ${err}`); + }); + + } + 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 querySignedJustification(filename, req, callback) { + try { + var apires = this.getApiResultDefined(); + let idxjustification= req.body.idxjustification; + let idxrequestbudget= req.body.idxrequestbudget; + let trxid = req.body.trxid; + let justificationnumber = req.body.nomorjustifikasi; + let title = req.body.judul; + let division = req.body.divisi; + let glacc = req.body.acccode; + let description = req.body.deskripsi; + let budgettype = req.body.jenisbudget; + let amount = req.body.nilai; + let useddate = req.body.tanggalpelaksanaan; + let filedoc = filename; + 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; + + let filedocqry = "filedoc='"+filedoc+"',"; + if(filename=="") + { + filedocqry=""; + // apires.meta['message'] = "File tidak ditemukan"; + // apires.meta['code'] = 500; + // callback(null, apires); + } + + let qry = "update tbl_justification "; + qry = qry +"set idxrequestbudget='"+idxrequestbudget+"', trxid='"+trxid+"',justificationnumber='"+justificationnumber+"',title='"+title+"',division='"+division+"',"; + qry = qry +"glacc='"+glacc+"',description='"+description+"',budgettype='"+budgettype+"',amount='"+amount+"',useddate='"+useddate+"',"; + qry = qry +filedocqry+"uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='"+idxjustification+"'"; + + db.query(qry,[],function(err,result,fields){ + if(err){ + console.log('d'); + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + 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_justificationttd 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_justification where _idx='"+idxjustification+"'"; + 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); + } + }); + + } + }); + } + + + }); + } + }); + } + }); + // else{ + + // } + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + + async queryDeleteJustification(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_justification "; + 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 queryListCreatedBy(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let qry = "select * from vw_createdby 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 queryListCheckedBy(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let qry = "select * from vw_checkedby 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 queryListApprovedBy(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let qry = "select * from vw_approvedby 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 queryJustificationDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let _idx= req.query.id; + + let qry = "select * from vw_justificationdetail 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_justificationboq where idxjustification='"+_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]['boq'] = []; + result[key]['ttd']= []; + if(result2.length>0){ + result[key]['boq'] = JSON.parse(JSON.stringify(result2)); + } + // === Get Ttd + qry = "select * from vw_justificationttd where idxjustification='"+_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 disetujuioleh = []; + Object.keys(result3).forEach(function(key2){ + if(result3[key2]['category']=='CRE'){ + dibuatoleh.push(JSON.parse(JSON.stringify(result3[key2]))); + }else{ + disetujuioleh.push(JSON.parse(JSON.stringify(result3[key2]))); + } + + }); + result[key]['ttd'] = { + "dibuatoleh" : dibuatoleh, + "disetujuioleh" : disetujuioleh + } + // result[key]['ttd'] = JSON.parse(JSON.stringify(result3)); + } + if(0 === --dataRows){ + let resultJson = JSON.stringify(result); + console.log(resultJson); + 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 queryJustificationList(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_justification "; + // qry = qry +"where (trim(acccode) like '%"+ keyword +"%' or trim(nomorjustifikasi) like '%"+ keyword +"%') "; + // qry = qry +"and iby='"+nik+"' and status in("+status+") order by id asc"; + let qry = "select * from vw_justification "; + qry = qry +"where (trim(acccode) like '%"+ keyword +"%' or trim(nomorjustifikasi) 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_justification "; + qry = qry +"where (trim(acccode) like '%"+ keyword +"%' or trim(nomorjustifikasi) like '%"+ keyword +"%') "; + qry = qry +"and "+swherenik+" status in("+status+") order by id 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 + { + 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); + } + } + +} + +module.exports = JustificationAdapter; diff --git a/adapter/mainadapter.js b/adapter/mainadapter.js new file mode 100644 index 0000000..a1ee903 --- /dev/null +++ b/adapter/mainadapter.js @@ -0,0 +1,89 @@ +const db=require('../config/dbproc.js'); +const Adapter=require('./dbadapter.js'); +const jwt = require('jsonwebtoken'); + +class MainAdapter extends Adapter{ + constructor(){ + super(); + } + + async queryGetToken(req,callback){ + + let nik = req.body.nik; + let password = req.body.pass; + let secretkey = req.body.secretkey; + console.log(req.body); + // console.log("secret key :"+process.env.SECRET_KEY); + const token = jwt.sign({ + nik : nik, + password : password + }, "Pr0C#2022oct", {expiresIn: process.env.EXPIRED} ); + var apires = this.getApiResultDefined(); + // if(secretkey!=process.env.SECRET_KEY){ + if(secretkey!="Pr0C#2022oct"){ + apires.meta.code = 500; + apires.meta.message = "You don't have authorize or wrong password!"; + } + else + { + apires.success=true; + apires.data = token; + } + // console.log(apires); + callback(null,apires); + } + + async querySendOTPClient(req,callback){ + let nik = req.body.nik; + + let qry="SELECT id,token,email,hpnumber from tbl_employee where nik='"+nik+"' and isdeleted=0 order by id asc limit 1"; + let apires = this.getApiResultDefined("obj_employee","table"); + db.query(qry, [], function (error, results, fields) { + try { + if (error) { + apires.message=error; + callback(error,apires); + return; + } + + //make results + var resultJson = JSON.stringify(results); + resultJson = JSON.parse(resultJson); + // console.log(resultJson); + if(resultJson.length>0){ + var token = resultJson[0]['token']; + var emailmsg = "Your Security Code : "+token+", \nuser code : "+nik; + apires.meta['total']= resultJson.length, + apires.success=true; + apires.data = resultJson; + apires.message = emailmsg; + // Adapter.sentMail(resultJson[0]['email'],"Kode Verifikasi",emailmsg,function(err,result){ + // if(err) {console.log(err); return callback(err,null);} + // }) + callback(null, apires); + } + else + { + apires.message="NIK Not not found"; + callback(null, apires); + } + + + } catch (error) { + //console.log(error); + apires.message = error.message; + callback(error,apires); + } + }); + } + + async queryGetMenus(req, callback){ + try { + + } catch (err) { + + } + } +} + +module.exports = MainAdapter; diff --git a/adapter/poadapter.js b/adapter/poadapter.js new file mode 100644 index 0000000..6cab396 --- /dev/null +++ b/adapter/poadapter.js @@ -0,0 +1,2135 @@ +const db=require('../config/dbproc.js'); +const Adapter=require('./dbadapter.js'); +const QRCode = require('qrcode'); +const fs = require("fs"); +const { start } = require('repl'); + + +function getToken(){ + try { + var n1=Math.floor(Math.random() * 9) + 0; + var n2=Math.floor(Math.random() * 9) + 0; + var n3=Math.floor(Math.random() * 9) + 0; + var n4=Math.floor(Math.random() * 9) + 0; + var n5=Math.floor(Math.random() * 9) + 0; + var n6=Math.floor(Math.random() * 9) + 0; + var otp=n1.toString()+n2.toString()+n3.toString()+n4.toString()+n5.toString()+n6.toString(); + // console.log(otp); + return otp; + } catch (error) { + return error; + } +} + +class PoAdapter extends Adapter{ + constructor(){ + super(); + } + + + async queryVendorList(req,callback){ + var apires = this.getApiResultDefined(); + try { + let keyword= req.query.keyword; + let qry = "select * from vw_vendorinfo where vendorname like '%"+keyword+"%' or vendorid like '%"+keyword+"%' order by id asc"; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length>0){ + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result)); + } + else{ + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + } + callback(null, apires); + } + }); + } + catch(err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryPoBoqlist(req,callback){ + var apires = this.getApiResultDefined(); + try { + let idxpr= req.query.idxpr; + let qry = "select * from vw_poboq where idxpr='"+idxpr+"'"; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length>0){ + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result)); + } + else{ + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + } + callback(null, apires); + } + }); + } + catch(err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryGetidxpoheader(req, callback){ + try { + // console.log(req); + var apires = this.getApiResultDefined(); + var idxpr = req.query.idxpr; + var idxpo = req.query.idxpo; + var idxvendor = req.query.idxvendor; + + var qry = "select _idx from tbl_po where idxpr='"+idxpr+"' and idxvendor='"+idxvendor+"' and isdeleted=0 order by _idx desc limit 1"; + if(idxpo>0){ + qry = "select _idx from tbl_po where _idx='"+idxpo+"' and isdeleted=0 order by _idx desc limit 1"; + } + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + var idxpo = 0; + if(result.length>0){ + idxpo = result[0]['_idx']; + } + apires.success = true; + apires.data = {"idxpo":idxpo}; + // console.log(apires); + callback(null, apires); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async querySaveboqdetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + let idxpo= req.body.idxpo; + let idxpr= req.body.idxpr; + let prnumber= req.body.prnumber; + let idxjustification = req.body.idxjustification; + let idxjustificationboq = req.body.idxjustificationboq; + let justificationnumber = req.body.justificationnumber; + // let podate = req.body.podate; + let status = 0; + let statusdescription = "Submitted"; + let nik = req.body.nik; + + // === PO boq; + let idxpoboq = req.body.idxpoboq; + let startdate = req.body.startdate; + let enddate = req.body.enddate; + let items = req.body.items; + let qty = req.body.qty; + let unitprice = req.body.unitprice; + let units = req.body.units; + let total = req.body.total; + let spidxvendor = req.body.idxvendor.split(','); + let idxvendor = spidxvendor[0]; + let vendorid = (spidxvendor[1]).toString().trim(); + let vendorname = req.body.vendorname.toString().trim(); + let description = req.body.description; + let curr = req.body.curr; + let hs = req.body.hs; + let poamount = req.body.poamount; + let ratepo = req.body.ratepo; + let migo = req.body.migo; + let idxpoold = req.body.idxpoold; + + let qry=""; + if(idxpoold!=idxpo&&idxpoold!=0){ + qry="update tbl_po set isdeleted=1,remarkdeleted='Change Vendor',dby='"+nik+"',ddt=now() where _idx='"+idxpoold+"'"; + db.query(qry); + } + + qry = "select _idx from tbl_po where idxpr='"+idxpr+"' and idxvendor='"+idxvendor+"' and isdeleted=0 order by _idx desc limit 1"; + console.log(idxpo); + if(idxpo>0){ + qry = "select _idx from tbl_po where _idx='"+idxpo+"' and isdeleted=0 order by _idx desc limit 1"; + } + + console.log(qry); + + // let qry = "select _idx from tbl_po where idxpr='"+idxpr+"' and idxpoboq in('"+idxpoboq+"') and isdeleted=0 order by _idx desc limit 1"; + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + let jsresult = JSON.parse(JSON.stringify(result)); + // console.log(jsresult); + let idxheader = jsresult.length > 0 ? jsresult[0]['_idx'] : 0; + // console.log(idxheader); + qry = "insert into tbl_po set idxpr='"+idxpr+"',prnumber='"+prnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',"; + qry = qry + "idxvendor='"+idxvendor+"',vendorid='"+vendorid+"',vendorname='"+vendorname+"',podate=now(),status='"+status+"',statusdescription='"+statusdescription+"',iby='"+nik+"',idt=now()"; + if(result.length>0){ + // qry = "update tbl_po set idxpr='"+idxpr+"',prnumber='"+prnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',"; + // qry = qry + "podate=now(),status='"+status+"',statusdescription='"+statusdescription+"',uby='"+nik+"',udt=now() "; + // qry = qry + "where idxpr='"+idxpr+"'"; + qry = "update tbl_po set idxvendor='"+idxvendor+"',vendorid='"+vendorid+"',vendorname='"+vendorname+"',uby='"+nik+"',udt=now() "; + qry = qry + "where idxpr='"+idxpr+"' and idxvendor='"+idxvendor+"' and isdeleted=0"; + if(idxpo>0){ + qry = "update tbl_po set idxvendor='"+idxvendor+"',vendorid='"+vendorid+"',vendorname='"+vendorname+"',uby='"+nik+"',udt=now() "; + qry = qry + "where _idx='"+idxpo+"' and isdeleted=0"; + + } + } + + // console.log(qry); + db.query(qry,[],function(err1,result1,fields1){ + if(err1){ + apires.meta['message'] = err1.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else{ + if(idxheader<=0){ + idxheader = result1.insertId; + } + + // ==== Insert / Update boq PO + qry = "select _idx from tbl_poboq where _idx='"+idxpoboq+"'"; + // console.log(qry); + db.query(qry,[],function(err2,result2,fields2){ + if(err2){ + apires.meta['message'] = err2.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else{ + // ==== Insert / update boq + qry = "insert into tbl_poboq set idxheader='"+idxheader+"',idxjustification='"+idxjustification+"',idxjustificationboq='"+idxjustificationboq+"',items='"+items+"',"; + qry = qry + "qty='"+qty+"',unitprice='"+unitprice+"',units='"+units+"',total='"+total+"',idxvendor='"+idxvendor+"',vendorid='"+vendorid+"',vendorname='"+vendorname+"',"; + qry = qry + "startdate='"+startdate+"',enddate='"+enddate+"',description='"+description+"',curr='"+curr+"',hs='"+hs+"',poamount='"+poamount+"',ratepo='"+ratepo+"',migo='"+migo+"',"; + qry = qry + "status='"+status+"',statusdescription='"+statusdescription+"',iby='"+nik+"',idt=now()"; + if(result2.length>0){ + qry = "update tbl_poboq set idxheader='"+idxheader+"',idxjustification='"+idxjustification+"',idxjustificationboq='"+idxjustificationboq+"',items='"+items+"',"; + qry = qry + "qty='"+qty+"',unitprice='"+unitprice+"',units='"+units+"',total='"+total+"',idxvendor='"+idxvendor+"',vendorid='"+vendorid+"',vendorname='"+vendorname+"',"; + qry = qry + "startdate='"+startdate+"',enddate='"+enddate+"',description='"+description+"',curr='"+curr+"',hs='"+hs+"',poamount='"+poamount+"',ratepo='"+ratepo+"',migo='"+migo+"',"; + qry = qry + "status='"+status+"',statusdescription='"+statusdescription+"',uby='"+nik+"',udt=now() "; + qry = qry + "where _idx='"+idxpoboq+"'"; + } + + //console.log(qry); + + db.query(qry,[],function(err3,result3,fields3){ + if(err3){ + apires.meta['message'] = err3.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else{ + apires.success = true; + apires.data = { + "idxpoboq" : idxpoboq>0 ? parseInt(idxpoboq) : result3.insertId, + "idxpo" : idxheader>0 ? parseInt(idxheader) : 0 + + }; + callback('',apires); + } + }); + } + }); + } + }) + //callback(null, apires); + } + }); + } + catch(err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + + async queryDeletePoBoq(req, callback){ + var apires = this.getApiResultDefined(); + try { + let idxpoboq = req.body.idxpoboq; + let remarkdeleted = req.body.remarkdeleted; + let nik = req.body.nik; + + let qry = "update tbl_poboq "; + qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now()"; + qry = qry +" where _idx='"+idxpoboq+"'"; + + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.meta.message = "Deleted Success"; + callback(null, apires); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async querypoBoqDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + let idxpoboq = req.body.idxpoboq; + let qry = "select * from vw_poboq where idxpoboq in("+idxpoboq+")"; + + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length>0){ + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result)); + } + else{ + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + } + callback(null, apires); + } + }); + + } + catch(err){ + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryUpdatePoHeader(req, callback){ + try { + var apires = this.getApiResultDefined(); + var idxpo = req.body.idxpo; + var idxpoboq = req.body.idxpoboq; + var vper_start = req.body.vper_start; + var podatettd = req.body.vper_start; + var vper_end = req.body.vper_end; + var idxvendor = req.body.idxvendor; + var vendorid = req.body.vendorid; + var vendorname = req.body.vendorname; + var totalpo = req.body.totalpo; + var totalqty = req.body.totalqty; + var podate = req.body.podate; + var units = "PKT"; + // var podescription = req.body.podescription; + var idxapproval= req.body.idxapproval; + var nikapproval = req.body.nikapproval; + var nik = req.body.nik; + // var ttd = JSON.parse(req.body.ttd); + + // console.log(ttd); + var qry = "update tbl_po set idxvendor='"+idxvendor+"',vendorid='"+vendorid+"',vendorname='"+vendorname+"',"; + qry = qry + "podescription=contractdescription,idxpoboq='"+idxpoboq+"',units='"+units+"',totalqty='"+totalqty+"',totalpo='"+totalpo+"',"; + qry = qry + "vper_start='"+vper_start+"',vper_end='"+vper_end+"',podate='"+podate+"',podatettd='"+podatettd+"',idxapproval='"+idxapproval+"',"; + qry = qry + "nikapproval='"+nikapproval+"',approveddate='"+podatettd+"',uby='"+nik+"',udt=now() "; + qry = qry + "where _idx='"+idxpo+"'"; + + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + qry = "select * from vw_po where _idx='"+idxpo+"'"; + db.query(qry,[],function(err,result1,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryUpdatePoHeaderold(req, callback){ + try { + var apires = this.getApiResultDefined(); + var idxpo = req.body.idxpo; + var idxpoboq = req.body.idxpoboq; + var vper_start = req.body.vper_start; + var podatettd = req.body.vper_start; + var vper_end = req.body.vper_end; + var idxvendor = req.body.idxvendor; + var vendorid = req.body.vendorid; + var vendorname = req.body.vendorname; + var totalpo = req.body.totalpo; + var totalqty = req.body.totalqty; + var units = "PKT"; + // var podescription = req.body.podescription; + var nik = req.body.nik; + var ttd = JSON.parse(req.body.ttd); + + console.log(ttd); + var qry = "update tbl_po set idxvendor='"+idxvendor+"',vendorid='"+vendorid+"',vendorname='"+vendorname+"',"; + qry = qry + "podescription=contractdescription,idxpoboq='"+idxpoboq+"',units='"+units+"',totalqty='"+totalqty+"',totalpo='"+totalpo+"',"; + qry = qry + "vper_start='"+vper_start+"',vper_end='"+vper_end+"',podate=now(),podatettd='"+podatettd+"',uby='"+nik+"',udt=now() "; + qry = qry + "where _idx='"+idxpo+"'"; + + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + // === set ttd + // var approval = approval.disetujuioleh; + + Object.keys(ttd).forEach(function(key){ + var token = getToken(); + var id = ttd[key]['id'] || 0; + var idemployee = ttd[key]['idemployee']; + var nik = ttd[key]['nik']; + var action = ttd[key]['action']; + + qry = "insert into tbl_pottd set idxpo='"+idxpo+"',idemployee='"+idemployee+"',"; + qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()"; + if(action=='update'){ + qry = "update tbl_justificationttd set idxpo='"+idxpo+"',idemployee='"+idemployee+"',"; + qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() "; + qry = qry + "where _idx='"+id+"'"; + } + if(action=='delete'){ + qry = "update tbl_pottd set isdeleted=1,dby='"+nik+"',ddt=now() "; + qry = qry+ "where _idx='"+id+"'"; + } + console.log(qry); + db.query(qry,[],function(err3,result3,fields3){return result3;}); + }); + qry = "select * from vw_po where _idx='"+idxpo+"'"; + db.query(qry,[],function(err,result1,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryGetLastSignDate(req, callback) { + try { + var apires = this.getApiResultDefined(); + let idxjustification= req.body.idxjustification; + let qry="select idxjustification,nik,date_format(signeddate,'%Y-%m-%d') signeddate "; + qry+="from tbl_justificationttd where category='APR' and idxjustification='"+idxjustification+"' and not(signeddate is null) order by signeddate desc limit 1"; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result)); + callback(null, apires); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async querySignedPo(req, callback) { + try { + var apires = this.getApiResultDefined(); + let idxpo= req.body.idxpo; + var idxapproval = req.body.idxapproval; + var nikapproval = req.body.nikapproval; + var datesigned = req.body.datesigned; + // console.log(datesigned); + var nik = req.body.nik; + var token = this.getToken(); + var filepng = token+".png"; + // token =getToken(); + token = token +","+nikapproval; + + QRCode.toDataURL(token, function (err, code) { + // console.log(code);` + if(err) { + console.log('ddf'); + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + var imageBuffer = Adapter.decodeBase64Image(code); + fs.writeFile('./assets/png/'+filepng, imageBuffer.data, function(err) { + // console.log(err); + if(err){ + console.log('eee'); + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback(err.toString(), apires); + } + else{ + var qry = "update tbl_po set token=md5('"+token+"'),filepng='"+filepng+"',status='6',statusdescription='Approved',approveddate='"+datesigned+"',uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='" + idxpo +"'"; + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + // console.log('ttetete'); + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + // === + qry = "select status from tbl_po where _idx='"+idxpo+"'"; + db.query(qry,[],function(err,result2,fields){ + if(err){ + console.log('bbbb'); + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('error',apires); + } + else + { + var status = result2[0]['status']; + var isapproved=0; + if(status==6){isapproved = 1;} + apires.data = { + "isapproved":isapproved, + "token":token, + "urltoken": process.env.BASEURL+"/main/getimageinfo?route=png&name="+filepng + }; + callback(null, apires); + } + }); + + } + }); + } + + + }); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async querySignedPoold(req, callback) { + try { + var apires = this.getApiResultDefined(); + let idxpo= req.body.idxpo; + var idxapproval = req.body.idxapproval; + var nikapproval = req.body.nikapproval; + var datesigned = req.body.datesigned; + // console.log(datesigned); + var nik = req.body.nik; + var token = this.getToken(); + var filepng = token+".png"; + // token =getToken(); + token = token +","+nikapproval; + + QRCode.toDataURL(token, function (err, code) { + // console.log(code);` + if(err) { + console.log('ddf'); + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + var imageBuffer = Adapter.decodeBase64Image(code); + fs.writeFile('./assets/png/'+filepng, imageBuffer.data, function(err) { + // console.log(err); + if(err){ + console.log('eee'); + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback(err.toString(), apires); + } + else{ + var qry = "update tbl_pottd set token=md5('"+token+"'),imgqr='"+filepng+"',issigned='1',signeddate='"+datesigned+"',uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='" + idxapproval +"'"; + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + // console.log('ttetete'); + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + // === + qry = "select status from tbl_po where _idx='"+idxpo+"'"; + db.query(qry,[],function(err,result2,fields){ + if(err){ + console.log('bbbb'); + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('error',apires); + } + else + { + var status = result2[0]['status']; + var isapproved=0; + if(status==2){isapproved = 1;} + apires.data = { + "isapproved":isapproved, + "token":token, + "urltoken": process.env.BASEURL+"/main/getimageinfo?route=png&name="+filepng + }; + callback(null, apires); + } + }); + + } + }); + } + + + }); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async querycheckidentifyprocject(req,identifyprojectnumber,callback){ + try { + var apires = this.getApiResultDefined(); + var qry = "select _idx from tbl_po where identifyprojectnumber='"+identifyprojectnumber+"' and isdeleted=0 order by _idx desc limit 1"; + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length<=0){ + apires.success=true; + } + else{ + apires.meta.message = "Nomor SP3 "+identifyprojectnumber+" Sudah digunakan, mohon masukkan nomor SP3 yang lain. TERIMA KASIH"; + } + callback('',apires); + } + }); + } catch (err) { + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + } + + async queryUpdateIdentifyProject(req, callback){ + try { + var apires = this.getApiResultDefined(); + var idxpr = req.body.idxpr; + var prnumber = req.body.prnumber; + var idxpoboq = req.body.idxpoboq; + var idxpo = req.body.idxpo; + var totalpoboq = req.body.totalpoboq; + var totalqty = req.body.totalqty; + var idxvendor = req.body.idxvendor; + var vendorname = req.body.vendorname; + var vendorid = req.body.vendorid; + var idxjustification = req.body.idxjustification; + var justificationnumber = req.body.justificationnumber; + var podate=req.body.vper_start; + var status = req.body.status; + var statusdescription = req.body.statusdescription; + var identifyprojectnumber = req.body.identifyprojectnumber; + var contractdescription = req.body.contractdescription; + var contractperiodfrom = req.body.contractperiodfrom; + var contractperiodto = req.body.contractperiodto; + var nik = req.body.nik; + + // var qry ="select _idx from tbl_po where status=0 and isdeleted=0 order by _idx desc limit 1"; + var qry ="select _idx from tbl_po where _idx='"+idxpo+"' and (identifyprojectnumber is null or identifyprojectnumber='') and isdeleted=0 order by _idx desc limit 1"; + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length<=0){ + qry="insert into tbl_po set ponumber='000',idxpr='"+idxpr+"',prnumber='"+prnumber+"',idxjustification='"+idxjustification+"',"; + qry+="justificationnumber='"+justificationnumber+"',idxvendor='"+idxvendor+"',vendorname='"+vendorname+"',vendorid='"+vendorid+"',podate='"+podate+"',"; + qry+="podescription='"+contractdescription+"',identifyprojectnumber='"+identifyprojectnumber+"',contractdescription='"+contractdescription+"',"; + qry+="contractperiodfrom='"+contractperiodfrom+"',contractperiodto='"+contractperiodto+"',units='PKT',totalqty='"+totalqty+"',"; + qry+="totalpo='"+totalpoboq+"',status='"+status+"',statusdescription='"+statusdescription+"',idxpoboq='"+idxpoboq+"',"; + qry+="iby='"+nik+"',idt=now()"; + // console.log(qry); + + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + var idxheader = result.insertId; + qry="update tbl_poboq set idxheader='"+idxheader+"',identifyprojectnumber='"+identifyprojectnumber+"',status='"+status+"',statusdescription='"+statusdescription+"' "; + qry+="where _idx in("+idxpoboq+")"; + console.log(qry); + db.query(qry,[],function(err,result1,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + qry = "select * from vw_po where _idx='"+idxpo+"'"; + db.query(qry,[],function(err,result1,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + } + + }); + } + }); + } + else{ + // qry="update tbl_po set idxpoboq='"+idxpoboq+"',identifyprojectnumber='"+identifyprojectnumber+"',status='"+status+"',"; + // qry+="podescription='"+contractdescription+"',contractdescription='"+contractdescription+"',contractperiodfrom='"+contractperiodfrom+"',"; + // qry+="contractperiodto='"+contractperiodto+"',statusdescription='"+statusdescription+"' "; + // qry+="where _idx='"+idxpo+"'"; + qry="update tbl_po p,tbl_poboq po set p.idxpoboq='"+idxpoboq+"',p.identifyprojectnumber='"+identifyprojectnumber+"',p.status='"+status+"',"; + qry+="p.podescription='"+contractdescription+"',p.contractdescription='"+contractdescription+"',p.contractperiodfrom='"+contractperiodfrom+"',"; + qry+="p.contractperiodto='"+contractperiodto+"',p.statusdescription='"+statusdescription+"',po.identifyprojectnumber='"+identifyprojectnumber+"',"; + qry+="po.status='"+status+"',po.statusdescription='"+statusdescription+"' "; + qry+="where p._idx='"+idxpo+"' and po._idx in ("+idxpoboq+") and p.isdeleted=0 and po.isdeleted=0"; + console.log(qry); + db.query(qry,[],function(err,result1,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + qry = "select * from vw_po where _idx='"+idxpo+"'"; + db.query(qry,[],function(err,result1,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + } + + }); + } + } + }); + + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + + + async queryUpdateIdentifyProjectold(req, callback){ + try { + var apires = this.getApiResultDefined(); + var idxpo = req.body.idxpo; + // var idxpoboq = req.body.idxpoboq; + var status = req.body.status; + var statusdescription = req.body.statusdescription; + var identifyprojectnumber = req.body.identifyprojectnumber; + var contractdescription = req.body.contractdescription; + var contractperiodfrom = req.body.contractperiodfrom; + var contractperiodto = req.body.contractperiodto; + var nik = req.body.nik; + + var qry = "update tbl_po set podescription='"+contractdescription+"',contractdescription='"+contractdescription+"',status='"+status+"',statusdescription='"+statusdescription+"',"; + qry = qry +"identifyprojectnumber='"+identifyprojectnumber+"',contractperiodfrom='"+contractperiodfrom+"',"; + qry = qry +"contractperiodto='"+contractperiodto+"',uby='"+nik+"',udt=now() "; + qry = qry + "where _idx='"+idxpo+"'"; + // var qry = "update tbl_po p, tbl_poboq pb set p.podescription='"+contractdescription+"',p.contractdescription='"+contractdescription+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',"; + // qry = qry +"p.identifyprojectnumber='"+identifyprojectnumber+"',pb.identifyprojectnumber='"+identifyprojectnumber+"',p.contractperiodfrom='"+contractperiodfrom+"',"; + // qry = qry +"p.contractperiodto='"+contractperiodto+"',p.uby='"+nik+"',p.udt=now() "; + // qry = qry + "where p._idx='"+idxpo+"' and pb._idx in('"+idxpoboq+"')"; + + console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + qry = "select * from vw_po where _idx='"+idxpo+"'"; + db.query(qry,[],function(err,result1,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryUpdatePoNumber(req, callback) { + try { + var apires = this.getApiResultDefined(); + var idxpo = req.body.idxpo; + var idxpoboq= req.body.idxpoboq; + var nik = req.body.nik; + var status = req.body.status; + var posapnumber = req.body.ponumber || ''; + var podate = req.body.podate || ''; + var statusdescription = req.body.statusdescription; + var sapmessage ="PO Manual"; + + if(!posapnumber||posapnumber==''){ + posapnumber="000"; + } + // var setvalues="p.ponumber='"+posapnumber+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',po.status='"+status+"',po.statusdescription='"+statusdescription+"',"; + var setvalues="p.ponumber='"+posapnumber+"',p.podate='"+podate+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',"; + setvalues+="po.ponumber='"+posapnumber+"',po.status='"+status+"',po.statusdescription='"+statusdescription+"',"; + // var setvalues="ponumber='"+posapnumber+"',status='"+status+"',statusdescription='"+statusdescription+"',"; + if(!posapnumber||posapnumber==''||posapnumber=='000'){ + setvalues=""; + } + var qry = "update tbl_po p, tbl_poboq po set "+setvalues+"p.sapmessages='"+sapmessage+"',p.uby='"+nik+"',p.udt=now() "; + qry = qry +"where (p._idx=po.idxheader and p._idx='"+idxpo+"' and po._idx in ("+idxpoboq+")) and p.isdeleted=0 and po.isdeleted=0"; + + // var qry = "update tbl_po set "+setvalues+"sapmessages='"+sapmessage+"',uby='"+nik+"',udt=now() "; + // qry = qry +"where (_idx=idxheader and _idx='"+idxpo+"' and p_idx in ("+idxpoboq+")) and p.isdeleted=0 and po.isdeleted=0"; + + console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + qry = "select idxpoboq,ponumber from vw_poboq where idxpoboq in("+idxpoboq+")"; + db.query(qry,[],function(err,result1,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryUpdatePoNumberold(req,posapnumber,sapmessage, callback) { + try { + var apires = this.getApiResultDefined(); + var idxpo = req.body.idxpo; + var idxpoboq= req.body.idxpoboq; + var nik = req.body.nik; + var status = req.body.status; + var statusdescription = req.body.statusdescription; + + if(!posapnumber||posapnumber==''){ + posapnumber="000"; + } + // var setvalues="p.ponumber='"+posapnumber+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',po.status='"+status+"',po.statusdescription='"+statusdescription+"',"; + var setvalues="p.ponumber='"+posapnumber+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',"; + setvalues+="po.ponumber='"+posapnumber+"',po.status='"+status+"',po.statusdescription='"+statusdescription+"',"; + // var setvalues="ponumber='"+posapnumber+"',status='"+status+"',statusdescription='"+statusdescription+"',"; + if(!posapnumber||posapnumber==''||posapnumber=='000'){ + setvalues=""; + } + var qry = "update tbl_po p, tbl_poboq po set "+setvalues+"p.sapmessages='"+sapmessage+"',p.uby='"+nik+"',p.udt=now() "; + qry = qry +"where (p._idx=po.idxheader and p._idx='"+idxpo+"' and po._idx in ("+idxpoboq+")) and p.isdeleted=0 and po.isdeleted=0"; + + // var qry = "update tbl_po set "+setvalues+"sapmessages='"+sapmessage+"',uby='"+nik+"',udt=now() "; + // qry = qry +"where (_idx=idxheader and _idx='"+idxpo+"' and p_idx in ("+idxpoboq+")) and p.isdeleted=0 and po.isdeleted=0"; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + qry = "select idxpoboq,ponumber from vw_poboq where idxpoboq in("+idxpoboq+")"; + db.query(qry,[],function(err,result1,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryUpdateMigoNumber(req, callback) { + try { + var apires = this.getApiResultDefined(); + var idxpo = req.query.idxpo || req.body.idxpo; + // var idxpoboq = req.body.idxpoboq; + // var migonumber=""; + var nik = req.body.nik; + var migo = req.body.migo; + var migosapmessage = req.body.migosapmessage; + // var status = req.body.status; + // var statusdescription = req.body.statusdescription; + + // if(!migo||migo==''){ + // migonumber="000"; + // } + // var setvalues="p.ponumber='"+posapnumber+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',po.status='"+status+"',po.statusdescription='"+statusdescription+"',"; + var setvalues="p.migo='"+migo+"',p.migosapmessages='"+migosapmessage+"',po.migo='"+migo+"',"; + // var setvalues="ponumber='"+posapnumber+"',status='"+status+"',statusdescription='"+statusdescription+"',"; + if(!migo||migo==''){ + setvalues=""; + } + var qry = "update tbl_po p, tbl_poboq po set "+setvalues+"p.migosapmessages='"+migosapmessage+"',p.uby='"+nik+"',p.udt=now() "; + qry = qry +"where (p._idx=po.idxheader and p._idx='"+idxpo+"') and p.isdeleted=0 and po.isdeleted=0"; + + // var qry = "update tbl_po set "+setvalues+"sapmessages='"+sapmessage+"',uby='"+nik+"',udt=now() "; + // qry = qry +"where (_idx=idxheader and _idx='"+idxpo+"' and p_idx in ("+idxpoboq+")) and p.isdeleted=0 and po.isdeleted=0"; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + qry = "select idxpoboq,ponumber,migo from vw_poboq where idxpo='"+idxpo+"'"; + db.query(qry,[],function(err,result1,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryUpdatePOSAP(req,posapnumber,sapmsg, callback) { + try { + var apires = this.getApiResultDefined(); + var idxpo = req.body.idxpo; + var status = req.body.status; + var totalpo = req.body.totalpo; + var podescription = req.body.podescription; + var statusdescription = req.body.statusdescription; + var nik = req.body.nik; + + + var setvalues="p.ponumber='"+posapnumber+"',po.ponumber='"+posapnumber+"',"; + if(!posapnumber){ + setvalues=""; + } + + if(typeof totalpo !== undefined){ + setvalues=setvalues+"p.totalpo='"+totalpo+"',"; + } + + if(typeof podescription !== undefined){ + setvalues=setvalues+"p.podescription='"+podescription+"',"; + } + + + var qry = "update tbl_po p, tbl_poboq po set "+setvalues+"p.sapmessages='"+sapmsg+"',p.status='"+status+"',p.statusdescription='"+statusdescription+"',p.uby='"+nik+"',p.udt=now() "; + qry = qry +"where p._idx=po.idxheader and p._idx='"+idxpo+"' and p.isdeleted=0 and po.isdeleted=0"; + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result)); + callback(null, apires); + + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryUpdatePoNumberold(req,posapnumber, callback) { + try { + var apires = this.getApiResultDefined(); + var idxpo = req.body.idxpo; + var idxpoboq = req.body.idxpoboq; + var vper_start = req.body.vper_start; + var vper_end = req.body.vper_end; + var idxvendor = req.body.idxvendor; + var vendorid = req.body.vendorid; + var vendorname = req.body.vendorname; + var totalpo = req.body.totalpo; + var totalqty = req.body.totalqty; + var units = "PKT"; + var status = req.body.status; + var statusdescription = req.body.statusdescription; + var status = req.body.status; + var statusdescription = req.body.statusdescription; + let podescription = req.body.podescription; + + var nik = req.body.nik; + + var qry = "update tbl_po p, tbl_poboq po set vper_start='"+vper_start+"',vper_end='"+vper_end+"',p.podate=now(),"; + qry = qry +"p.ponumber='"+posapnumber+"',p.idxvendor='"+idxvendor+"',p.vendorid='"+vendorid+"',p.vendorname='"+vendorname+"',"; + qry = qry +"p.podescription='"+podescription+"',p.units='"+units+"',p.totalqty='"+totalqty+"',p.totalpo='"+totalpo+"',po.ponumber='"+posapnumber+"',"; + qry = qry +"p.status='" + status +"',p.statusdescription='" + statusdescription +"',p.uby='"+nik+"',p.udt=now() "; + qry = qry +"where p._idx=po.idxheader and po._idx in(" + idxpoboq +") and p.isdeleted=0 and po.isdeleted=0"; + + var qry = "update tbl_po p, tbl_poboq po set p.ponumber='"+posapnumber+"',po.ponumber='"+posapnumber+"',p.uby='"+nik+"',p.udt=now() "; + qry = qry +"where p._idx=po.idxheader and po._idx in(" + idxpoboq +") and p.isdeleted=0 and po.isdeleted=0"; + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + qry = "select idxpoboq,ponumber from vw_poboq where idxpoboq in("+idxpoboq+")"; + db.query(qry,[],function(err,result1,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.data = JSON.parse(JSON.stringify(result1)); + callback(null, apires); + } + }); + + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryPoManagementList(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let limit = req.query.limit; + let offset = req.query.offset; + let keyword = req.query.keyword; + // let nik = req.body.nik; + + let qry = "select * from vw_po "; + qry = qry +"where trim(ponumber) like '%"+ keyword +"%' and ponumber<>'000'"; + // qry = qry +"order by _idx asc limit " + offset + ", " + limit; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length>0){ + let pagination = result.length / limit; + if(!Number.isInteger(pagination)){ + pagination=(Math.floor(result.length / limit))+1; + } + // let pagination = Adapter.getPagination(result.length, limit); + apires.success = true; + apires.data.push({ + "totalpage": pagination, + "totalrows": result.length + }); + qry = "select * from vw_po "; + qry = qry +"where trim(ponumber) like '%"+ keyword +"%' and ponumber<>'000'"; + qry = qry +"order by _idx asc limit " + offset + ", " + limit; + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.data.push({ + "results": JSON.parse(JSON.stringify(result)) + }); + callback(null, apires); + } + }); + } + else{ + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + callback(null, apires); + } + + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryPottdList(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let limit = req.query.limit; + let offset = req.query.offset; + let keyword = req.query.keyword; + // let nik = req.body.nik; + + let qry = "select * from vw_po "; + qry = qry +"where trim(ponumber) like '%"+ keyword +"%' and status in(1,6) and ponumber<>'000' and ponumber<>'' "; + // qry = qry +"order by _idx asc limit " + offset + ", " + limit; + + console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length>0){ + let pagination = result.length / limit; + if(!Number.isInteger(pagination)){ + pagination=(Math.floor(result.length / limit))+1; + } + // let pagination = Adapter.getPagination(result.length, limit); + apires.success = true; + apires.data.push({ + "totalpage": pagination, + "totalrows": result.length + }); + qry = "select * from vw_po "; + qry = qry +"where trim(ponumber) like '%"+ keyword +"%' and status in(1,6) and ponumber<>'000' and ponumber<>'' "; + qry = qry +"order by _idx asc limit " + offset + ", " + limit; + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.data.push({ + "results": JSON.parse(JSON.stringify(result)) + }); + callback(null, apires); + } + }); + } + else{ + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + callback(null, apires); + } + + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryPottdListDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let _idx= req.query.idxpo; + + let qry = "select * from vw_po where _idx='"+_idx+"'"; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length<=0){ + apires.meta.message = "Record not found"; + callback('',apires); + } + else{ + let resultJson = JSON.stringify(result); + resultJson = JSON.parse(resultJson); + apires.success = true; + apires.data = resultJson; + callback(null,apires); + } + + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryPoMigoList(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let limit = req.query.limit; + let offset = req.query.offset; + let keyword = req.query.keyword; + // let nik = req.body.nik; + + let qry = "select * from vw_po "; + qry = qry +"where trim(ponumber) like '%"+ keyword +"%' and status in(2,4) and ponumber<>'000' and ponumber<>'' "; + // qry = qry +"order by _idx asc limit " + offset + ", " + limit; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length>0){ + let pagination = result.length / limit; + if(!Number.isInteger(pagination)){ + pagination=(Math.floor(result.length / limit))+1; + } + // let pagination = Adapter.getPagination(result.length, limit); + apires.success = true; + apires.data.push({ + "totalpage": pagination, + "totalrows": result.length + }); + qry = "select * from vw_po "; + qry = qry +"where trim(ponumber) like '%"+ keyword +"%' and status in(2,4) and ponumber<>'000' and ponumber<>'' "; + qry = qry +"order by _idx asc limit " + offset + ", " + limit; + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.data.push({ + "results": JSON.parse(JSON.stringify(result)) + }); + callback(null, apires); + } + }); + } + else{ + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + callback(null, apires); + } + + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryPoMigoListDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let _idx= req.query.idxpo; + + let qry = "select * from vw_poboq where idxpo='"+_idx+"'"; + + console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length<=0){ + apires.meta.message = "Record not found"; + callback('',apires); + } + else{ + let resultJson = JSON.stringify(result); + resultJson = JSON.parse(resultJson); + apires.success = true; + apires.data = resultJson; + callback(null,apires); + } + + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryPottdListDetailold(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let _idx= req.query.idxpo; + + let qry = "select * from vw_po where _idx='"+_idx+"'"; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + let dataRows = result.length; + if(result.length<=0){ + apires.meta.message = "Record not found"; + callback('',apires); + } + else{ + let dataRows = result.length; + + Object.keys(result).forEach(function(key){ + result[key]['ttd']= []; + // === Get Ttd + qry = "select * from vw_pottd where idxpo='"+_idx+"' order by _idx asc"; + // console.log(qry); + db.query(qry,[],function(err,result3,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('error',apires); + } + else{ + if(result3.length>0){ + var disetujuioleh = []; + Object.keys(result3).forEach(function(key2){ + disetujuioleh.push(JSON.parse(JSON.stringify(result3[key2]))); + + }); + result[key]['ttd'] = { + "disetujuioleh" : disetujuioleh + } + // result[key]['ttd'] = JSON.parse(JSON.stringify(result3)); + } + if(0 === --dataRows){ + let resultJson = JSON.stringify(result); + resultJson = JSON.parse(resultJson); + apires.success = true; + apires.data = resultJson; + callback(null,apires); + } + + } + }); + }); + } + + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryPoManagementListDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let idxpo = req.query.idxpo || req.body.idxpo; + + let qry = "select * from vw_po where _idx='"+idxpo+"'"; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length>0){ + apires.success = true; + apires.data= JSON.parse(JSON.stringify(result)); + } + else{ + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + } + callback(null, apires); + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryPoInventoryList(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let limit = req.query.limit; + let offset = req.query.offset; + let keyword = req.query.keyword; + // let nik = req.body.nik; + + let qry = "select * from vw_poinventoryheader "; + qry = qry +"where trim(ponumber) like '%"+ keyword +"%' "; + // qry = qry +"order by _idx asc limit " + offset + ", " + limit; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length>0){ + let pagination = result.length / limit; + if(!Number.isInteger(pagination)){ + pagination=(Math.floor(result.length / limit))+1; + } + // let pagination = Adapter.getPagination(result.length, limit); + apires.success = true; + apires.data.push({ + "totalpage": pagination, + "totalrows": result.length + }); + qry = "select * from vw_poinventoryheader "; + qry = qry +"where trim(ponumber) like '%"+ keyword +"%' "; + qry = qry +"order by _idx asc limit " + offset + ", " + limit; + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.data.push({ + "results": JSON.parse(JSON.stringify(result)) + }); + callback(null, apires); + } + }); + } + else{ + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + callback(null, apires); + } + + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryPoInventoryDetailList(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let limit = req.query.limit; + let offset = req.query.offset; + let keyword = req.query.keyword; + let idxheader = req.query.idxpo; + // let nik = req.body.nik; + + let qry = "select * from vw_poinventorydetail "; + qry = qry +"where trim(ponumber) like '%"+ keyword +"%' and idxheader='"+idxheader+"' "; + qry = qry +"order by _idx asc limit " + offset + ", " + limit; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length>0){ + let pagination = result.length / limit; + if(!Number.isInteger(pagination)){ + pagination=(Math.floor(result.length / limit))+1; + } + // let pagination = Adapter.getPagination(result.length, limit); + apires.success = true; + apires.data.push({ + "totalpage": pagination, + "totalrows": result.length + }); + qry = "select * from vw_poinventorydetail "; + qry = qry +"where trim(ponumber) like '%"+ keyword +"%' and idxheader='"+idxheader+"' "; + qry = qry +"order by _idx asc limit " + offset + ", " + limit; + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.data.push({ + "results": JSON.parse(JSON.stringify(result)) + }); + callback(null, apires); + } + }); + } + else{ + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + callback(null, apires); + } + + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryNewPoAdjustment(req, filename, callback){ + var apires = this.getApiResultDefined(); + try { + let idxpo = req.body.idxpo; + let ponumber = req.body.ponumber; + let dates = req.body.dates; + let reason = req.body.reason; + let filedoc = filename; + let totalpo = req.body.totalpo; + let adjval = req.body.adjval; + let grandtotal = req.body.grandtotal; + let nik = req.body.nik; + let qry ="select _idx from tbl_poadj where idxpo='"+idxpo+"' and isdeleted=0 order by _idx desc limit 1"; + // console.log(qry); + db.query(qry,[], function(err2, results2){ + if(err2){ + apires.meta['message'] = err2.toString(); + apires.meta['code'] = 500; + callback('err',apires); + }else{ + + qry ="insert into tbl_poadj "; + qry = qry + "set idxpo='"+idxpo+"',ponumber='"+ponumber+"',dates='"+dates+"',"; + qry = qry + "reason='"+reason+"',filedoc='"+filedoc+"',totalpo='"+totalpo+"',"; + qry = qry + "adjval='"+adjval+"',grandtotal='"+grandtotal+"',status=-1,statusdescription='Draft',"; + qry = qry + "laststatusupdated=now(),iby='"+nik+"',idt=now()"; + if(results2.length>=1){ + qry ="update tbl_poadj "; + qry = qry + "set idxpo='"+idxpo+"',ponumber='"+ponumber+"',dates='"+dates+"',"; + qry = qry + "reason='"+reason+"',filedoc='"+filedoc+"',totalpo='"+totalpo+"',"; + qry = qry + "adjval='"+adjval+"',grandtotal='"+grandtotal+"',uby='"+nik+"',udt=now() "; + qry = qry +"where idxpo='"+idxpo+"' and isdeleted=0"; + } + // console.log(qry); + db.query(qry,[],function(err3,results3){ + if(err3){ + apires.meta['message'] = err3.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else{ + var res = JSON.parse(JSON.stringify(results3)); + apires.success = true; + apires.meta.message = "Updated Success"; + apires.data = res; + callback(null, apires); + } + }); + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + + } + } + + async queryPoAdjList(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let limit = req.query.limit; + let offset = req.query.offset; + let keyword = req.query.keyword; + // let nik = req.body.nik; + + let qry = "select * from vw_poadjlist "; + qry = qry +"where trim(ponumber) like '%"+ keyword +"%' "; + // qry = qry +"order by _idx asc limit " + offset + ", " + limit; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length>0){ + let pagination = result.length / limit; + if(!Number.isInteger(pagination)){ + pagination=(Math.floor(result.length / limit))+1; + } + // let pagination = Adapter.getPagination(result.length, limit); + apires.success = true; + apires.data.push({ + "totalpage": pagination, + "totalrows": result.length + }); + qry = "select * from vw_poadjlist "; + qry = qry +"where trim(ponumber) like '%"+ keyword +"%' "; + qry = qry +"order by _idx asc limit " + offset + ", " + limit; + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.data.push({ + "results": JSON.parse(JSON.stringify(result)) + }); + callback(null, apires); + } + }); + } + else{ + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + callback(null, apires); + } + + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryPoAdjListDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let idx = req.query.idx; + // let nik = req.body.nik; + + let qry = "select * from vw_poadjlist where _idx='"+idx+"'"; + // qry = qry +"order by _idx asc limit " + offset + ", " + limit; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length>0){ + apires.success= true; + apires.data=JSON.parse(JSON.stringify(result)); + callback(null, apires); + } + else{ + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + callback(null, apires); + } + + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryPoApproveList(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let keyword = req.query.keyword; + let nik = req.query.nik; + + let qry = "select * from vw_po "; + qry = qry +"where (trim(ponumber) like '%"+ keyword +"%') and (iby='"+nik+"' and status in(4,6) and isadjustment=0) "; + // qry = qry +"order by _idx asc limit " + offset + ", " + limit; + + // console.log(qry); + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + if(result.length>0){ + apires.success= true; + apires.data=JSON.parse(JSON.stringify(result)); + callback(null, apires); + } + else{ + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + callback(null, apires); + } + + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryUpdPoAdjustment(req, filename, callback){ + var apires = this.getApiResultDefined(); + try { + let idx = req.body.idxadjustment; + let idxpo = req.body.idxpo; + let ponumber = req.body.ponumber; + let dates = req.body.dates; + let reason = req.body.reason; + let filedoc = filename; + let totalpo = req.body.totalpo; + let adjval = req.body.adjval; + let grandtotal = req.body.grandtotal; + let nik = req.body.nik; + + let qry ="select _idx from tbl_poadj where _idx='"+idx+"' and isdeleted=0 order by _idx desc limit 1"; + // console.log(qry); + db.query(qry,[], function(err2, results2){ + if(err2){ + apires.meta['message'] = err2.toString(); + apires.meta['code'] = 500; + callback('err',apires); + }else{ + + var fileupd="filedoc='"+filedoc+"',"; + if(!filedoc){fileupd="";} + qry ="insert into tbl_poadj "; + qry = qry + "set idxpo='"+idxpo+"',ponumber='"+ponumber+"',dates='"+dates+"',"; + qry = qry + "reason='"+reason+"',"+fileupd+"totalpo='"+totalpo+"',"; + qry = qry + "adjval='"+adjval+"',grandtotal='"+grandtotal+"',iby='"+nik+"',idt=now()"; + if(results2.length>=1){ + qry ="update tbl_poadj "; + qry = qry + "set idxpo='"+idxpo+"',ponumber='"+ponumber+"',dates='"+dates+"',"; + qry = qry + "reason='"+reason+"',"+fileupd+"totalpo='"+totalpo+"',"; + qry = qry + "adjval='"+adjval+"',grandtotal='"+grandtotal+"',uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='"+idx+"' and isdeleted=0"; + } + console.log(qry); + db.query(qry,[],function(err3,results3){ + if(err3){ + apires.meta['message'] = err3.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else{ + var res = JSON.parse(JSON.stringify(results3)); + apires.success = true; + apires.meta.message = "Updated Success"; + apires.data = res; + callback(null, apires); + } + }); + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + + } + } + + + async queryUpdPoBoq(req, filename, callback){ + var apires = this.getApiResultDefined(); + try { + console.log("read files " +filename); + // apires.success = true; + // apires.meta.message = "Upload Success"; + // apires.data = []; + // callback(null, apires); + const fs = require("fs"); + const { parse } = require("csv-parse"); + // fs.createReadStream(process.env.BASEPATH+'/assets/po/boq/'+filename) + var totalrows=0;var totalerr=0;var totalsuccess=0; + fs.createReadStream('./assets/po/boq/'+filename) + .pipe(parse({ delimiter: ",", from_line: 2 })) + .on("data", function (row) { + totalrows+=1; + // console.log(row); + //idxpo,sp3_number,items,idxpoboq,vendorid_sap,description,po_number,start_date,end_date,curr,unit_price,qty,po_amount,rate_po,po_amount_usd,migo + var spdata=row[0].split(","); + // console.log(spdata.length); + if(spdata.length<=1){ + spdata=row[0].split(";"); + } + var idxpo=spdata[0]; + var identifyprojectnumber=spdata[1]; + var idxpoboq=spdata[3]; + var description=spdata[5]; + var startdate=spdata[7]; + var enddate=spdata[8]; + var curr=spdata[9]; + var hs=spdata[10]; + var qty=spdata[11]; + var poamount=spdata[12]; + var ratepo=spdata[13]; + var migo=spdata[14]; + + var qry="update tbl_poboq set identifyprojectnumber='"+identifyprojectnumber+"',description='"+description+"',"; + qry+="startdate='"+startdate+"',enddate='"+enddate+"',curr='"+curr+"',hs='"+hs+"',qty='"+qty+"',poamount='"+poamount+"',"; + qry+="ratepo='"+ratepo+"',migo='"+migo+"',udt=now() where _idx='"+idxpoboq+"'"; + // console.log(qry); + db.query(qry,[],function(err,result){ + if(err){ + totalerr+=1; + } + else{ + totalsuccess+=1; + } + }); + // console.log(spdata[0]+' '+spdata[1]); + }) + .on("end", function () { + console.log("finished"); + apires.success = true; + apires.meta.message = "Upload Success"; + apires.data = { + "totalrows" : totalrows, + "Success" : totalsuccess, + "Error" : totalerr + }; + callback(null, apires); + }) + .on("error", function (error) { + console.log(error.message); + apires.meta.code = 500; + apires.meta.message = error.toString(); + callback('error',apires); + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + + } + } + + async queryDeleteAdjPO(req, callback){ + var apires = this.getApiResultDefined(); + try { + let idxadjustment = req.body.idxadjustment; + let remarkdeleted = req.body.remarkdeleted; + let nik = req.body.nik; + + let qry = "update tbl_poadj "; + qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now() "; + qry = qry +" where _idx='"+idxadjustment+"'"; + + + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.meta.message = "Deleted Success"; + callback(null, apires); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async querySubmitAdjPO(req, callback){ + var apires = this.getApiResultDefined(); + try { + let idxadjustment = req.body.idxadjusment; + let nik = req.body.nik; + + let qry = "update tbl_poadj "; + qry = qry +"set status=0,statusdescription='Submitted',laststatusupdated=now(),uby='"+nik+"',udt=now()"; + qry = qry +" where _idx='"+idxadjustment+"'"; + + db.query(qry,[],function(err,result,fields){ + if(err){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback('err',apires); + } + else + { + apires.success = true; + apires.meta.message = "Deleted Success"; + callback(null, apires); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } +} + +module.exports = PoAdapter; + + diff --git a/adapter/pradapter.js b/adapter/pradapter.js new file mode 100644 index 0000000..802bcda --- /dev/null +++ b/adapter/pradapter.js @@ -0,0 +1,592 @@ +const db=require('../config/dbproc.js'); +const Adapter=require('./dbadapter.js'); +const QRCode = require('qrcode'); +const fs = require("fs"); + + +class PrAdapter extends Adapter{ + constructor(){ + super(); + } + + async queryPrJustificationList(req,callback){ + var apires = this.getApiResultDefined(); + try { + + + // console.log(req); + let nik = req.query.nik; + let qry = "select * from vw_justification where iscreatepr=0 and status=2 and iby='"+nik+"' 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 queryGetTrxIdPr(req, callback){ + var apires = this.getApiResultDefined(); + try { + let nik = req.query.nik; + let qry = "select count(_idx) totalrows,date_format(now(),'%Y%m%d') dates from tbl_pr where iby='"+nik+"' and year(idt)=year(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 resp = JSON.parse(JSON.stringify(result)); + // console.log(resp[0]['dates']); + var ymd = resp[0]['dates']; + ymd = ymd.toString().trim().replace("-",""); + var counter = resp[0]['totalrows']+1; + var counterstr = ("0000000000"+counter); + counterstr = counterstr.substring(counterstr.length-4, counterstr.length); + var trxid = "TCEL-PR/"+ymd+"/"+nik+"/"+counterstr; + apires.success = true; + apires.data = trxid + callback(null, apires); + + } + }); + } catch (error) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + async queryNewPr(req, callback){ + var apires = this.getApiResultDefined(); + try { + // console.log(req.body); + let idxjustification= req.body.idxjustification; + let justificationnumber= req.body.justificationnumber; + let trxidpr = req.body.trxidpr; + let prnumber = req.body.prnumber; + let costcenter = req.body.costcenter; + let profitcenter = req.body.profitcenter; + let description = req.body.description; + let qty = req.body.qty; + let unit = req.body.unit; + let netprice = req.body.netprice; + let totalvalue = req.body.totalvalue; + let curr = req.body.curr; + let prdate = req.body.prdate; + let idxapproval = req.body.idxapproval; + let nikapproval = req.body.nikapproval; + let nik = req.body.nik; + let status = -1; + let statusdescription = "draft"; + + let qry = "insert into tbl_pr "; + qry = qry +"set trxidpr='"+trxidpr+"',prnumber='"+prnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',costcenter='"+costcenter+"',"; + qry = qry +"profitcenter='"+profitcenter+"',description='"+description+"',qty='"+qty+"',unit='"+unit+"',netprice='"+netprice+"',totalvalue='"+totalvalue+"',"; + qry = qry +"curr='"+curr+"',prdate='"+prdate+"',status='"+status+"',statusdescription='"+statusdescription+"',"; + qry = qry +"idxapproval='"+idxapproval+"',nikapproval='"+nikapproval+"',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)); + 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); + + } + } + + async queryUpdatePr(req, callback){ + var apires = this.getApiResultDefined(); + try { + // console.log(req.body); + let idxpr= req.body.idxpr; + let idxjustification= req.body.idxjustification; + let justificationnumber= req.body.justificationnumber; + let trxidpr = req.body.trxidpr; + let prnumber = req.body.prnumber; + let costcenter = req.body.costcenter; + let profitcenter = req.body.profitcenter; + let description = req.body.description; + let qty = req.body.qty; + let unit = req.body.unit; + let netprice = req.body.netprice; + let totalvalue = req.body.totalvalue; + let curr = req.body.curr; + let prdate = req.body.prdate; + let idxapproval = req.body.idxapproval; + let nikapproval = req.body.nikapproval; + let nik = req.body.nik; + let status = -1; + let statusdescription = "draft"; + + let qry = "update tbl_pr "; + qry = qry +"set trxidpr='"+trxidpr+"',prnumber='"+prnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',costcenter='"+costcenter+"',"; + qry = qry +"profitcenter='"+profitcenter+"',description='"+description+"',qty='"+qty+"',unit='"+unit+"',netprice='"+netprice+"',totalvalue='"+totalvalue+"',"; + qry = qry +"idxapproval='"+idxapproval+"',nikapproval='"+nikapproval+"',curr='"+curr+"',prdate='"+prdate+"',status='"+status+"',statusdescription='"+statusdescription+"',uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='"+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 + { + var res = JSON.parse(JSON.stringify(result)); + 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 queryUpdateStatusPr(req,prsapnumber, sapmessage, callback) { + try { + var apires = this.getApiResultDefined(); + var idxpr = req.body.idxpr; + var status = req.body.status; + var statusdescription = req.body.statusdescription; + var description = req.body.description; + var curr = req.body.curr; + var nik = req.body.nik; + + var swherestatus="status='" + status +"',statusdescription='" + statusdescription +"',"; + if(sapmessage){ + swherestatus=""; + } + + var setprnumber="prnumber='"+prsapnumber+"',"; + if(!prsapnumber){setprnumber="";} + + var setdescription=""; + if(description){ + setdescription="description='"+description+"',"; + } + if(curr){ + setdescription+="curr='"+curr+"',"; + } + + // console.log(setdescription); + var qry = "update tbl_pr set "+setprnumber+setdescription+"sapmessage='"+sapmessage+"',"+swherestatus+"uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='" + 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 + { + 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 queryDeletePr(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_pr "; + 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 queryPrDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let _idx= req.query.id; + + let qry = "select * from vw_pr 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(dataRows<=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 queryPrList(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 qry = "select * from vw_pr "; + // qry = qry +"where (trim(trxidpr) like '%"+ keyword +"%' or trim(prnumber) like '%"+ keyword +"%') "; + // qry = qry +"and iby='"+nik+"' and status in("+status+") order by id asc limit " + offset + ", " + limit; + + let swherenik=""; + if(nik){ + swherenik="iby='"+nik+"' and "; + } + + + let qry = "select * from vw_pr "; + qry = qry +"where (trim(trxidpr) like '%"+ keyword +"%' or trim(prnumber) like '%"+ keyword +"%') "; + qry = qry +"and "+swherenik+" status in("+status+") order by id 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_pr "; + qry = qry +"where (trim(trxidpr) like '%"+ keyword +"%' or trim(prnumber) like '%"+ keyword +"%') "; + qry = qry +"and "+swherenik+" status in("+status+") order by id 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 + { + 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 queryApprovedPR(req, callback) { + try { + var apires = this.getApiResultDefined(); + let idxpr= req.body.idxpr; + let idxjustification= req.body.idxjustification; + let justificationnumber= req.body.justificationnumber; + let trxidpr = req.body.trxidpr; + let prnumber = req.body.prnumber; + let costcenter = req.body.costcenter; + let profitcenter = req.body.profitcenter; + let description = req.body.description; + let qty = req.body.qty; + let unit = req.body.unit; + let netprice = req.body.netprice; + let totalvalue = req.body.totalvalue; + let curr = req.body.curr; + let prdate = req.body.prdate; + let idxapproval = req.body.idxapproval; + let nikapproval = req.body.nikapproval; + let nik = req.body.nik; + let status = 2; + let statusdescription = "Approval"; + let approveddate = req.body.approveddate; + var token =this.getToken(); + var filepng = token+"pr.png"; + // token =getToken(); + token = token +","+nikapproval; + + let qry = "update tbl_pr "; + qry = qry +"set trxidpr='"+trxidpr+"',prnumber='"+prnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',costcenter='"+costcenter+"',"; + qry = qry +"profitcenter='"+profitcenter+"',description='"+description+"',qty='"+qty+"',unit='"+unit+"',netprice='"+netprice+"',totalvalue='"+totalvalue+"',"; + qry = qry +"idxapproval='"+idxapproval+"',nikapproval='"+nikapproval+"',approveddate='"+approveddate+"',curr='"+curr+"',prdate='"+prdate+"',status='"+status+"',statusdescription='"+statusdescription+"',"; + qry = qry +"token=md5('"+token+"'),filepng='"+filepng+"',uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='"+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 + { + QRCode.toDataURL(token, function (err, code) { + // console.log(code); + if(err) { + 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){ + apires.meta['message'] = err.toString(); + apires.meta['code'] = 500; + callback(err.toString(), apires); + } + else{ + apires.success = true; + apires.data = { + "isapproved":1, + "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 queryPrManagementList(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.query.nik; + + let swherenik="and iby='"+nik+"'"; + if(nik=='999999'){ + swherenik=""; + } + + // let qry = "select * from vw_prmanagement "; + // qry = qry +"where (trim(trxidpr) like '%"+ keyword +"%' or trim(prnumber) like '%"+ keyword +"%') "; + // qry = qry +swherenik+" order by id asc limit " + offset + ", " + limit; + let qry = "select * from vw_prmanagement "; + qry = qry +"where (trim(trxidpr) like '%"+ keyword +"%' or trim(prnumber) like '%"+ keyword +"%') "; + // qry = qry +swherenik+" order by id 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_prmanagement "; + qry = qry +"where (trim(trxidpr) like '%"+ keyword +"%' or trim(prnumber) like '%"+ keyword +"%') "; + qry = qry + swherenik +" 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 queryPrManagementListDetail(req,callback){ + var apires = this.getApiResultDefined(); + try { + + let idxpr = req.query.idxpr; + let qry = "select * from vw_prmanagement "; + qry = qry +"where id='"+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 + { + apires.meta.code = 200; + if(result.length>0){ + apires.success = true; + apires.data=JSON.parse(JSON.stringify(result)); + } + else{ + 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 = PrAdapter; \ No newline at end of file diff --git a/adapter/procjustificationadapter.js b/adapter/procjustificationadapter.js new file mode 100644 index 0000000..41a5c9c --- /dev/null +++ b/adapter/procjustificationadapter.js @@ -0,0 +1,731 @@ +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; + } +} + +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"; + + // 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; + + 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;}); + }); + + 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); + + } + } + + 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 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{ + + 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 diff --git a/adapter/vendoradapter.js b/adapter/vendoradapter.js new file mode 100644 index 0000000..387516b --- /dev/null +++ b/adapter/vendoradapter.js @@ -0,0 +1,239 @@ +const db=require('../config/dbproc.js'); +const Adapter=require('./dbadapter.js'); + + +class VendorAdapter extends Adapter{ + constructor(){ + super(); + } + + + async queryVendorList(req,callback){ + try { + let apires = this.getApiResultDefined(); + let limit = req.body.limit; + let offset = req.body.offset; + let keyword = req.body.keyword; + let status = req.body.status; + + let swhereactivate=""; + if(status==0||status==1){ + swhereactivate=" and isactivated='"+status+"'"; + } + let qry = "select * from vw_vendorinfo "; + qry = qry +"where (trim(vendorid) like '%"+ keyword +"%' or trim(vendorname) like '%"+ keyword +"%') "+swhereactivate+" 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 + }); + qry = "select * from vw_vendorinfo "; + qry = qry +"where (trim(vendorid) like '%"+ keyword +"%' or trim(vendorname) like '%"+ keyword +"%') 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 queryVendorDetail(req,callback){ + try { + let apires = this.getApiResultDefined(); + let id = req.query.id; + // console.log(req); + let qry = "select * from vw_vendorinfo "; + qry = qry +"where id='"+id+"' order by id asc 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){ + 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 queryDeleteVendor(req, callback){ + try { + let apires = this.getApiResultDefined(); + let id = req.body.id; + let remarkdeleted = req.body.remarkdeleted; + let nik = req.body.nik; + + let qry = "update tbl_vendorinfo "; + 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 queryNewVendor(req,callback){ + try { + let apires = this.getApiResultDefined(); + let vendorid = req.body.vendorid; + let vendorname = req.body.vendorname; + let picname = req.body.picname; + let address = req.body.address; + let telp = req.body.telp; + let location = req.body.location; + let bussinessgroup = req.body.bussinessgroup; + let isactivated = req.body.isactivated; + let nik = req.body.nik; + + let qry = "insert into tbl_vendorinfo "; + qry = qry +"set vendorid='"+vendorid+"',vendorname='"+vendorname+"',picname='"+picname+"',telp='"+telp+"',"; + qry = qry +"address='"+address+"',location='"+location+"',bussinessgroup='"+bussinessgroup+"',isactivated='"+isactivated+"',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 + { + 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 queryUpdateVendor(req,callback){ + try { + let apires = this.getApiResultDefined(); + let vendorid = req.body.vendorid; + let vendorname = req.body.vendorname; + let picname = req.body.picname; + let address = req.body.address; + let telp = req.body.telp; + let location = req.body.location; + let bussinessgroup = req.body.bussinessgroup; + let isactivated = req.body.isactivated; + let nik = req.body.nik; + let id = req.body.id; + + let qry = "update tbl_vendorinfo "; + qry = qry +"set vendorid='"+vendorid+"',vendorname='"+vendorname+"',picname='"+picname+"',telp='"+telp+"',"; + qry = qry +"address='"+address+"',location='"+location+"',bussinessgroup='"+bussinessgroup+"',isactivated='"+isactivated+"',uby='"+nik+"',udt=now() "; + qry = qry +"where _idx='"+id+"'"; + + // 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.meta.message = "Updated Success"; + callback(null, apires); + + } + }); + + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback('error',apires); + } + } + + + + + + + +} + +module.exports = VendorAdapter; diff --git a/app.js b/app.js new file mode 100644 index 0000000..c54546c --- /dev/null +++ b/app.js @@ -0,0 +1,81 @@ +const express = require('express'); +const bodyparser = require('body-parser'); +const fs = require('fs'); +const app = express(); +const cors = require('cors'); +const dotenv = require('dotenv'); +dotenv.config({path: __dirname + '/.env'}); +const port = process.env.PORT || 9000; + +const Controllers = require('./controllers/controller.js'); +const controllers = new Controllers(); +var apireshandler = controllers.getApiResultDefined(); + +app.use(bodyparser.urlencoded({ extended: false })); //for x-www-urlencoded
+ +app.use(express.urlencoded({ limit: '100mb', extended: true, parameterLimit: 50000 })); //===>for application json +// app.use(bodyparser.json('application/json')); +app.use(bodyparser.json({ limit: '100mb' })); + +app.use(cors()); +// app.use((req, res, next) => { +// // res.setHeader('Access-Allow-Control-Origin','https://cdpn.io'); hiii +// res.setHeader('Access-Control-Allow-Origin', '*'); //== Allow all request client +// res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE'); +// res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization'); +// // res.setHeader('Access-Control-Allow-Credentials', true); +// next(); +// }); + +app.set('trust proxy', false); +process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; + + +// === DYNAMICALLY INCLUDE ROUTES ( CONTROLLER ) +fs.readdirSync('./routes').forEach(function (file) { + var rf = false; + if (file.substr(-3) == '.js') { + var fl = (file.substr(0, file.length - 3)); + var router = require('./routes/' + fl); + // console.log('./routes/' + fl); + app.use('/' + fl, router); + rf = true; + } + if (!rf) { res.send("File not found."); } +}); +//app.use('/users', userRoutes); + +app.use(function (error, req, res, next) { + //console.log(error.statusCode); + // res.status(401).send('401: '+error); + // if(error.statusCode==401){ + // } + // console.log(error); + res.append("responseData","{statusCode : "+error.statusCode+",message : "+error.message+"}"); + apireshandler.meta.code = error.statusCode; + apireshandler.meta.message = error.message; + + res.status(error.statusCode).json(apireshandler); + //next(); + +}); + +// // // Handle 404 +// app.use(function (req, res) { +// res.status(404).send('404: Route not Found, please contact your administrator'); +// }); + +// // // Handle 500 +// app.use(function (error, req, res, next) { +// console.log(error); +// res.status(200).send('500: Internal Server Error, err : '+error); +// }); + +// // Handle 502 +// app.use(function (error, req, res, next) { +// res.status(502).send('502: Bad gateway'); +// }); + +app.listen(port,function(){ + console.log("Starting "+process.env.APPNAME+" running on 8080"); +}); diff --git a/assets/bast/basthandoversign_999999_1706086740310.PDF b/assets/bast/basthandoversign_999999_1706086740310.PDF new file mode 100644 index 0000000..b84c05e Binary files /dev/null and b/assets/bast/basthandoversign_999999_1706086740310.PDF differ diff --git a/assets/bast/basthandoversign_999999_1719983170545.pdf b/assets/bast/basthandoversign_999999_1719983170545.pdf new file mode 100644 index 0000000..ee0dff2 Binary files /dev/null and b/assets/bast/basthandoversign_999999_1719983170545.pdf differ diff --git a/assets/bast/pdf/bast_999999_1719982918934.pdf b/assets/bast/pdf/bast_999999_1719982918934.pdf new file mode 100644 index 0000000..ee0dff2 Binary files /dev/null and b/assets/bast/pdf/bast_999999_1719982918934.pdf differ diff --git a/assets/images/user.png b/assets/images/user.png new file mode 100755 index 0000000..2be4f03 Binary files /dev/null and b/assets/images/user.png differ diff --git a/assets/justification/justifikasi_00001.docx b/assets/justification/justifikasi_00001.docx new file mode 100644 index 0000000..797a4d8 Binary files /dev/null and b/assets/justification/justifikasi_00001.docx differ diff --git a/assets/justification/justifikasi_00001_1764809633844.docx b/assets/justification/justifikasi_00001_1764809633844.docx new file mode 100644 index 0000000..74d4fe1 Binary files /dev/null and b/assets/justification/justifikasi_00001_1764809633844.docx differ diff --git a/assets/justification/justifikasi_00002_1764811346034.docx b/assets/justification/justifikasi_00002_1764811346034.docx new file mode 100644 index 0000000..91f29b5 Binary files /dev/null and b/assets/justification/justifikasi_00002_1764811346034.docx differ diff --git a/assets/justification/justifikasi_24024_1761037105318.docx b/assets/justification/justifikasi_24024_1761037105318.docx new file mode 100644 index 0000000..4505fca Binary files /dev/null and b/assets/justification/justifikasi_24024_1761037105318.docx differ diff --git a/assets/justification/justifikasi_24024_1761703684476.docx b/assets/justification/justifikasi_24024_1761703684476.docx new file mode 100644 index 0000000..c66aba3 Binary files /dev/null and b/assets/justification/justifikasi_24024_1761703684476.docx differ diff --git a/assets/justification/justifikasi_93003_1727860830921.docx b/assets/justification/justifikasi_93003_1727860830921.docx new file mode 100644 index 0000000..cfb9c27 Binary files /dev/null and b/assets/justification/justifikasi_93003_1727860830921.docx differ diff --git a/assets/justification/justifikasi_93003_1730251674421.docx b/assets/justification/justifikasi_93003_1730251674421.docx new file mode 100644 index 0000000..2258c00 Binary files /dev/null and b/assets/justification/justifikasi_93003_1730251674421.docx differ diff --git a/assets/justification/justifikasi_93003_1742435649899.docx b/assets/justification/justifikasi_93003_1742435649899.docx new file mode 100644 index 0000000..1f2fcb8 Binary files /dev/null and b/assets/justification/justifikasi_93003_1742435649899.docx differ diff --git a/assets/justification/justifikasi_93003_1750379348197.docx b/assets/justification/justifikasi_93003_1750379348197.docx new file mode 100644 index 0000000..9751136 Binary files /dev/null and b/assets/justification/justifikasi_93003_1750379348197.docx differ diff --git a/assets/justification/justifikasi_93003_1750379909152.docx b/assets/justification/justifikasi_93003_1750379909152.docx new file mode 100644 index 0000000..4e3b9f5 Binary files /dev/null and b/assets/justification/justifikasi_93003_1750379909152.docx differ diff --git a/assets/justification/justifikasi_93003_1750643632840.docx b/assets/justification/justifikasi_93003_1750643632840.docx new file mode 100644 index 0000000..b7d05c4 Binary files /dev/null and b/assets/justification/justifikasi_93003_1750643632840.docx differ diff --git a/assets/justification/justifikasi_999999.docx b/assets/justification/justifikasi_999999.docx new file mode 100644 index 0000000..61cc524 Binary files /dev/null and b/assets/justification/justifikasi_999999.docx differ diff --git a/assets/justification/justifikasi_999999_1715128605400.docx b/assets/justification/justifikasi_999999_1715128605400.docx new file mode 100644 index 0000000..74d4fe1 Binary files /dev/null and b/assets/justification/justifikasi_999999_1715128605400.docx differ diff --git a/assets/justification/justifikasi_999999_1715652628646.docx b/assets/justification/justifikasi_999999_1715652628646.docx new file mode 100644 index 0000000..39946d7 Binary files /dev/null and b/assets/justification/justifikasi_999999_1715652628646.docx differ diff --git a/assets/justification/justifikasi_999999_1719979817969.docx b/assets/justification/justifikasi_999999_1719979817969.docx new file mode 100644 index 0000000..74d4fe1 Binary files /dev/null and b/assets/justification/justifikasi_999999_1719979817969.docx differ diff --git a/assets/justification/justifikasi_999999_1727860642953.docx b/assets/justification/justifikasi_999999_1727860642953.docx new file mode 100644 index 0000000..74d4fe1 Binary files /dev/null and b/assets/justification/justifikasi_999999_1727860642953.docx differ diff --git a/assets/justification/justifikasi_999999_1764735829437.docx b/assets/justification/justifikasi_999999_1764735829437.docx new file mode 100644 index 0000000..74d4fe1 Binary files /dev/null and b/assets/justification/justifikasi_999999_1764735829437.docx differ diff --git a/assets/justification/justifikasi_999999_1764737315371.docx b/assets/justification/justifikasi_999999_1764737315371.docx new file mode 100644 index 0000000..74d4fe1 Binary files /dev/null and b/assets/justification/justifikasi_999999_1764737315371.docx differ diff --git a/assets/justification/merge/justifikasi_00001_1764814771305.docx b/assets/justification/merge/justifikasi_00001_1764814771305.docx new file mode 100644 index 0000000..36be005 Binary files /dev/null and b/assets/justification/merge/justifikasi_00001_1764814771305.docx differ diff --git a/assets/justification/merge/justifikasi_999999_1715128671700.docx b/assets/justification/merge/justifikasi_999999_1715128671700.docx new file mode 100644 index 0000000..9ba7875 Binary files /dev/null and b/assets/justification/merge/justifikasi_999999_1715128671700.docx differ diff --git a/assets/justification/merge/justifikasi_999999_1715652671617.docx b/assets/justification/merge/justifikasi_999999_1715652671617.docx new file mode 100644 index 0000000..6664017 Binary files /dev/null and b/assets/justification/merge/justifikasi_999999_1715652671617.docx differ diff --git a/assets/justification/merge/justifikasi_999999_1719980231559.docx b/assets/justification/merge/justifikasi_999999_1719980231559.docx new file mode 100644 index 0000000..c7f1311 Binary files /dev/null and b/assets/justification/merge/justifikasi_999999_1719980231559.docx differ diff --git a/assets/justification/pdf/justifikasi_00001_1764814771305.pdf b/assets/justification/pdf/justifikasi_00001_1764814771305.pdf new file mode 100644 index 0000000..d4fbfed Binary files /dev/null and b/assets/justification/pdf/justifikasi_00001_1764814771305.pdf differ diff --git a/assets/justification/pdf/justifikasi_999999_1715128671700.pdf b/assets/justification/pdf/justifikasi_999999_1715128671700.pdf new file mode 100644 index 0000000..9b1e596 Binary files /dev/null and b/assets/justification/pdf/justifikasi_999999_1715128671700.pdf differ diff --git a/assets/justification/pdf/justifikasi_999999_1715652671617.pdf b/assets/justification/pdf/justifikasi_999999_1715652671617.pdf new file mode 100644 index 0000000..7013c32 Binary files /dev/null and b/assets/justification/pdf/justifikasi_999999_1715652671617.pdf differ diff --git a/assets/justification/pdf/justifikasi_999999_1719980231559.pdf b/assets/justification/pdf/justifikasi_999999_1719980231559.pdf new file mode 100644 index 0000000..440719e Binary files /dev/null and b/assets/justification/pdf/justifikasi_999999_1719980231559.pdf differ diff --git a/assets/png/020184.png b/assets/png/020184.png new file mode 100644 index 0000000..4dcc200 Binary files /dev/null and b/assets/png/020184.png differ diff --git a/assets/png/060658.png b/assets/png/060658.png new file mode 100644 index 0000000..46eab08 Binary files /dev/null and b/assets/png/060658.png differ diff --git a/assets/png/067125.png b/assets/png/067125.png new file mode 100644 index 0000000..fa26b4f Binary files /dev/null and b/assets/png/067125.png differ diff --git a/assets/png/280361.png b/assets/png/280361.png new file mode 100644 index 0000000..8b574f6 Binary files /dev/null and b/assets/png/280361.png differ diff --git a/assets/png/337056.png b/assets/png/337056.png new file mode 100644 index 0000000..0c1e21f Binary files /dev/null and b/assets/png/337056.png differ diff --git a/assets/png/408467.png b/assets/png/408467.png new file mode 100644 index 0000000..e195b2c Binary files /dev/null and b/assets/png/408467.png differ diff --git a/assets/png/508846.png b/assets/png/508846.png new file mode 100644 index 0000000..6b46ef6 Binary files /dev/null and b/assets/png/508846.png differ diff --git a/assets/png/522516.png b/assets/png/522516.png new file mode 100644 index 0000000..329bd73 Binary files /dev/null and b/assets/png/522516.png differ diff --git a/assets/png/538778.png b/assets/png/538778.png new file mode 100644 index 0000000..1269057 Binary files /dev/null and b/assets/png/538778.png differ diff --git a/assets/png/667586pr.png b/assets/png/667586pr.png new file mode 100644 index 0000000..922f16d Binary files /dev/null and b/assets/png/667586pr.png differ diff --git a/assets/png/776335.png b/assets/png/776335.png new file mode 100644 index 0000000..dc47bf1 Binary files /dev/null and b/assets/png/776335.png differ diff --git a/assets/pngproc/670728.png b/assets/pngproc/670728.png new file mode 100644 index 0000000..179a026 Binary files /dev/null and b/assets/pngproc/670728.png differ diff --git a/assets/pngproc/753115.png b/assets/pngproc/753115.png new file mode 100644 index 0000000..075be76 Binary files /dev/null and b/assets/pngproc/753115.png differ diff --git a/assets/pngproc/776618.png b/assets/pngproc/776618.png new file mode 100644 index 0000000..a1c5a4e Binary files /dev/null and b/assets/pngproc/776618.png differ diff --git a/assets/procjustification/justifikasi_999999_1719981065384.docx b/assets/procjustification/justifikasi_999999_1719981065384.docx new file mode 100644 index 0000000..74d4fe1 Binary files /dev/null and b/assets/procjustification/justifikasi_999999_1719981065384.docx differ diff --git a/assets/procjustification/merge/procjustifikasi_999999_1719981561245.docx b/assets/procjustification/merge/procjustifikasi_999999_1719981561245.docx new file mode 100644 index 0000000..55d4f8a Binary files /dev/null and b/assets/procjustification/merge/procjustifikasi_999999_1719981561245.docx differ diff --git a/assets/procjustification/pdf/procjustifikasi_999999_1719981561245.pdf b/assets/procjustification/pdf/procjustifikasi_999999_1719981561245.pdf new file mode 100644 index 0000000..d901a76 Binary files /dev/null and b/assets/procjustification/pdf/procjustifikasi_999999_1719981561245.pdf differ diff --git a/assets/procjustification/procjustifikasi_999999.docx b/assets/procjustification/procjustifikasi_999999.docx new file mode 100644 index 0000000..2458413 Binary files /dev/null and b/assets/procjustification/procjustifikasi_999999.docx differ diff --git a/assets/words/JustifikasiSample.docx b/assets/words/JustifikasiSample.docx new file mode 100755 index 0000000..532ab8f Binary files /dev/null and b/assets/words/JustifikasiSample.docx differ diff --git a/assets/words/basttemplate.docx b/assets/words/basttemplate.docx new file mode 100755 index 0000000..02cca80 Binary files /dev/null and b/assets/words/basttemplate.docx differ diff --git a/assets/words/justifikasitemplate.docx b/assets/words/justifikasitemplate.docx new file mode 100755 index 0000000..74d4fe1 Binary files /dev/null and b/assets/words/justifikasitemplate.docx differ diff --git a/config/collections/dbkebengkel.js b/config/collections/dbkebengkel.js new file mode 100644 index 0000000..c2c01b1 --- /dev/null +++ b/config/collections/dbkebengkel.js @@ -0,0 +1,15 @@ +const mongoose = require('mongoose'); +// const dburl='mongodb://root:s4lasan2016@150.242.110.114:27017/dbmidtpay?authSource=admin'; +const dburl='mongodb://root:s4lasan2016@103.84.192.250:27017/dbkebengkel?authSource=admin'; + +mongoose.Promise = global.Promise; +mongoose.connect(dburl,{ useNewUrlParser: true, useUnifiedTopology: true },function(err) { + if (err) { + console.error('Error connecting: ' + err.stack); + return; + } + console.log('Collection established'); + //db.close(); +}); + +module.exports = mongoose; \ No newline at end of file diff --git a/config/dbproc.js b/config/dbproc.js new file mode 100644 index 0000000..8d27732 --- /dev/null +++ b/config/dbproc.js @@ -0,0 +1,20 @@ +// console.log(libinit.gethost); +const mysql = require('mysql'); +const dbcon = mysql.createConnection({ + host : process.env.HOSTDB, + user : process.env.USERDB, + password : "ssotcel#20i7", + database : process.env.DBHOST, + acquireTimeout: 30000, + insecureAuth: true, + timezone: 'utc' +}); + +dbcon.connect(function(err) { + if (err) { + console.error('Error connecting: '+process.env.PASSDB+' ' + err.stack); + return; + } + console.log('WS Ver 1.0.0 Proc connected'); +}); +module.exports = dbcon; diff --git a/controllers/bast.js b/controllers/bast.js new file mode 100644 index 0000000..0814c36 --- /dev/null +++ b/controllers/bast.js @@ -0,0 +1,226 @@ +const BastAdapter=require('../adapter/bastadapter.js'); +const bastadapter = new BastAdapter(); +const Controllers = require('./controller.js'); +const controllers = new Controllers(); +var apireshandler = controllers.getApiResultDefined(); +const baseurlsap="http://"+process.env.HOSTSAP+"/sapapi/index.php/api"; +const apikeysap = "befea63a-7c47-4323-afea-968a3168fe0a"; +const request = require('request'); + +exports.getBastActivityList = ( req, res ) => { + try{ + bastadapter.queryBastActivityList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + bastadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [20] : Bast controller, " + err.toString(); + bastadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getBastHandoverList = ( req, res ) => { + try{ + bastadapter.queryBastHandoverList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + bastadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [20] : Bast controller, " + err.toString(); + bastadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getBastActivityListDetail = ( req, res ) => { + try{ + bastadapter.queryBastActivityListDetail(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + bastadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [35] : Bast controller, " + err.toString(); + bastadapter.sendResponse(502, apireshandler, res); + } +} + +exports.createBastold = ( req, res, next ) => { + try{ + let filedoctemplate=''; + if(req.body.filename === undefined){ + filedoctemplate="";//req.file.originalname; + bastadapter.queryCreateBAST(filedoctemplate, req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + bastadapter.sendResponse(statusCode,data, res); + }); + } + else{ + // filedoctemplate=req.file.originalname; + let ext=req.body.filename.split(".")[1]; + let filename = 'BAST_'+req.nik+'_' + Date.now() + "."+ ext; + filedoctemplate=req.body.filename; + fs.rename(process.env.BASEPATH+'/assets/procjustification/'+req.body.filename, process.env.BASEPATH+'/assets/procjustification/'+filename, function(err) { + if ( err ) { + bastadapter.sendResponse(500,err, res); + } + else{ + bastadapter.queryCreateBAST(filedoctemplate, req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + bastadapter.sendResponse(statusCode,data, res); + }); + + } + }); + } + + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [182] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.createBast = ( req, res, next ) => { + try{ + let filedoctemplate=''; + if(req.file === undefined){ + filedoctemplate="";//req.file.originalname; + } + else{ + // filedoctemplate=req.file.originalname; + filedoctemplate=req.body.filename; + } + + bastadapter.queryCreateBAST(filedoctemplate, req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + bastadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [182] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.uploadHandOverSign = ( req, res, next ) => { + try{ + let filehandoversign=''; + if(req.file === undefined){ + filehandoversign="";//req.file.originalname; + } + else{ + // filedoctemplate=req.file.originalname; + filehandoversign=req.body.filename; + } + + bastadapter.queryUploadHandoverSign(filehandoversign, req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + bastadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [138] : bast controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getBastList = ( req, res ) => { + try{ + bastadapter.queryBastList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + bastadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [74] : Bast controller, " + err.toString(); + bastadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getBastDetailList = ( req, res ) => { + try{ + bastadapter.queryBastDetailList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + bastadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [74] : Bast controller, " + err.toString(); + bastadapter.sendResponse(502, apireshandler, res); + } +} + +exports.setUpdateHandOverold = ( req, res ) => { + try{ + let ext=req.body.filename.split(".")[1]; + let filename = 'basthandover_'+req.nik+'_' + Date.now() + "."+ ext; + filedoctemplate=req.body.filename; + fs.rename(process.env.BASEPATH+'/assets/bast/'+req.body.filename, process.env.BASEPATH+'/assets/bast/'+filename, function(err) { + if ( err ) { + bastadapter.sendResponse(500,err, res); + } + else{ + bastadapter.queryCreateBAST(filedoctemplate, req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + bastadapter.sendResponse(statusCode,data, res); + }); + + } + }); + + bastadapter.queryUpdateHandover(req, filename, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + bastadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [112] : Bast controller, " + err.toString(); + bastadapter.sendResponse(502, apireshandler, res); + } +} + +exports.setUpdateHandOver = ( req, res ) => { + try{ + let filename=''; + if(req.file === undefined){ + filename="";//req.file.originalname; + } + else{ + filename=req.body.filename;//req.file.originalname; + } + + bastadapter.queryUpdateHandover(req, filename, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + bastadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [112] : Bast controller, " + err.toString(); + bastadapter.sendResponse(502, apireshandler, res); + } +} diff --git a/controllers/budget.js b/controllers/budget.js new file mode 100644 index 0000000..cfe7f57 --- /dev/null +++ b/controllers/budget.js @@ -0,0 +1,199 @@ + +const BudgetAdapter=require('../adapter/budgetadapter.js'); +const budgetadapter = new BudgetAdapter(); + +exports.getListBudget = ( req, res ) => { + try{ + budgetadapter.queryBudgetList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + budgetadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [16] : Budget controller, " + err.toString(); + budgetadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getBudgetType = ( req, res ) => { + try{ + budgetadapter.queryBudgetType(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + budgetadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [31] : Budget controller, " + err.toString(); + budgetadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getBudgetDetail = ( req, res ) => { + try{ + budgetadapter.queryBudgetDetail(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + budgetadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [46] : Budget controller, " + err.toString(); + budgetadapter.sendResponse(502, apireshandler, res); + } +} + +exports.deleteBudget = ( req, res ) => { + try{ + budgetadapter.queryDeleteBudget(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + budgetadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [46] : Budget controller, " + err.toString(); + budgetadapter.sendResponse(502, apireshandler, res); + } +} + +exports.setNewBudget = ( req, res ) => { + try{ + budgetadapter.queryNewBudget(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + budgetadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [76] : Budget controller, " + err.toString(); + budgetadapter.sendResponse(502, apireshandler, res); + } +} +exports.updateBudget = ( req, res ) => { + try{ + budgetadapter.queryUpdateBudget(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + budgetadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [90] : Budget controller, " + err.toString(); + budgetadapter.sendResponse(502, apireshandler, res); + } +} + +// ==== Request budget +exports.getListReqBudget = ( req, res ) => { + try{ + budgetadapter.queryReqBudgetList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + budgetadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [16] : Budget controller, " + err.toString(); + budgetadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getReqBudgetDetail = ( req, res ) => { + try{ + budgetadapter.queryReqBudgetDetail(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + budgetadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [120] : Budget controller, " + err.toString(); + budgetadapter.sendResponse(502, apireshandler, res); + } +} + +exports.setReqBudget = ( req, res ) => { + try{ + budgetadapter.queryReqBudget(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + budgetadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [105] : Budget controller, " + err.toString(); + budgetadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getTrxIdReqBudget = ( req, res ) => { + try{ + budgetadapter.queryGetTrxIdReqBudget(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + budgetadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [120] : Budget controller, " + err.toString(); + budgetadapter.sendResponse(502, apireshandler, res); + } +} + +exports.updateReqBudget = ( req, res ) => { + try{ + budgetadapter.queryUpdateReqBudget(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + budgetadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [135] : Budget controller, " + err.toString(); + budgetadapter.sendResponse(502, apireshandler, res); + } +} + +exports.deleteReqBudget = ( req, res ) => { + try{ + budgetadapter.queryDeleteReqBudget(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + budgetadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [150] : Budget controller, " + err.toString(); + budgetadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getBudgetListByRequest = ( req, res ) => { + try{ + budgetadapter.queryBudgetListbyRequest(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + budgetadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [16] : Budget controller, " + err.toString(); + budgetadapter.sendResponse(502, apireshandler, res); + } +} + diff --git a/controllers/coa.js b/controllers/coa.js new file mode 100644 index 0000000..c5ae378 --- /dev/null +++ b/controllers/coa.js @@ -0,0 +1,110 @@ + +const CoaAdapter=require('../adapter/coaadapter.js'); +const coaAdapter = new CoaAdapter(); + +exports.getListCoa = ( req, res ) => { + try{ + coaAdapter.queryCoaList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + coaAdapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [15] : COA controller, " + err.toString(); + coaAdapter.sendResponse(502, apireshandler, res); + } +} + +exports.getCoaDetail = ( req, res ) => { + try{ + coaAdapter.queryCoaDetail(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + coaAdapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [30] : COA controller, " + err.toString(); + coaAdapter.sendResponse(502, apireshandler, res); + } +} + +exports.deleteCoa = ( req, res ) => { + try{ + coaAdapter.queryDeleteCoa(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + coaAdapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [45] : COA controller, " + err.toString(); + coaAdapter.sendResponse(502, apireshandler, res); + } +} + +exports.setNewCoa = ( req, res ) => { + try{ + coaAdapter.queryNewCoa(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + coaAdapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [60] : COA controller, " + err.toString(); + coaAdapter.sendResponse(502, apireshandler, res); + } +} +exports.updateCoa = ( req, res ) => { + try{ + coaAdapter.queryUpdateCoa(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + coaAdapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [74] : COA controller, " + err.toString(); + coaAdapter.sendResponse(502, apireshandler, res); + } +} + +exports.getCostCenter = ( req, res ) => { + try{ + coaAdapter.queryGetCostCenter(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + coaAdapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [74] : COA controller, " + err.toString(); + coaAdapter.sendResponse(502, apireshandler, res); + } +} + +exports.getProfitCenter = ( req, res ) => { + try{ + coaAdapter.queryGetProfitCenter(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + coaAdapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [74] : COA controller, " + err.toString(); + coaAdapter.sendResponse(502, apireshandler, res); + } +} + + + diff --git a/controllers/controller.js b/controllers/controller.js new file mode 100644 index 0000000..5a891fe --- /dev/null +++ b/controllers/controller.js @@ -0,0 +1,195 @@ +const nodemailer = require('nodemailer'); +const request = require('request'); +var baseurlsms="https://mw.telkomcel.tl/tcel/v1/portal/sms/"; + +class Controller{ + constructor(){ + + } + + getApiResultDefined(){ + return { + success: false, + meta :{ + code: 200, + message: "", + + }, + // meta:{ + // table: objectname, + // type: typeobject, + // total: 0 + // }, + data:[] + }; + } + + getPagination(datalength, limit){ + let pagination = datalength / limit; + if(!Number.isInteger(pagination)){ + pagination=(Math.floor(datalength / limit))+1; + } + return pagination; + } + + getErrorDefined(errcode, msg){ + if(errcode=='404'){ + return { + code : 404, + message : msg!='' ? msg : "Record Not Found" + } + } + } + + static getResultJson(results){ + let resultJson = JSON.stringify(results); + resultJson = JSON.parse(resultJson); + return resultJson; + } + + sendResponse(statusCode, data, res){ + // res.append("responseData", JSON.stringify(data)); + // res.status(statusCode).json(data); + res.status(statusCode).json(data); + } + + static decodeBase64Image(dataString) { + var matches = dataString.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/), + response = {}; + + if (matches.length !== 3) { + return new Error('Invalid input string'); + } + + response.type = matches[1]; + response.data = new Buffer.from(matches[2], 'base64'); + + return response; + } + + + 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; + } + } + + static sentMail(emailto,subject,msg,callback){ + console.log(process.env.EMAIL_KEY); + var transporter = nodemailer.createTransport({ + service: 'gmail', + auth: { + user: 'mitrasejatipangan2021@gmail.com', + pass: process.env.EMAIL_KEY + } + }); + + var mailOptions = { + from: 'MSP ', + to: emailto, + subject: subject, + text: msg + }; + + transporter.sendMail(mailOptions, function(error, info){ + console.log(error); + if (error) { + console.log(error); + callback(error,null); + } else { + callback(null,info); + } + }); + } + + static sendSMS(header,msisdn,msg,callback){ + try { + var msisdnnew = msisdn.length==8 ? '670'+msisdn : msisdn; + let resuri={ + 'method': 'GET', + // 'url': baseurl+'signon', + 'url': baseurlsms+'?msisdn='+msisdnnew+'&content='+msg+'&header='+header, + 'headers': { + 'Content-Type': 'application/json', + }, + // form: formjson, + }; + // console.log(resuri); + process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; + request(resuri, function (error, response) { + if (error) { + // console.log(error); + callback(error,null); + } + else + { + // console.log(response); + callback(null,response); + } + + }); + } catch (error) { + callback(error,null); + } + } + + static sendSMSold(header,msisdn,msg,callback) + { + + request.post( + 'http://150.242.111.251:81/tlstream/index/api', + { + json: { + views:'vwsentsms', + task:'sentmessage', + header: header, + msisdn: msisdn, + msg : msg + } + }, + (error, res, body) => { + if (error) { + console.error(error) + callback(null,error); + return + } + // console.log(`statusCode: ${res.statusCode}`) + // console.log(body); + callback(null,body); + } + ) + } + + static getYmD(){ + var dates= new Date(); + var today=dates.getFullYear()+"-"+dates.getMonth()+"-"+dates.getDate()+" "+dates.getHours()+":"+dates.getMinutes()+":"+dates.getSeconds(); + //console.log(today); + return today; + } + + static getmonth(){ + var dates= new Date(); + //console.log(dates.getMonth()); + return dates.getMonth()+1; + } + static getyears(){ + var dates= new Date(); + return dates.getFullYear(); + } + static getday(){ + var dates= new Date(); + return dates.getDate(); + } +} + +module.exports = Controller; diff --git a/controllers/employee.js b/controllers/employee.js new file mode 100644 index 0000000..8ff4edf --- /dev/null +++ b/controllers/employee.js @@ -0,0 +1,98 @@ + +const EmployeeAdapter=require('../adapter/employeeadapter.js'); +const employeeadapter = new EmployeeAdapter(); +const Controllers = require('../controllers/controller.js'); +const controllers = new Controllers(); +var apireshandler = controllers.getApiResultDefined(); + +exports.getEmployeeAuth = ( req, res ) => { + try{ + employeeadapter.queryEmployeeAuth(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + employeeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [17] : Employee controller, " + err.toString(); + employeeadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getEmployeeWithoutAuth = ( req, res ) => { + try{ + employeeadapter.queryEmployeeWithoutAuth(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + employeeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [17] : Employee controller, " + err.toString(); + employeeadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getEmployeeMenus = ( req, res ) => { + try{ + employeeadapter.queryEmployeeMenus(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + employeeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [33] : Employee controller, " + err.toString(); + employeeadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getEmployeeMenusAccessibility = ( req, res ) => { + try{ + employeeadapter.queryEmployeeAccessibility(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + employeeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [48] : Employee controller, " + err.toString(); + employeeadapter.sendResponse(502, apireshandler, res); + } +} + +exports.setEmployeeMenusAccessibility = ( req, res ) => { + try{ + employeeadapter.queryEmployeeSetMenuAccessibility(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + employeeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [63] : Employee controller, " + err.toString(); + employeeadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getListEmployee = ( req, res ) => { + try{ + employeeadapter.queryListEmployee(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + employeeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [63] : Employee controller, " + err.toString(); + employeeadapter.sendResponse(502, apireshandler, res); + } +} + + diff --git a/controllers/finance.js b/controllers/finance.js new file mode 100644 index 0000000..e27226b --- /dev/null +++ b/controllers/finance.js @@ -0,0 +1,149 @@ +const FinanceAdapter=require('../adapter/financeadapter.js'); +const financeadapter = new FinanceAdapter(); +const Controllers = require('./controller.js'); +const controllers = new Controllers(); +var apireshandler = controllers.getApiResultDefined(); + +exports.getPoPayList = ( req, res ) => { + try{ + financeadapter.queryPoPayList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + financeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [20] : FInance controller, " + err.toString(); + financeadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getPoPayListDetail = ( req, res ) => { + try{ + financeadapter.queryPoPayListDetail(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + financeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [32] : FInance controller, " + err.toString(); + financeadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getPayCheckList = ( req, res ) => { + try{ + financeadapter.queryPayChecklist(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + financeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [47] : FInance controller, " + err.toString(); + financeadapter.sendResponse(502, apireshandler, res); + } +} + +exports.submitPayPo = ( req, res ) => { + try{ + // console.log(req); + financeadapter.querySubmitPayPo(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + financeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [62] : FInance controller, " + err.toString(); + financeadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getFinanceList = ( req, res ) => { + try{ + financeadapter.queryFinanceList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + financeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [20] : FInance controller, " + err.toString(); + financeadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getFinanceListDetail = ( req, res ) => { + try{ + financeadapter.queryFinanceListDetail(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + financeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [20] : FInance controller, " + err.toString(); + financeadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getFinanceDetailUpload = ( req, res ) => { + try{ + financeadapter.queryFinanceDetailUpload(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + financeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [20] : FInance controller, " + err.toString(); + financeadapter.sendResponse(502, apireshandler, res); + } +} + +exports.UploadDocFin = ( req, res ) => { + try{ + let filename=''; + if(req.file === undefined){ + filename="";//req.file.originalname; + } + else{ + filename=req.body.filename; + } + + financeadapter.queryUploadDocFin(req, filename, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + financeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [112] : Finance controller, " + err.toString(); + financeadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getCurrencyList = ( req, res ) => { + try{ + financeadapter.queryCurrencyList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + financeadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [146] : FInance controller, " + err.toString(); + financeadapter.sendResponse(502, apireshandler, res); + } +} \ No newline at end of file diff --git a/controllers/inventory.js b/controllers/inventory.js new file mode 100644 index 0000000..ecf7de4 --- /dev/null +++ b/controllers/inventory.js @@ -0,0 +1,93 @@ + +const InventoryAdapter=require('../adapter/inventoryadapter.js'); +const inventoryadapter = new InventoryAdapter(); + +exports.newInventory = ( req, res ) => { + try{ + inventoryadapter.queryNewInventory(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + inventoryadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [15] : Inventory controller, " + err.toString(); + inventoryadapter.sendResponse(502, apireshandler, res); + } +} + +exports.updInventory = ( req, res ) => { + try{ + inventoryadapter.queryUpdInventory(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + inventoryadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [30] : Budget controller, " + err.toString(); + inventoryadapter.sendResponse(502, apireshandler, res); + } +} + +exports.delInventory = ( req, res ) => { + try{ + inventoryadapter.queryDelInventory(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + inventoryadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [46] : Budget controller, " + err.toString(); + inventoryadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getListInventory = ( req, res ) => { + try{ + inventoryadapter.queryInventoryList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + inventoryadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [60] : Budget controller, " + err.toString(); + inventoryadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getHeaderListPO = ( req, res ) => { + try{ + inventoryadapter.queryInventoryHeaderList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + inventoryadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [60] : Budget controller, " + err.toString(); + inventoryadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getDetailListPO = ( req, res ) => { + try{ + inventoryadapter.queryInventoryDetailList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + inventoryadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [60] : Budget controller, " + err.toString(); + inventoryadapter.sendResponse(502, apireshandler, res); + } +} diff --git a/controllers/justification.js b/controllers/justification.js new file mode 100644 index 0000000..f633285 --- /dev/null +++ b/controllers/justification.js @@ -0,0 +1,277 @@ + +const JustificationAdapter=require('../adapter/justificationadapter.js'); +const justificationadapter = new JustificationAdapter(); +const Controllers = require('../controllers/controller.js'); +const controllers = new Controllers(); +var apireshandler = controllers.getApiResultDefined(); +// var docxConverter = require('docx-pdf'); + +exports.getListBudgetRequest = ( req, res ) => { + try{ + justificationadapter.queryJustificationBudgetRequestList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + justificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [30] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.newJustification = ( req, res ) => { + try{ + console.log('new file justification'); + // let filename=req.file.originalname; + let filename=req.body.filename; + justificationadapter.queryNewJustification(filename, req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + justificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [34] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.updateJustification = ( req, res ) => { + try{ + let filename=''; + if(req.file === undefined){ + filename="";//req.file.originalname; + } + else{ + // filename=req.file.originalname; + filename=req.body.filename; + } + // console.log('filename '+filename); + justificationadapter.queryUpdateJustification(filename, req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + justificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [57] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.updateStatusJustification = ( req, res ) => { + try{ + justificationadapter.queryUpdateStatusJustification(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + justificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [60] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getListCreatedBy = ( req, res ) => { + try{ + justificationadapter.queryListCreatedBy(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + justificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [45] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getListCheckedBy = ( req, res ) => { + try{ + justificationadapter.queryListCheckedBy(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + justificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [60] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getListApprovedBy = ( req, res ) => { + try{ + justificationadapter.queryListApprovedBy(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + justificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [75] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.deleteJustification = ( req, res ) => { + try{ + justificationadapter.queryDeleteJustification(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + justificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [90] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.detailJustification = ( req, res ) => { + try{ + justificationadapter.queryJustificationDetail(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + console.log(data); + justificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [120] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getListJustification = ( req, res ) => { + try{ + justificationadapter.queryJustificationList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + justificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [167] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.setSignedJustification = ( req, res ) => { + try{ + let filename=''; + if(req.file === undefined){ + + filename="";//req.file.originalname; + } + else{ + // filename=req.file.originalname; + filename=req.body.filename; + } + + justificationadapter.querySignedJustification(filename, req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + justificationadapter.sendResponse(statusCode,data, res); + }); + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [182] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.convertDocxToPdf = ( req, res ) => { + try{ + justificationadapter.queryConvertdocxtoPdf(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + justificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [204] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.mergedocx = ( req, res ) => { + try { + let resuri={ + 'method': 'POST', + // 'url': baseurl+'signon', + 'url': 'http://172.17.12.82:8083/PoiWord/authentification/sync.sh', + 'headers': { + 'Content-Type': 'application/json', + 'x-username' : 'proc', + 'x-password' : 'pr0c2022#tc3l' + }, + // form: formjson, + }; + + console.log(resuri); + request(resuri, function (error, response) { + if (error) { + console.log(error); + apireshandler.message = error.toString(); + pradapter.sendResponse(400, apireshandler, res); + } + else + { + console.log(response.body); + var resdata = JSON.parse(response.body); + apireshandler.success = true; + apireshandler.meta.code = statusCode; + apireshandler.data = resdata; + justificationadapter.sendResponse(200, apireshandler, res); + } + }); + } catch (error) { + + } +} + +exports.convertDocxToPdfold = ( req, res ) => { + try{ + docxConverter("./assets/words/justifikasitemplate.docx","./assets/pdf/justifikasitemplate.pdf",function(err,result){ + var statusCode =200; + if(err){ + console.log(err); + statusCode = 500; + } + // let statusCode = data!=null ? data.meta.code : 200 ; + // if(err) statusCode = 500; + console.log('result'+result); + justificationadapter.sendResponse(statusCode,{}, res); + + + }); + + // justificationadapter.querySignedJustification(filename, req,function(err,data){ + // let statusCode = data!=null ? data.meta.code : 200 ; + // if(err) statusCode = 500; + // justificationadapter.sendResponse(statusCode,data, res); + // }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [204] : Justification controller, " + err.toString(); + justificationadapter.sendResponse(502, apireshandler, res); + } +} + diff --git a/controllers/main.js b/controllers/main.js new file mode 100644 index 0000000..46fe825 --- /dev/null +++ b/controllers/main.js @@ -0,0 +1,250 @@ +// const dbadapter=require('../adapter/agentadapter.js'); +//const ProductAdapter = require('../adapter/productadapter.js'); +//const productadapter = new ProductAdapter(); +const MainAdapter=require('../adapter/mainadapter.js'); +const mainadapter = new MainAdapter(); +const Controllers = require('../controllers/controller.js'); +const controllers = new Controllers(); +var apireshandler = controllers.getApiResultDefined(); +var baseurlsms="https://mw.telkomcel.tl/tcel/v1/portal/sms/"; + +exports.getappInfo = (req, res) => { + try { + // console.log("fdfd"); + // var apiResult = {}; + let appinfo = { + "appver" : "1.0.0", + "appname" : "eProc", + "appdescription" : "eProc", + "appurlandroid" : "", + "appurlios" : "" + }; + // apiResult.success=true; + // apiResult.meta = { + + // } + // apiResult.message=""; + // apiResult.data = appinfo; + // console.log(apiResult); + apireshandler.success = true; + apireshandler.message = ""; + apireshandler.data = appinfo; + mainadapter.sendResponse(200,apireshandler, res); + //res.status(200).json(apiResult); + } catch (err) { + apireshandler.message = err.toString(); + apireshandler.errline = "[35] : main controller"; + mainadapter.sendResponse(502, apireshandler, res); + // res.status(502).json({ + // error: error, + // message: "502 : Bad Gateway" + // }); + } +}; + +exports.getTokenauth = ( req, res ) => { + try{ + mainadapter.queryGetToken(req,function(err,data){ + // console.log("logs "+data); + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + mainadapter.sendResponse(statusCode,data,res); + }); + } + catch(err){ + apireshandler.message = err.toString(); + apireshandler.errline = "[20] : Main controller"; + mainadapter.sendResponse(502, apireshandler, res); + } +} + +exports.sendOTPClient = ( req, res ) => { + try{ + mainadapter.querySendOTPClient(req,function(err,data){ + let statusCode = 200; + if(err) statusCode = 500; + + console.log(data); + let resuri={ + 'method': 'GET', + // 'url': baseurl+'signon', + 'url': baseurlsms+'?msisdn='+data[0]['hpnumber']+'&content='+data['message']+'&header=TELIN.TL', + 'headers': { + 'Content-Type': 'application/json', + }, + // form: formjson, + }; + console.log(resuri); + request(resuri, function (error, response) { + if (error) { + apires.message = error.toString(); + apires.errline = "[79] : main controller"; + mainadapter.sendResponse(502,apires, res); + } + else + { + mainadapter.sendResponse(statusCode,data, res); + } + + }); + + }); + } + catch(err){ + apireshandler.message = err.toString(); + apireshandler.errline = "[93] : Main controller"; + mainadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getHomeEmployeeInfo = ( req, res ) => { + try{ + //console.log("here"); + mainadapter.queryGetHomeEmployeeInfo(req,function(err,data){ + let statusCode = 200; + if(err) statusCode = 500; + // console.log(data); + mainadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.message = err.toString(); + apireshandler.errline = "[84] : Main controller"; + mainadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getEmployeeOfficeInfo = ( req, res ) => { + try{ + mainadapter.queryGetEmployeeOfficeInfo(req,function(err,data){ + let statusCode = 200; + if(err) statusCode = 500; + mainadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.message = err.toString(); + apireshandler.errline = "[100] : Main controller"; + mainadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getimageinfo = ( req, res ) => { + try{ + + let routepath = req.query.route; + let filename = req.query.name; + // if(routepath&®ionname){ + // filename = routepath+'/'+filename; + // } + let filepath = process.env.BASEPATH +'/assets/'+routepath+'/'+filename; + // console.log(filepath); + // res.sendFile(filepath); + res.download(filepath, filename); + } + catch (err) { + res.status(502).json({ + error: "502" , + message: err + }); + } +} + +exports.filejustification = ( req, res ) => { + try{ + + let routepath = req.query.route; + let filename = req.query.name; + + // console.log(routepath); + let sproute = routepath.split(":"); + if(sproute.length>1){ + routepath=sproute[0]+"/"+sproute[1]; + } + let filepath = process.env.BASEPATH +'/assets/'+routepath+'/'+filename; + // console.log(filepath); + // res.sendFile(filepath); + res.download(filepath, filename); + } + catch (err) { + res.status(502).json({ + error: "502" , + message: err + }); + } +} + +exports.getfilejustification = ( req, res ) => { + try{ + + let routepath = req.query.route; + let filename = req.query.name; + + let filepath = process.env.BASEPATH +'/assets/'+routepath+'/'+filename; + // console.log(filepath); + res.sendFile(filepath); + } + catch (err) { + res.status(502).json({ + error: "502" , + message: err + }); + } +} + +exports.getjustifikasitemplate = ( req, res ) => { + try{ + + let routepath = req.query.route; + let filename = req.query.name; + // if(routepath&®ionname){ + // filename = routepath+'/'+filename; + // } + let filepath = process.env.BASEPATH +'/assets/'+routepath+'/'+filename; + // console.log(filepath); + res.sendFile(filepath); + } + catch (err) { + res.status(502).json({ + error: "502" , + message: err + }); + } +} + +exports.getbasttemplate = ( req, res ) => { + try{ + + let routepath = req.query.route; + let filename = req.query.name; + let filepath = process.env.BASEPATH +'/assets/'+routepath+'/'+filename; + res.sendFile(filepath); + } + catch (err) { + res.status(502).json({ + error: "502" , + message: err + }); + } +} + +exports.getbastfile = ( req, res ) => { + try{ + + let routepath = req.query.route; + let filename = req.query.name; + let sproute = routepath.split(":"); + if(sproute.length>1){ + routepath=sproute[0]+"/"+sproute[1]; + } + + let filepath = process.env.BASEPATH +'/assets/'+routepath+'/'+filename; + res.sendFile(filepath); + } + catch (err) { + res.status(502).json({ + error: "502" , + message: err + }); + } +} \ No newline at end of file diff --git a/controllers/po.js b/controllers/po.js new file mode 100644 index 0000000..dd3318a --- /dev/null +++ b/controllers/po.js @@ -0,0 +1,1099 @@ +const PoAdapter=require('../adapter/poadapter.js'); +const poadapter = new PoAdapter(); +const Controllers = require('./controller.js'); +const controllers = new Controllers(); +var apireshandler = controllers.getApiResultDefined(); +// const baseurlsap="http://172.20.25.27/sapapi/index.php/api"; +const baseurlsap="http://"+process.env.HOSTSAP+"/sapapi/index.php/api"; +const apikeysap = "befea63a-7c47-4323-afea-968a3168fe0a"; +const request = require('request'); +var fs = require('fs'); + +exports.getListVendor = ( req, res ) => { + try{ + poadapter.queryVendorList(req,function(err,data){ + 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 = " [20] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getPoBoqList = ( req, res ) => { + try{ + poadapter.queryPoBoqlist(req,function(err,data){ + 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 = " [20] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getidxpoheader = ( req, res ) => { + try{ + poadapter.queryGetidxpoheader(req,function(err,data){ + 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 = " [20] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.savePoboq = ( req, res ) => { + try{ + poadapter.querySaveboqdetail(req,function(err,data){ + 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 = " [20] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getLastSignedPo = ( req, res ) => { + try{ + poadapter.queryGetLastSignDate(req,function(err,data){ + 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 = " [20] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.createPOSAP = ( req, res ) => { + try{ + let status = req.body.status; + poadapter.queryUpdatePoHeader(req,function(err,resdata){ + let statusCode = resdata!=null ? resdata.meta.code : 200 ; + if(err){ + statusCode = 500; + poadapter.sendResponse(statusCode,data, res); + } + else{ + poadapter.queryUpdatePoNumber(req,function(err,data){ + 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); + } +} + +exports.createPOSAPold = ( req, res ) => { + try{ + let status = req.body.status; + if(status==1){ + // if(0==1){ + poadapter.queryUpdatePoHeader(req,function(err,resdata){ + let statusCode = resdata!=null ? resdata.meta.code : 200 ; + if(err) statusCode = 500; + // console.log(resdata.data.length); + // poadapter.sendResponse(statusCode,resdata, res); + if(resdata.data.length>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; + let resuri={ + 'method': 'POST', + // 'url': baseurlsap+'/createPo', + '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, + 'headers': { + 'Content-Type': 'application/json', + 'x-api-key' : apikeysap + }, + // form: formjson, + }; + + // console.log(resuri); + request(resuri, function (error, response) { + if (error) { + // console.log(error); + apireshandler.message = error.toString(); + poadapter.sendResponse(400, apireshandler, res); + } + else + { + // console.log(response.body); + var resdata = JSON.parse(response.body); + var errcode = ""; + var errmsg =""; + resdata['RETURN'].forEach(e => { + if(e.TYPE=='E'){ + errcode+=e.NUMBER+", "; + errmsg+=e.MESSAGE+" & "; + } + }); + errcode = errcode.substring(0, errcode.length-2); + errmsg = errmsg.substring(0, errmsg.length-3); + // console.log(errmsg); + + if(errmsg.length>0){ + poadapter.queryUpdatePoNumber(req,resdata['NUMBER']||resdata['EXPPURCHASEORDER'],errmsg,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + data.success = false; + data.meta.message = errmsg; + poadapter.sendResponse(500,data, res); + }); + } + else{ + poadapter.queryUpdatePoNumber(req,resdata['NUMBER']||resdata['EXPPURCHASEORDER'],errmsg,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + poadapter.sendResponse(statusCode,data, res); + }); + } + + // if(errcode.length>0){ + // apireshandler.meta.code = errcode; + // apireshandler.meta.message = errmsg; + // poadapter.sendResponse(200, apireshandler, res); + // } + // else{ + + // // apireshandler.success = true; + // } + + } + + }); + } + else{ + poadapter.sendResponse(statusCode, resdata, res); + } + }); + } + else{ + poadapter.queryUpdatePoHeader(req,function(err,resdata){ + let statusCode = resdata!=null ? resdata.meta.code : 200 ; + if(err){ + statusCode = 500; + poadapter.sendResponse(statusCode,data, res); + } + else{ + poadapter.queryUpdatePoNumber(req,'000','',function(err,data){ + 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); + } +} + +exports.createMIGOPOSAP = ( req, res ) => { + try{ + poadapter.queryUpdateMigoNumber(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + // data.success = false; + // data.meta.message = errmsg; + poadapter.sendResponse(statusCode,data, res); + }); + + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [123] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.createMIGOPOSAPold = ( req, res ) => { + try{ + poadapter.queryPoManagementListDetail(req,function(err,resdata){ + let statusCode = resdata!=null ? resdata.meta.code : 200 ; + if(err) statusCode = 500; + // console.log(resdata.data.length); + // poadapter.sendResponse(statusCode,resdata, res); + if(resdata.data.length>0){ + let gm_code="01"; + let pstng_date=(resdata.data[0]['podate']).toString().trim(); + let doc_date=pstng_date; + let header_txt=(resdata.data[0]['podescription']).toString().trim(); + // let quantity="1"; + let quantity=(resdata.data[0]['totalqty']).toString().trim(); + // let po_unit="PKT"; + let po_unit=(resdata.data[0]['units']).toString().trim(); + let po_number=(resdata.data[0]['ponumber']).toString().trim(); + let po_item="00010"; + let item_text=(resdata.data[0]['podescription']).toString().trim(); + let gr_rcpt="GRreceipt"; + let unload_pt="unloadpoint"; + let movement_ind="B"; + let reason="0001"; + let location="160301"; + let goodsmvt_item="1603|101|"+quantity+"|"+po_unit+"|"+po_number+"|"+po_item+"|"+item_text+"|"; + // let goodsmvt_item="1603|101|"+quantity+"|"+po_number+"|"+po_item+"|"+item_text+"|"; + goodsmvt_item+=gr_rcpt+"|"+unload_pt+"|"+movement_ind+"|"+reason+"|"+location+"|"; + // let zzctrnum = (resdata.data[0]['identifyprojectnumber']).toString().trim();//req.body.podescription; + let resuri={ + 'method': 'POST', + // 'url': baseurlsap+'/createPo', + 'url': baseurlsap+'/migo?gm_code='+gm_code+'&pstng_date='+pstng_date+'&doc_date='+doc_date+'&header_txt='+header_txt+'&goodsmvt_item[]='+goodsmvt_item, + 'headers': { + 'Content-Type': 'application/json', + 'x-api-key' : apikeysap + }, + // form: formjson, + }; + + // http://172.20.25.27/sapapi/index.php/api/migo?gm_code=01&pstng_date=20140404&doc_date=20210404&hea + // der_txt=test header&goodsmvt_item[]=1603|101|1|BH|4110000019|00010|line itemtext|GRreceipt|unloadp + // oint|B|0001|160301| + console.log(resuri); + request(resuri, function (error, response) { + if (error) { + // console.log(error); + apireshandler.message = error.toString(); + poadapter.sendResponse(400, apireshandler, res); + } + else + { + console.log(response.body); + var resdata = JSON.parse(response.body); + var errcode = ""; + var errmsg =""; + resdata['RETURN'].forEach(e => { + if(e.TYPE=='E'){ + errcode+=e.NUMBER+", "; + errmsg+=e.MESSAGE+" & "; + } + }); + errcode = errcode.substring(0, errcode.length-2); + errmsg = errmsg.substring(0, errmsg.length-3); + // console.log(errmsg); + + if(errmsg.length>0){ + poadapter.queryUpdateMigoNumber(req,resdata['GOODSMVT_HEADRET']['MAT_DOC']||'',errmsg,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + data.success = false; + data.meta.message = errmsg; + poadapter.sendResponse(500,data, res); + }); + } + else{ + poadapter.queryUpdateMigoNumber(req,resdata['GOODSMVT_HEADRET']['MAT_DOC'],errmsg,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + poadapter.sendResponse(statusCode,data, res); + }); + } + + // if(errcode.length>0){ + // apireshandler.meta.code = errcode; + // apireshandler.meta.message = errmsg; + // poadapter.sendResponse(200, apireshandler, res); + // } + // else{ + + // // apireshandler.success = true; + // } + + } + + }); + } + else{ + poadapter.sendResponse(statusCode, resdata, res); + } + }); + + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [123] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.deletePoBoq = ( req, res ) => { + try{ + poadapter.queryDeletePoBoq(req,function(err,data){ + 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 = " [185] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getPOManagementList = ( req, res ) => { + try{ + poadapter.queryPoManagementList(req,function(err,data){ + 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 = " [200] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getPOManagementListDetail = ( req, res ) => { + try{ + poadapter.queryPoManagementListDetail(req,function(err,data){ + 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 = " [215] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.changePOSAP = ( req, res ) => { + try{ + req.query.idxpo = req.body.idxpo; + poadapter.queryPoManagementListDetail(req, function (err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err){ + statusCode = 500; + poadapter.sendResponse(statusCode,data, res); + }else{ + var rsdata = JSON.parse(JSON.stringify(data)); + let ponumber = rsdata.data[0]['ponumber']; //Ymd + let podescription = req.body.podescription; //rsdata.data[0]['podescription']; + let totalpo = req.body.totalpo; //rsdata.data[0]['podescription']; + let qty = 1;//req.query.qty; //rsdata.data[0]['podescription']; + let units= rsdata.data[0]['units']; + //http://172.20.25.27/sapapi/index.php/api/changePo?purchaseorder=4110000020&poitem[]=00010|test createPO|0||0||||00000 + let poitem="00010|"+podescription+"|"+qty+"|"+units+"|"+totalpo+"|x|x|"+ponumber+"|00010"; + let resuri={ + 'method': 'POST', + // 'url': baseurl+'signon', + 'url': baseurlsap+'/changePo?purchaseorder='+ponumber+'&poitem[]='+poitem, + 'headers': { + 'Content-Type': 'application/json', + 'x-api-key' : apikeysap + }, + // form: formjson, + }; + + // console.log(resuri); + request(resuri, function (error, response) { + if (error) { + // console.log(error); + apireshandler.message = error.toString(); + poadapter.sendResponse(400, apireshandler, res); + } + else + { + // console.log(response.body); + var resdata = JSON.parse(response.body); + var errcode = ""; + var errmsg =""; + resdata['RETURN'].forEach(e => { + if(e.TYPE=='E'){ + errcode+=e.NUMBER+", "; + errmsg+=e.MESSAGE+" & "; + } + }); + errcode = errcode.substring(0, errcode.length-2); + errmsg = errmsg.substring(0, errmsg.length-3); + if(errcode.length>0){ + apireshandler.meta.code = errcode; + apireshandler.meta.message = errmsg; + // poadapter.sendResponse(200, apireshandler, res); + } + else{ + apireshandler.success = true; + } + poadapter.queryUpdatePOSAP(req,'',errmsg, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err||errcode.length>0) statusCode = 500; + //data.data = resdata; + apireshandler.meta.code = statusCode; + apireshandler.data = data.data; + poadapter.sendResponse(statusCode, apireshandler, res); + }); + } + }); + } + }); + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = "[291] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.releasePOSAP = ( req, res ) => { + try{ + req.query.idxpo = req.body.idxpo; + poadapter.queryPoManagementListDetail(req, function (err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err){ + statusCode = 500; + poadapter.sendResponse(statusCode,data, res); + }else{ + var rsdata = JSON.parse(JSON.stringify(data)); + let ponumber = rsdata.data[0]['ponumber']; //Ymd + //http://172.20.25.27/sapapi/index.php/api/releasePo?im_purchaseorder=4110000020 + let resuri={ + 'method': 'POST', + // 'url': baseurl+'signon', + 'url': baseurlsap+'/releasePo?im_purchaseorder='+ponumber, + 'headers': { + 'Content-Type': 'application/json', + 'x-api-key' : apikeysap + }, + // form: formjson, + }; + + // console.log(resuri); + request(resuri, function (error, response) { + if (error) { + // console.log(error); + apireshandler.message = error.toString(); + poadapter.sendResponse(400, apireshandler, res); + } + else + { + // console.log(response.body); + var resdata = JSON.parse(response.body); + var errcode = ""; + var errmsg =""; + resdata['RETURN'].forEach(e => { + if(e.TYPE=='E'){ + errcode+=e.NUMBER+", "; + errmsg+=e.MESSAGE+" & "; + } + }); + errcode = errcode.substring(0, errcode.length-2); + errmsg = errmsg.substring(0, errmsg.length-3); + if(errcode.length>0){ + apireshandler.meta.code = errcode; + apireshandler.meta.message = errmsg; + // poadapter.sendResponse(200, apireshandler, res); + } + else{ + apireshandler.success = true; + } + poadapter.queryUpdatePOSAP(req,'',errmsg, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err||errcode.length>0) statusCode = 500; + //data.data = resdata; + apireshandler.meta.code = statusCode; + apireshandler.data = data.data; + poadapter.sendResponse(statusCode, apireshandler, res); + }); + } + }); + } + }); + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = "[291] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.unreleasePOSAP = ( req, res ) => { + try{ + req.query.idxpo = req.body.idxpo; + poadapter.queryPoManagementListDetail(req, function (err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err){ + statusCode = 500; + poadapter.sendResponse(statusCode,data, res); + }else{ + var rsdata = JSON.parse(JSON.stringify(data)); + let ponumber = rsdata.data[0]['ponumber']; //Ymd + //http://172.20.25.27/sapapi/index.php/api/releasePo?im_purchaseorder=4110000020 + let resuri={ + 'method': 'POST', + // 'url': baseurl+'signon', + 'url': baseurlsap+'/unreleasePo?number='+ponumber, + 'headers': { + 'Content-Type': 'application/json', + 'x-api-key' : apikeysap + }, + // form: formjson, + }; + + // console.log(resuri); + request(resuri, function (error, response) { + if (error) { + // console.log(error); + apireshandler.message = error.toString(); + poadapter.sendResponse(400, apireshandler, res); + } + else + { + // console.log(response.body); + var resdata = JSON.parse(response.body); + var errcode = ""; + var errmsg =""; + resdata['RETURN'].forEach(e => { + if(e.TYPE=='E'){ + errcode+=e.NUMBER+", "; + errmsg+=e.MESSAGE+" & "; + } + }); + errcode = errcode.substring(0, errcode.length-2); + errmsg = errmsg.substring(0, errmsg.length-3); + if(errcode.length>0){ + apireshandler.meta.code = errcode; + apireshandler.meta.message = errmsg; + // poadapter.sendResponse(200, apireshandler, res); + } + else{ + apireshandler.success = true; + } + poadapter.queryUpdatePOSAP(req,'',errmsg, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err||errcode.length>0) statusCode = 500; + //data.data = resdata; + apireshandler.meta.code = statusCode; + apireshandler.data = data.data; + poadapter.sendResponse(statusCode, apireshandler, res); + }); + } + }); + } + }); + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = "[291] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.createHeaderPOSAP = ( req, res ) => { + try{ + req.query.idxpo = req.body.idxpo; + poadapter.queryUpdateIdentifyProject(req,function(err,resdata){ + let statusCode = resdata!=null ? resdata.meta.code : 200 ; + if(err) statusCode = 500; + // console.log(resdata.data.length); + // poadapter.sendResponse(statusCode,resdata, res); + if(resdata.data.length>0){ + 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"; + + let resuri={ + 'method': 'POST', + '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, + 'headers': { + 'Content-Type': 'application/json', + 'x-api-key' : apikeysap + } + }; + + // console.log(resuri); + request(resuri, function (error, response) { + if (error) { + // console.log(error); + apireshandler.message = error.toString(); + poadapter.sendResponse(400, apireshandler, res); + } + else + { + // console.log("response : " +response.body); + var resdata = JSON.parse(response.body); + var errcode = ""; + var errmsg =""; + if(Array.isArray(resdata)){ + resdata['RETURN'].forEach(e => { + if(e.TYPE=='E'){ + errcode+=e.NUMBER+", "; + errmsg+=e.MESSAGE+" & "; + } + }); + } + + + errcode = errcode.substring(0, errcode.length-2); + errmsg = errmsg.substring(0, errmsg.length-3); + console.log("error : "+errmsg); + + if(errmsg.length>0){ + poadapter.queryUpdatePoNumber(req,function(err,data){ + poadapter.sendResponse(500,data, res); + }); + } + else{ + poadapter.queryUpdatePoNumber(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + poadapter.sendResponse(statusCode,data, res); + }); + } + } + + }); + } + else{ + poadapter.sendResponse(statusCode, resdata, res); + } + }); + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = "[550] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.createHeaderPOSAPold = ( req, res ) => { + try{ + req.query.idxpo = req.body.idxpo; + poadapter.queryUpdateIdentifyProject(req,function(err,resdata){ + let statusCode = resdata!=null ? resdata.meta.code : 200 ; + if(err) statusCode = 500; + // console.log(resdata.data.length); + // poadapter.sendResponse(statusCode,resdata, res); + if(resdata.data.length>0){ + 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"; + + let resuri={ + 'method': 'POST', + '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, + 'headers': { + 'Content-Type': 'application/json', + 'x-api-key' : apikeysap + } + }; + + // console.log(resuri); + request(resuri, function (error, response) { + if (error) { + // console.log(error); + apireshandler.message = error.toString(); + poadapter.sendResponse(400, apireshandler, res); + } + else + { + // console.log("response : " +response.body); + var resdata = JSON.parse(response.body); + var errcode = ""; + var errmsg =""; + if(Array.isArray(resdata)){ + resdata['RETURN'].forEach(e => { + if(e.TYPE=='E'){ + errcode+=e.NUMBER+", "; + errmsg+=e.MESSAGE+" & "; + } + }); + } + + + errcode = errcode.substring(0, errcode.length-2); + errmsg = errmsg.substring(0, errmsg.length-3); + console.log("error : "+errmsg); + + if(errmsg.length>0){ + poadapter.queryUpdatePoNumber(req,'000',errmsg,function(err,data){ + poadapter.sendResponse(500,data, res); + }); + } + else{ + poadapter.queryUpdatePoNumber(req,'000','',function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + poadapter.sendResponse(statusCode,data, res); + }); + } + } + + }); + } + else{ + poadapter.sendResponse(statusCode, resdata, res); + } + }); + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = "[550] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getPOInventorylist = ( req, res ) => { + try{ + poadapter.queryPoInventoryList(req,function(err,data){ + 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 = " [200] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getPOttdList = ( req, res ) => { + try{ + poadapter.queryPottdList(req,function(err,data){ + 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 = " [200] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getPOttdDetailList = ( req, res ) => { + try{ + poadapter.queryPottdListDetail(req,function(err,data){ + 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 = " [200] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getPOMigoList = ( req, res ) => { + try{ + poadapter.queryPoMigoList(req,function(err,data){ + 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 = " [200] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getPOMigoDetailList = ( req, res ) => { + try{ + poadapter.queryPoMigoListDetail(req,function(err,data){ + 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 = " [200] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getPOInventoryDetaillist = ( req, res ) => { + try{ + poadapter.queryPoInventoryDetailList(req,function(err,data){ + 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 = " [200] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.setSignedPO = ( req, res ) => { + try{ + poadapter.querySignedPo(req,function(err,data){ + 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 = "[636] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.newpoadjustment = ( req, res ) => { + try{ + // console.log(req.nik); + // console.log(req.body.filename);return false; + let ext=req.body.filename.split(".")[1]; + let filename = 'ADJPO_'+req.nik+'_' + Date.now() + "."+ ext; + fs.rename(process.env.BASEPATH+'/assets/po/'+req.body.filename, process.env.BASEPATH+'/assets/po/'+filename, function(err) { + if ( err ) { + poadapter.sendResponse(500,err, res); + } + else{ + poadapter.queryNewPoAdjustment(req, filename, function(err,data){ + 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 = " [958] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.updpoadjustment = ( req, res ) => { + try{ + var ext=''; + var filename=''; + if(req.body.filename){ + ext=req.body.filename.split(".")[1]; + filename = 'ADJPO_'+req.nik+'_' + Date.now() + "."+ ext; + fs.rename(process.env.BASEPATH+'/assets/po/'+req.body.filename, process.env.BASEPATH+'/assets/po/'+filename, function(err) { + if ( err ) { + poadapter.sendResponse(500,err, res); + } + else{ + poadapter.queryUpdPoAdjustment(req, filename, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + poadapter.sendResponse(statusCode,data, res); + }); + + } + }); + } + else{ + poadapter.queryUpdPoAdjustment(req, filename, function(err,data){ + 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 = " [958] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.updpoboq = ( req, res ) => { + try{ + var filename=req.body.filename; + if(req.body.filename){ + poadapter.queryUpdPoBoq(req, filename, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + poadapter.sendResponse(statusCode,data, res); + }); + } + else{ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [1014] : PO controller, Upload File CSV Failed"; + poadapter.sendResponse(502, apireshandler, res); + + } + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [958] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getpoadjlist = ( req, res ) => { + try{ + poadapter.queryPoAdjList(req,function(err,data){ + 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 = "[636] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} +exports.getpoadjlistdetail = ( req, res ) => { + try{ + poadapter.queryPoAdjListDetail(req,function(err,data){ + 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 = "[636] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.getpoapprovedlist = ( req, res ) => { + try{ + poadapter.queryPoApproveList(req,function(err,data){ + 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 = "[636] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.deletepoadj = ( req, res ) => { + try{ + poadapter.queryDeleteAdjPO(req,function(err,data){ + 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 = "[636] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} + +exports.submitpoadj = ( req, res ) => { + try{ + poadapter.querySubmitAdjPO(req,function(err,data){ + 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 = "[636] : PO controller, " + err.toString(); + poadapter.sendResponse(502, apireshandler, res); + } +} diff --git a/controllers/pr.js b/controllers/pr.js new file mode 100644 index 0000000..ee69405 --- /dev/null +++ b/controllers/pr.js @@ -0,0 +1,653 @@ + +const PrAdapter=require('../adapter/pradapter.js'); +const pradapter = new PrAdapter(); +const Controllers = require('./controller.js'); +const controllers = new Controllers(); +var apireshandler = controllers.getApiResultDefined(); +const baseurlsap="http://"+process.env.HOSTSAP+"/sapapi/index.php/api"; +const apikeysap = "befea63a-7c47-4323-afea-968a3168fe0a"; +const request = require('request'); + +exports.getListJustification = ( req, res ) => { + try{ + pradapter.queryPrJustificationList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [18] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.getListPR = ( req, res ) => { + try{ + pradapter.queryPrPRList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [18] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.gettrxid = ( req, res ) => { + try{ + pradapter.queryGetTrxIdPr(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [18] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.getListPr = ( req, res ) => { + try{ + pradapter.queryPrList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [167] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.setNewPr = ( req, res ) => { + try{ + pradapter.queryNewPr(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [167] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.getDetailPr = ( req, res ) => { + try{ + pradapter.queryPrDetail(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [93] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.setUpdatePr = ( req, res ) => { + try{ + pradapter.queryUpdatePr(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [167] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.setUpdateStatusPr = ( req, res ) => { + try{ + let status = req.body.status; + let idxpr = req.body.idxpr; + + + if(status==0){ + // if(0==1){ + req.query.id = idxpr; + pradapter.queryUpdateStatusPr(req, req.body.prnumber, '', function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + else{ + pradapter.queryUpdateStatusPr(req,'00000','',function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [123] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.setUpdateStatusProld = ( req, res ) => { + try{ + let status = req.body.status; + let idxpr = req.body.idxpr; + + + if(status==0){ + // if(0==1){ + req.query.id = idxpr; + pradapter.queryPrDetail(req, function (err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err){ + statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }else{ + var rsdata = JSON.parse(JSON.stringify(data)); + // console.log(rsdata["data"]); + let pr_type="PRTL"; + let x_pr_type="X"; + let pr_no = "00010"; + let pr_qtyacc ="01"; + let pr_date = rsdata.data[0]['prdateYmd']; //Ymd + let pr_budget = "00"+rsdata.data[0]['glaccount']; + let pr_costcenter = rsdata.data[0]['costcenter']; + let pr_profitcenter = "TIL1A01";//rsdata.data[0]['profitcenter']; + let pr_shorttext =rsdata.data[0]['description']; + let pr_qtyitem =rsdata.data[0]['qty']; + let pr_unititem =rsdata.data[0]['unit']; + let pr_priceitem =rsdata.data[0]['netprice']; + // let pr_account="00010|01||20130727||||0051331006|TIL1|TIL1A01|||||||||||TIL1A01||||||||||||||||||||||"; + let pr_account= pr_no+"|"+pr_qtyacc+"||"+pr_date+"||||"+pr_budget+"|TIL1|"+pr_costcenter+"|||||||||||"+pr_profitcenter+"||||||||||||||||||||||"; + // let pr_item="00010|||120|Putra|testcreatePR|||||||||1603||TrackNo1|ZSRV||1|BH||20130727||20130727|||1000|1||J||||||||1603|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|"; + let pr_item=pr_no+"|||120|Putra|"+pr_shorttext+"|||||||||1603||TrackNo1|ZSRV||"+pr_qtyitem+"|"+pr_unititem+"||"+pr_date+"||"+pr_date+"|||"+pr_priceitem+"|1||J||||||||1603|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|"; + let resuri={ + 'method': 'POST', + // 'url': baseurl+'signon', + 'url': baseurlsap+'/createPr?pr_type='+pr_type+'&x_pr_type=X&praccount[]='+pr_account+'&pritem[]='+pr_item, + 'headers': { + 'Content-Type': 'application/json', + 'x-api-key' : apikeysap + }, + // form: formjson, + }; + + console.log(resuri); + request(resuri, function (error, response) { + if (error) { + console.log(error); + apireshandler.message = error.toString(); + pradapter.sendResponse(400, apireshandler, res); + } + else + { + // console.log(response.body); + var resdata = JSON.parse(response.body); + var errcode = ""; + var errmsg =""; + resdata['RETURN'].forEach(e => { + if(e.TYPE=='E'){ + errcode+=e.NUMBER+", "; + errmsg+=e.MESSAGE+" & "; + } + }); + errcode = errcode.substring(0, errcode.length-2); + errmsg = errmsg.substring(0, errmsg.length-3); + if(errcode.length>0){ + apireshandler.meta.code = errcode; + apireshandler.meta.message = errmsg; + pradapter.sendResponse(200, apireshandler, res); + } + else{ + pradapter.queryUpdateStatusPr(req,resdata['NUMBER'], errmsg, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + // apireshandler.success = true; + } + + } + + }); + + + //pradapter.sendResponse(statusCode,data, res); + } + }); + } + else{ + pradapter.queryUpdateStatusPr(req,'00000','',function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [123] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.deletePR = ( req, res ) => { + try{ + pradapter.queryDeletePr(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [138] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.approvedPR = ( req, res ) => { + try{ + pradapter.queryApprovedPR(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [153] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.getprmanagementlist = ( req, res ) => { + try{ + pradapter.queryPrManagementList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [260] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.getprmanagementlistdetail = ( req, res ) => { + try{ + pradapter.queryPrManagementListDetail(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [275] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.releasePRSAP = ( req, res ) => { + try{ + let idxpr = req.body.idxpr; + req.query.id = idxpr; + pradapter.queryPrDetail(req, function (err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err){ + statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }else{ + var rsdata = JSON.parse(JSON.stringify(data)); + let prnumber = rsdata.data[0]['prnumber']; //Ymd + let resuri={ + 'method': 'POST', + // 'url': baseurl+'signon', + 'url': baseurlsap+'/releasePr?number='+prnumber+'&rel_code=A1', + 'headers': { + 'Content-Type': 'application/json', + 'x-api-key' : apikeysap + }, + // form: formjson, + }; + + // console.log(resuri); + request(resuri, function (error, response) { + if (error) { + // console.log(error); + apireshandler.message = error.toString(); + pradapter.sendResponse(400, apireshandler, res); + } + else + { + console.log(response.body); + var resdata = JSON.parse(response.body); + var errcode = ""; + var errmsg =""; + resdata['RETURN'].forEach(e => { + if(e.TYPE=='E'){ + errcode+=e.NUMBER+", "; + errmsg+=e.MESSAGE+" & "; + } + }); + errcode = errcode.substring(0, errcode.length-2); + errmsg = errmsg.substring(0, errmsg.length-3); + if(errcode.length>0){ + apireshandler.meta.code = errcode; + apireshandler.meta.message = errmsg; + // pradapter.sendResponse(200, apireshandler, res); + } + else{ + apireshandler.success = true; + } + pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + //data.data = resdata; + apireshandler.meta.code = statusCode; + apireshandler.data = data.data; + pradapter.sendResponse(statusCode, apireshandler, res); + }); + } + }); + } + }); + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [348] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.unreleasePRSAP = ( req, res ) => { + try{ + let idxpr = req.body.idxpr; + req.query.id = idxpr; + pradapter.queryPrDetail(req, function (err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err){ + statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }else{ + var rsdata = JSON.parse(JSON.stringify(data)); + let prnumber = rsdata.data[0]['prnumber']; //Ymd + let resuri={ + 'method': 'POST', + // 'url': baseurl+'signon', + 'url': baseurlsap+'/unreleasePr?number='+prnumber+'&rel_code=A1', + 'headers': { + 'Content-Type': 'application/json', + 'x-api-key' : apikeysap + }, + // form: formjson, + }; + + // console.log(resuri); + request(resuri, function (error, response) { + if (error) { + // console.log(error); + apireshandler.message = error.toString(); + pradapter.sendResponse(400, apireshandler, res); + } + else + { + console.log(response.body); + var resdata = JSON.parse(response.body); + var errcode = ""; + var errmsg =""; + resdata['RETURN'].forEach(e => { + if(e.TYPE=='E'){ + errcode+=e.NUMBER+", "; + errmsg+=e.MESSAGE+" & "; + } + }); + errcode = errcode.substring(0, errcode.length-2); + errmsg = errmsg.substring(0, errmsg.length-3); + if(errcode.length>0){ + apireshandler.meta.code = errcode; + apireshandler.meta.message = errmsg; + // pradapter.sendResponse(200, apireshandler, res); + } + else{ + apireshandler.success = true; + } + // else{ + // pradapter.queryUpdateStatusPr(req,prnumber, errmsg, function(err,data){ + // let statusCode = data!=null ? data.meta.code : 200 ; + // if(err) statusCode = 500; + // pradapter.sendResponse(statusCode,data, res); + // }); + // } + pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + //data.data = resdata; + apireshandler.meta.code = statusCode; + apireshandler.data = data.data; + pradapter.sendResponse(statusCode, apireshandler, res); + }); + } + }); + } + }); + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [413] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.changePRSAP = ( req, res ) => { + try{ + pradapter.queryUpdateStatusPr(req,'','', function(err,data){ + console.log(data); + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [522] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.changePRSAPold = ( req, res ) => { + try{ + let idxpr = req.body.idxpr; + + req.query.id = idxpr; + pradapter.queryPrDetail(req, function (err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err){ + statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }else{ + var rsdata = JSON.parse(JSON.stringify(data)); + // console.log(rsdata["data"]); + let pr_no = "00010"; + let pr_qtyacc ="01"; + let pr_number = rsdata.data[0]['prnumber']; //Ymd + let pr_date = rsdata.data[0]['prdateYmd']; //Ymd + let pr_budget = "00"+rsdata.data[0]['glaccount']; + let pr_costcenter = rsdata.data[0]['costcenter']; + let pr_profitcenter = "TIL1A01";//rsdata.data[0]['profitcenter']; + let pr_shorttext =rsdata.data[0]['description']; + let pr_qtyitem =rsdata.data[0]['qty']; + let pr_unititem =rsdata.data[0]['unit']; + let pr_priceitem =rsdata.data[0]['netprice']; + // let pr_account="00010|01||20130727||||0051331006|TIL1|TIL1A01|||||||||||TIL1A01||||||||||||||||||||||"; + let pr_account= pr_no+"|"+pr_qtyacc+"||"+pr_date+"||||"+pr_budget+"|TIL1|"+pr_costcenter+"|||||||||||"+pr_profitcenter+"||||||||||||||||||||||"; + // let pr_item="00010|||120|Putra|testcreatePR|||||||||1603||TrackNo1|ZSRV||1|BH||20130727||20130727|||1000|1||J||||||||1603|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|"; + let pr_item=pr_no+"|||120|Putra|"+pr_shorttext+"|||||||||1603||TrackNo1|ZSRV||"+pr_qtyitem+"|"+pr_unititem+"||"+pr_date+"||"+pr_date+"|||"+pr_priceitem+"|1||J||||||||1603||||||||||||||||||||||||||||||||||||||||USD|||||||||||||||||||D|"; + let resuri={ + 'method': 'POST', + // 'url': baseurl+'signon', + 'url': baseurlsap+'/changePR?number='+pr_number+'&praccount[]='+pr_account+'&pritem[]='+pr_item, + 'headers': { + 'Content-Type': 'application/json', + 'x-api-key' : apikeysap + }, + // form: formjson, + }; + + // console.log(resuri); + request(resuri, function (error, response) { + if (error) { + console.log(error); + apireshandler.message = error.toString(); + pradapter.sendResponse(400, apireshandler, res); + } + else + { + // console.log("Change pR : "+response.body); + var resdata = JSON.parse(response.body); + var errcode = ""; + var errmsg =""; + resdata['RETURN'].forEach(e => { + // console.log(e); + if(e.TYPE=='E'){ + errcode+=e.NUMBER+", "; + errmsg+=e.MESSAGE+" & "; + } + }); + errcode = errcode.substring(0, errcode.length-2); + errmsg = errmsg.substring(0, errmsg.length-3); + if(errcode.length>0){ + apireshandler.meta.code = errcode; + apireshandler.meta.message = errmsg; + // pradapter.sendResponse(200, apireshandler, res); + } + else{ + apireshandler.success = true; + } + pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + //data.data = resdata; + apireshandler.meta.code = statusCode; + apireshandler.data = data.data; + pradapter.sendResponse(statusCode, apireshandler, res); + }); + + } + + }); + + + //pradapter.sendResponse(statusCode,data, res); + } + }); + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [522] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} + +exports.deletePRSAP = ( req, res ) => { + try{ + let idxpr = req.body.idxpr; + req.query.id = idxpr; + pradapter.queryPrDetail(req, function (err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err){ + statusCode = 500; + pradapter.sendResponse(statusCode,data, res); + }else{ + var rsdata = JSON.parse(JSON.stringify(data)); + let prnumber = rsdata.data[0]['prnumber']; //Ymd + let resuri={ + 'method': 'POST', + // 'url': baseurl+'signon', + 'url': baseurlsap+'/deletePr?number='+prnumber, + 'headers': { + 'Content-Type': 'application/json', + 'x-api-key' : apikeysap + }, + // form: formjson, + }; + + // console.log(resuri); + request(resuri, function (error, response) { + if (error) { + // console.log(error); + apireshandler.message = error.toString(); + pradapter.sendResponse(400, apireshandler, res); + } + else + { + // console.log(response.body); + var resdata = JSON.parse(response.body); + var errcode = ""; + var errmsg =""; + resdata['RETURN'].forEach(e => { + if(e.TYPE=='E'){ + errcode+=e.NUMBER+", "; + errmsg+=e.MESSAGE+" & "; + } + }); + errcode = errcode.substring(0, errcode.length-2); + errmsg = errmsg.substring(0, errmsg.length-3); + if(errcode.length>0){ + apireshandler.meta.code = errcode; + apireshandler.meta.message = errmsg; + // pradapter.sendResponse(200, apireshandler, res); + } + else{ + apireshandler.success = true; + } + // else{ + // pradapter.queryUpdateStatusPr(req,prnumber, errmsg, function(err,data){ + // let statusCode = data!=null ? data.meta.code : 200 ; + // if(err) statusCode = 500; + // pradapter.sendResponse(statusCode,data, res); + // }); + // } + pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + //data.data = resdata; + apireshandler.meta.code = statusCode; + apireshandler.data = data.data; + pradapter.sendResponse(statusCode, apireshandler, res); + }); + } + }); + } + }); + + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [413] : PR controller, " + err.toString(); + pradapter.sendResponse(502, apireshandler, res); + } +} \ No newline at end of file diff --git a/controllers/procjustification.js b/controllers/procjustification.js new file mode 100644 index 0000000..cc689e2 --- /dev/null +++ b/controllers/procjustification.js @@ -0,0 +1,174 @@ + +const ProcJustificationAdapter=require('../adapter/procjustificationadapter.js'); +const procjustificationadapter = new ProcJustificationAdapter(); +const Controllers = require('./controller.js'); +const controllers = new Controllers(); +var apireshandler = controllers.getApiResultDefined(); +const baseurlsap="http://"+process.env.HOSTSAP+"/sapapi/index.php/api"; +const apikeysap = "befea63a-7c47-4323-afea-968a3168fe0a"; +const request = require('request'); +var fs = require('fs'); + +exports.getListPr = ( req, res ) => { + try{ + procjustificationadapter.queryPrList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + procjustificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [21] : ProcJustification controller, " + err.toString(); + procjustificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.setNewProcJustification = ( req, res ) => { + try{ + + procjustificationadapter.queryNewProcJustification(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + procjustificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [21] : ProcJustification controller, " + err.toString(); + procjustificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.updateProcJustification = ( req, res ) => { + try{ + + let ext=req.body.filename.split(".")[1]; + let filename = req.body.filecategory+'_'+req.nik+'_' + Date.now() + "."+ ext; + fs.rename(process.env.BASEPATH+'/assets/procjustification/'+req.body.filename, process.env.BASEPATH+'/assets/procjustification/'+filename, function(err) { + if ( err ) { + procjustificationadapter.sendResponse(500,err, res); + } + else{ + procjustificationadapter.queryUpdateProcJustification(req, filename, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + procjustificationadapter.sendResponse(statusCode,data, res); + }); + + } + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [66] : ProcJustification controller, " + err.toString(); + procjustificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.InquiryProcJustification = ( req, res ) => { + try{ + + let ext=req.body.filename.split(".")[1]; + let filename = req.body.filecategory+'_'+req.nik+'_' + Date.now() + "."+ ext; + fs.rename(process.env.BASEPATH+'/assets/procjustification/'+req.body.filename, process.env.BASEPATH+'/assets/procjustification/'+filename, function(err) { + if ( err ) { + procjustificationadapter.sendResponse(statusCode,err, res); + } + else{ + procjustificationadapter.queryInquiryProcJustification(req, filename, function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + procjustificationadapter.sendResponse(statusCode,data, res); + }); + + } + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [66] : ProcJustification controller, " + err.toString(); + procjustificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.deleteProcJustification = ( req, res ) => { + try{ + + procjustificationadapter.queryDeleteProcJustification(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + procjustificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [82] : ProcJustification controller, " + err.toString(); + procjustificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.SignedProcJustification = ( req, res ) => { + try{ + + procjustificationadapter.querySignedProcJustification(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + procjustificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [96] : ProcJustification controller, " + err.toString(); + procjustificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.detailProcJustification = ( req, res ) => { + try{ + + procjustificationadapter.queryProcJustificationDetail(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + procjustificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [82] : ProcJustification controller, " + err.toString(); + procjustificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.procJustificationList = ( req, res ) => { + try{ + + procjustificationadapter.queryProcJustificationList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + procjustificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [82] : ProcJustification controller, " + err.toString(); + procjustificationadapter.sendResponse(502, apireshandler, res); + } +} + +exports.updateStatusProcJustification = ( req, res ) => { + try{ + + procjustificationadapter.queryUpdateStatusProcJustification(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + procjustificationadapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [82] : ProcJustification controller, " + err.toString(); + procjustificationadapter.sendResponse(502, apireshandler, res); + } +} + diff --git a/controllers/vendor.js b/controllers/vendor.js new file mode 100644 index 0000000..0121a7a --- /dev/null +++ b/controllers/vendor.js @@ -0,0 +1,81 @@ + +const VendorAdapter=require('../adapter/vendoradapter.js'); +const vendoradapter = new VendorAdapter(); + +exports.getListVendor = ( req, res ) => { + try{ + vendoradapter.queryVendorList(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + vendoradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [15] : Vendor controller, " + err.toString(); + vendoradapter.sendResponse(502, apireshandler, res); + } +} + + +exports.getVendorDetail = ( req, res ) => { + try{ + vendoradapter.queryVendorDetail(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + vendoradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [46] : VEndor controller, " + err.toString(); + vendoradapter.sendResponse(502, apireshandler, res); + } +} + +exports.deleteVendor = ( req, res ) => { + try{ + vendoradapter.queryDeleteVendor(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + vendoradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [46] : Budget controller, " + err.toString(); + vendoradapter.sendResponse(502, apireshandler, res); + } +} + +exports.setNewVendor = ( req, res ) => { + try{ + vendoradapter.queryNewVendor(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + vendoradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [76] : Budget controller, " + err.toString(); + vendoradapter.sendResponse(502, apireshandler, res); + } +} +exports.updateVendor = ( req, res ) => { + try{ + vendoradapter.queryUpdateVendor(req,function(err,data){ + let statusCode = data!=null ? data.meta.code : 200 ; + if(err) statusCode = 500; + vendoradapter.sendResponse(statusCode,data, res); + }); + } + catch(err){ + apireshandler.meta.code = 502; + apireshandler.meta.message = " [90] : Budget controller, " + err.toString(); + vendoradapter.sendResponse(502, apireshandler, res); + } +} + + + diff --git a/dbproc.sql b/dbproc.sql new file mode 100644 index 0000000..d200806 --- /dev/null +++ b/dbproc.sql @@ -0,0 +1,4295 @@ +-- MySQL dump 10.14 Distrib 5.5.56-MariaDB, for Linux (x86_64) +-- +-- Host: 172.17.12.71 Database: dbproc +-- ------------------------------------------------------ +-- Server version 5.5.56-MariaDB + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `tbl_bast` +-- + +DROP TABLE IF EXISTS `tbl_bast`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_bast` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxpo` int(11) DEFAULT '0', + `bastnumber` varchar(80) DEFAULT NULL, + `bastdates` datetime DEFAULT NULL, + `description` text, + `bastdateshandover` datetime DEFAULT NULL, + `descriptionhandover` varchar(400) DEFAULT '', + `idxvendor` int(11) DEFAULT '0', + `vendorcode` varchar(30) DEFAULT '', + `vendorname` varchar(100) DEFAULT NULL, + `totalpo` double DEFAULT '0', + `povendornumber` varchar(100) DEFAULT NULL, + `ismergedoc` smallint(6) DEFAULT '0', + `mergedate` datetime DEFAULT NULL, + `filedoctemplate` varchar(80) DEFAULT NULL, + `filedoc` varchar(100) DEFAULT NULL, + `filepdf` varchar(100) DEFAULT NULL, + `filehandover` varchar(80) DEFAULT NULL, + `filehandoversign` varchar(100) DEFAULT NULL, + `status` int(11) DEFAULT NULL, + `statusdescription` varchar(100) DEFAULT NULL, + `laststatusupdate` datetime DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_bast` (`_idx`,`idxpo`,`bastdates`,`idxvendor`,`status`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_bast` +-- + +LOCK TABLES `tbl_bast` WRITE; +/*!40000 ALTER TABLE `tbl_bast` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_bast` ENABLE KEYS */; +UNLOCK TABLES; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `dbproc`.`tr_afterinsertbast` AFTER INSERT + ON dbproc.tbl_bast FOR EACH ROW +BEGIN + insert into tbl_bastlogs set idxbast=NEW._idx,datelogs=now(), + status=NEW.status,statusdescription=NEW.statusdescription,iby=NEW.iby,idt=now(); + + update tbl_po set status=2, statusdescription ='Create BAST' where _idx=NEW.idxpo; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `dbproc`.`tr_afterupdatebast` AFTER UPDATE + ON dbproc.tbl_bast FOR EACH ROW +BEGIN + if (OLD.status<>NEW.status) then + insert into tbl_bastlogs set idxbast=NEW._idx,datelogs=now(),status=NEW.status,statusdescription=NEW.statusdescription,iby=NEW.iby,idt=now(); + end if; + if(NEW.status=0) then + update tbl_po set status=2,statusdescription='Create BAST' where _idx=NEW.idxpo; + end if; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `tbl_bastdetail` +-- + +DROP TABLE IF EXISTS `tbl_bastdetail`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_bastdetail` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxheader` int(11) DEFAULT '0', + `idxpoboq` int(11) DEFAULT '0', + `description` text, + `qty` double DEFAULT '0', + `units` varchar(80) DEFAULT NULL, + `poamount` double DEFAULT '0', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_bastdetail` (`_idx`,`idxheader`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_bastdetail` +-- + +LOCK TABLES `tbl_bastdetail` WRITE; +/*!40000 ALTER TABLE `tbl_bastdetail` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_bastdetail` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_bastlogs` +-- + +DROP TABLE IF EXISTS `tbl_bastlogs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_bastlogs` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxbast` int(11) DEFAULT '0', + `datelogs` datetime DEFAULT NULL, + `status` int(11) DEFAULT NULL, + `statusdescription` varchar(30) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_bastlogs` (`_idx`,`idxbast`,`status`,`datelogs`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_bastlogs` +-- + +LOCK TABLES `tbl_bastlogs` WRITE; +/*!40000 ALTER TABLE `tbl_bastlogs` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_bastlogs` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_baststatus` +-- + +DROP TABLE IF EXISTS `tbl_baststatus`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_baststatus` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `status` int(11) DEFAULT NULL, + `description` varchar(30) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_justificationstatus` (`_idx`,`status`,`idt`,`isdeleted`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_baststatus` +-- + +LOCK TABLES `tbl_baststatus` WRITE; +/*!40000 ALTER TABLE `tbl_baststatus` DISABLE KEYS */; +INSERT INTO `tbl_baststatus` VALUES (1,-2,'Rejected',0,NULL,'82010','2022-11-29 06:56:18',NULL,NULL,NULL,NULL),(2,-1,'Draft',0,NULL,'82010','2022-11-29 06:56:18',NULL,NULL,NULL,NULL),(3,0,'Submitted',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL),(4,1,'Upload Handover',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL),(5,2,'Approved BAST',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_baststatus` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_budgetcapexinfo` +-- + +DROP TABLE IF EXISTS `tbl_budgetcapexinfo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_budgetcapexinfo` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxbudgettype` smallint(6) DEFAULT '0', + `budgetid` varchar(20) DEFAULT NULL COMMENT 'Budget ID', + `activityname` varchar(200) DEFAULT NULL COMMENT 'Activity', + `amount` double DEFAULT NULL COMMENT 'Amount', + `targetrfs` varchar(100) DEFAULT NULL COMMENT 'Target RFS', + `months` smallint(6) DEFAULT '0', + `years` int(11) DEFAULT '0', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_budgetcapexinfo` (`_idx`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_budgetcapexinfo` +-- + +LOCK TABLES `tbl_budgetcapexinfo` WRITE; +/*!40000 ALTER TABLE `tbl_budgetcapexinfo` DISABLE KEYS */; +INSERT INTO `tbl_budgetcapexinfo` VALUES (1,1,'2024-01','Upgrading The Scalability of Datacom',1889287,'Q4-2024 / Dec 2024',12,2024,0,NULL,'91009','2024-06-11 15:31:41','91009','2024-09-23 08:45:46',NULL,NULL),(2,1,'2024-02','New Tranmisi Radio Backbone Xborder 10 Gbps',110000,'Q3-2024/Sept',9,2024,0,NULL,'93003','2024-06-18 14:43:15','93003','2024-06-18 14:44:14',NULL,NULL),(3,1,'2024-03','Permanenisasi Combat Inner dan Outer',360000,'Q3-2024',10,2024,0,NULL,'93003','2024-06-18 14:44:08','93003','2024-06-18 14:49:00',NULL,NULL),(4,1,'2024-04','Pengadaan Rectifier 3M2B Modernisasi Battery Lithium 150 Bank',150000,'Q3',9,2024,0,NULL,'93003','2024-06-18 14:49:55',NULL,NULL,NULL,NULL),(5,1,'2024-05','Upgrade Capacity Backbone DOmestic to 2Gbps 18 Hop',108000,'Q3',9,2024,0,NULL,'93003','2024-06-18 14:50:46',NULL,NULL,NULL,NULL),(6,1,'2024-06','Vcore License',24000,'Q3',9,2024,0,NULL,'93003','2024-06-18 14:51:13',NULL,NULL,NULL,NULL),(7,1,'2024-07','ONT 10G for BTS 110 Unit',121000,'Q3',9,2024,0,NULL,'93003','2024-06-18 14:51:45',NULL,NULL,NULL,NULL),(8,1,'2024-08','Upgrade Scalability Datacom',1889287,'Q4',12,2024,1,'Already Update ','93003','2024-08-14 14:42:39','93003','2024-08-14 14:45:54','93003','2024-08-14 15:27:37'),(9,1,'1603-23-0003','RAN Modernization',5880000,'Dec ',12,2024,0,NULL,'93003','2024-10-30 09:23:52',NULL,NULL,NULL,NULL),(10,1,'2025-01','Develop Support System Inner Dili Expansion',100000,'Juni 2025',6,2025,0,NULL,'93003','2025-03-20 09:00:36',NULL,NULL,NULL,NULL),(11,1,'2025-02','Win Back Red Ocean/Blue Ocean',3447823,'Juni 2025',6,2025,0,NULL,'93003','2025-03-20 09:01:41',NULL,NULL,NULL,NULL),(12,1,'2025-03','Penguatan Site Combat',300000,'Juni 2025',6,2025,0,NULL,'93003','2025-03-20 09:02:04',NULL,NULL,NULL,NULL),(13,1,'2025-04','RAN Moderenization Outer',300000,'Maret 2025',3,2025,0,NULL,'93003','2025-03-20 09:02:40',NULL,NULL,NULL,NULL),(14,1,'2025-05','EIR (Equipment Identity Register)',300000,'May 2025',5,2025,0,NULL,'93003','2025-03-20 09:03:05',NULL,NULL,NULL,NULL),(15,1,'2025-06','IMS (IP Multimedia Subsystem)',200000,'May 2025',5,2025,0,NULL,'93003','2025-03-20 09:03:28',NULL,NULL,NULL,NULL),(16,1,'2025-07','Pengadaan Genset 20 KVA',100000,'July 2025',7,2025,0,NULL,'93003','2025-03-20 09:03:52','93003','2025-03-20 09:04:48',NULL,NULL),(17,1,'2025-08','Moderinisasi Rectifier & Battery Lithium',100000,'July 2025',7,2025,0,NULL,'93003','2025-03-20 09:04:27',NULL,NULL,NULL,NULL),(18,1,'2025-09','Moderinisasi Battery Lithium',100000,'July 2025',7,2025,0,NULL,'93003','2025-03-20 09:05:08',NULL,NULL,NULL,NULL),(19,1,'2025-10','Sparepart Transmisi backbone Ceragon',100000,'July 2025',7,2025,0,NULL,'93003','2025-03-20 09:05:30',NULL,NULL,NULL,NULL),(20,1,'2025-11','New Link Capacity 10 Gbps Xborder',100000,'Maret 2025',3,2025,0,NULL,'93003','2025-03-20 09:06:03','93003','2025-03-20 09:06:53',NULL,NULL),(21,1,'2025-12','NMS Server Ceragon',100000,'Maret 2025',3,2025,0,NULL,'93003','2025-03-20 09:06:44',NULL,NULL,NULL,NULL),(22,1,'2025-13','Upgrade Capacity BB Domestic',100000,'Juni 2025',6,2025,0,NULL,'93003','2025-03-20 09:07:17',NULL,NULL,NULL,NULL),(23,1,'2025-14','Pembelian Rack, AP wifi,CCTV & Access Door & Redudancy Radio Plaza',100000,'Juni 2025',6,2025,0,NULL,'93003','2025-03-20 09:07:36',NULL,NULL,NULL,NULL),(24,1,'2025-15','Pembelian Swicth Getway, Backbone and RAN Swicth',300000,'Juni 2025',6,2025,0,NULL,'93003','2025-03-20 09:07:59',NULL,NULL,NULL,NULL),(25,1,'2025-16','Pembelian OLT320, ONT BTS & Modul, SFP untuk OLT-C600',100000,'Juni 2025',6,2025,0,NULL,'93003','2025-03-20 09:08:22',NULL,NULL,NULL,NULL),(26,1,'2025-17','Pembelian BOX ODC Tanam & Deploy Kabel Ring Backup & FO Baucau',100000,'Juni 2025',6,2025,0,NULL,'93003','2025-03-20 09:08:39',NULL,NULL,NULL,NULL),(27,1,'2025-18','Deploy 24 core Backbone area Selatan',100000,'Juni 2025',6,2025,0,NULL,'93003','2025-03-20 09:08:58',NULL,NULL,NULL,NULL),(28,1,'2025-19','\"Upgrade License SPR dari 1M ke 1,5M Saat ini penggunaan 96%\"',300000,'April 2025',4,2025,0,NULL,'93003','2025-03-20 09:09:29',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_budgetcapexinfo` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_budgettype` +-- + +DROP TABLE IF EXISTS `tbl_budgettype`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_budgettype` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `budgettype` varchar(30) DEFAULT NULL COMMENT 'Budget Type', + `description` varchar(100) DEFAULT NULL COMMENT 'Description', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_budgettype` (`_idx`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_budgettype` +-- + +LOCK TABLES `tbl_budgettype` WRITE; +/*!40000 ALTER TABLE `tbl_budgettype` DISABLE KEYS */; +INSERT INTO `tbl_budgettype` VALUES (1,'CAPEX','CAPEX Budget',0,NULL,'82010','2022-09-23 11:14:34',NULL,NULL,NULL,NULL),(2,'OPEX','OPEX Budget',0,NULL,'82010','2022-09-23 11:14:50',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_budgettype` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_coa` +-- + +DROP TABLE IF EXISTS `tbl_coa`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_coa` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `glacc` varchar(80) DEFAULT NULL COMMENT 'GL Account', + `glaccname` varchar(200) DEFAULT NULL COMMENT 'GL Account Name', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_coa` (`_idx`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=109 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_coa` +-- + +LOCK TABLES `tbl_coa` WRITE; +/*!40000 ALTER TABLE `tbl_coa` DISABLE KEYS */; +INSERT INTO `tbl_coa` VALUES (1,'13201022','13201022 CIP',0,NULL,'82010','2022-09-26 06:16:13','999999','2024-01-14 12:02:18',NULL,NULL),(2,'51111005','51111005 Medical allowance',0,NULL,'82010','2022-09-26 06:16:13',NULL,NULL,NULL,NULL),(3,'51111010','51111010 Employee Wages',0,NULL,'82010','2022-09-26 06:16:13',NULL,NULL,NULL,NULL),(4,'51114007','51114007 Employee Wage Tax Allowance',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(5,'51115001','51115001 Gaji Direksi',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(6,'51121002','51121002 Bonus',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(7,'51131001','51131001 severance payment',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(8,'51131004','51131004 Beban Asuransi Manfaat Pensiun',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(9,'51131005','51131005 Beban Asuransi Kes Masa Pensiun',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(10,'51131011','51131011 Tunjangan PPh Pasal 21 Direksi',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(11,'51141001','51141001 Vacation pay',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(12,'51141004','51141004 Uang lembur',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(13,'51141005','51141005 Religious holiday allowances',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(14,'51141009','51141009 Transportation benefit',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(15,'51151002','51151002 Housing allowances',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(16,'51171002','51171002 Tunjangan Pakaian Seragam',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(17,'51171004','51171004 Personal accident insurance',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(18,'51171009','51171009 Worker Insurance',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(19,'51171011','51171011 School and education aid',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(20,'51172001','51172001 Pension Assistance Expense',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(21,'51201002','51201002 Depr. Buildings',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(22,'51201003','51201003 BP Terminal',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(23,'51201004','51201004 Depr. Cable network',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(24,'51201007','51201007 Depr. Transmission',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(25,'51201009','51201009 BP IMS',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(26,'51201010','51201010 Depr. Power supply',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(27,'51201012','51201012 BP Multimedia',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(28,'51201015','51201015 Depr. Vehicles',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(29,'51201016','51201016 Depr. Office equipment',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(30,'51321001','51321001 O&M office building',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(31,'51332001','51332001 Beban GSM Managed Service',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(32,'51332002','51332002 BODP Jaringan Kabel Akses Fiber',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(33,'51332003','51332003 BODP Jaringan Kabel Akses Radio',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(34,'51332004','51332004 BODP Alat Ukur/Kerja Jaringan',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(35,'51335002','51335002 BODP Antena dan Tower',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(36,'51337003','51337003 O&M data communication and multimedia',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(37,'51341001','51341001 BODP Catu Daya',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(38,'51342001','51342001 O&M Hardware',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(39,'51345001','51345001 O&M office vehicle',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(40,'51346003','51346003 O&M office equipment',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(41,'51351001','51351001 Domestic travelling for O&M',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(42,'51352002','51352002 Foreign travelling for O&M',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(43,'51336001','51336001 BODP Transmisi Satelit',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(44,'51361001','51361001 Electricity, gas and water',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(45,'51362002','51362002 Courier and dispatch for O&M',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(46,'51363001','51363001 Fixed assets insurance expense',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(47,'51364001','51364001 Beban Sewa Tanah',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(48,'51364003','51364003 Operational vehicle lease',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(49,'51364005','51364005 O&M leased line',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(50,'51364009','51364009 Beban CPE Murni',0,NULL,'82010','2022-09-26 06:16:14',NULL,NULL,NULL,NULL),(51,'51364064','51364064 Office Building Lease',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(52,'51365004','51365004 Beban Cetak KTU',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(53,'51365011','51365011 Universal Service Obligation (USO) charges',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(54,'51365047','51365047 Beban Outsourcing Operasi dan Pemeliharaan',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(55,'51367016','51367016 Tax expense',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(56,'51376038','51376038 IP Transit Expense',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(57,'51376039','51376039 Beban Ethernet Private',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(58,'51376043','51376043 IP VPN Expense',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(59,'51377016','51377016 Voice Wholesales Expense',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(60,'51377017','51377017 Data Expense-Others',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(61,'51377023','51377023 Hubbing Wholesale Expense',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(62,'51382001','51382001 BODP Bantuan Teknis',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(63,'51400015','51400015 Beban Interkoneksi TG017 ke OLO - (Originasi OLODN',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(64,'51400042','51400042 Beban Interkoneksi Teleservice',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(65,'51400057','51400057 Beban Voice Transit International Incoming',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(66,'51501001','51501001 Domestic travelling for general administration',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(67,'51501002','51501002 Foreign travelling for general administration',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(68,'51503003','51503003 Amort Exp Software',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(69,'51503022','51503022 Beban Amortisasi Lisensi BWA',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(70,'51504004','51504004 Beban Pemeriksaan Psikologi',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(71,'51505001','51505001 Beban Pelatihan Dalam Negeri',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(72,'51506001','51506001 Stationery',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(73,'51506002','51506002 Printing and copy',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(74,'51506004','51506004 Book and mass media subscription',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(75,'51507002','51507002 Beban Pencairan Piutang',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(76,'51508003','51508003 Technical and management consultant fee',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(77,'51508004','51508004 Legal consultant fee',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(78,'51509001','51509001 Beban Pengamanan Intern',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(79,'51512001','51512001 Courier and dispatch for general administration',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(80,'51512004','51512004 Bank administration charges',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(81,'51512005','51512005 Meeting expenses',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(82,'51512007','51512007 Beban Tender',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(83,'51512008','51512008 Audit Expense',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(84,'51512010','51512010 License administration',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(85,'51512015','51512015 Beban Outsourcing Umum dan Administrasi',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(86,'51502106','51502106 Provision for doubtful accounts trade receivables',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(87,'51601001','51601001 Domestic travelling for Marketing',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(88,'51601002','51601002 Foreign travelling for Marketing',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(89,'51601005','51601005 Promotion',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(90,'51601006','51601006 Advertising',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(91,'51601007','51601007 Beban Pameran',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(92,'51601016','51601016 Beban Outsourcing Pemasaran',0,NULL,'82010','2022-09-26 06:16:15',NULL,NULL,NULL,NULL),(93,'13773888','Biaya Maintenance edit',1,'tidak digunakan','999999','2022-11-06 13:54:57','999999','2022-11-06 14:01:34','999999','2022-11-06 14:03:10'),(94,'13212141','testing',1,'for testing','999999','2022-11-06 14:06:01',NULL,NULL,'999999','2022-11-06 14:07:34'),(95,'0980282','testing coa edit',1,'not using','999999','2022-12-16 15:54:04','999999','2022-12-16 15:54:13','999999','2022-12-16 15:54:20'),(96,'6465356345','testingetretretretr',1,'testing','999999','2022-12-29 16:21:17','999999','2022-12-29 16:21:38','999999','2022-12-29 16:21:45'),(97,'10102002','Imprest Fund ( CJ )',0,NULL,'82010','2022-12-30 11:51:02',NULL,NULL,NULL,NULL),(98,'10101001','Kas besar IDR',0,NULL,'999999','2022-12-30 11:51:53','999999','2022-12-30 11:58:45',NULL,NULL),(99,'51331006','Marketing ',0,NULL,'999999','2022-12-30 13:17:29','999999','2022-12-30 13:47:22',NULL,NULL),(100,'19031972312','coba edit',1,'testing','999999','2023-02-03 12:32:39','999999','2023-02-03 12:32:49','999999','2023-02-03 12:32:54'),(101,'21830921709','testing 12345',1,'testing','999999','2023-02-08 17:59:13','999999','2023-02-08 18:00:49','999999','2023-02-08 18:00:56'),(102,'0923719723981','testing 12345',1,'testing','999999','2023-02-08 18:02:13','999999','2023-02-08 18:02:24','999999','2023-02-08 18:02:32'),(103,'18092001','9627 Point bonus',0,NULL,'999999','2023-02-21 16:31:43','999999','2023-02-21 16:32:46',NULL,NULL),(104,'180321','Kas kecil',1,'sudah selesai testing ','999999','2023-02-21 16:32:22',NULL,NULL,'999999','2023-02-21 16:40:29'),(105,'123','tes',1,'update','999999','2023-09-02 21:49:59','999999','2023-09-02 21:50:15','999999','2023-09-02 21:50:24'),(106,'111222','TEST D',1,'test','999999','2023-09-04 13:02:26','999999','2023-09-04 13:02:43','999999','2023-09-04 13:03:10'),(107,'999','debby',1,'d','999999','2023-09-05 13:19:26','999999','2023-09-05 13:19:50','999999','2023-09-05 13:20:04'),(108,'51363001','Asuransi Aktiva Tetap',0,NULL,'999999','2024-01-17 11:31:44',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_coa` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_costcenter` +-- + +DROP TABLE IF EXISTS `tbl_costcenter`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_costcenter` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `costcentercode` varchar(30) DEFAULT NULL, + `costcentername` varchar(80) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(200) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `ndx_tbl_costcenter` (`id`,`isdeleted`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_costcenter` +-- + +LOCK TABLES `tbl_costcenter` WRITE; +/*!40000 ALTER TABLE `tbl_costcenter` DISABLE KEYS */; +INSERT INTO `tbl_costcenter` VALUES (1,'TIL1A01','Marketing & Sales',0,NULL,'82010','2023-09-22 09:39:52',NULL,NULL,NULL,NULL),(2,'TIL1C01','Network & IT',0,NULL,'82010','2023-09-22 09:39:52',NULL,NULL,NULL,NULL),(3,'TIL1E01','Finance & Human Capital',0,NULL,'82010','2023-09-22 09:39:52',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_costcenter` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_currency` +-- + +DROP TABLE IF EXISTS `tbl_currency`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_currency` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `currency` varchar(30) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_currency` (`_idx`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_currency` +-- + +LOCK TABLES `tbl_currency` WRITE; +/*!40000 ALTER TABLE `tbl_currency` DISABLE KEYS */; +INSERT INTO `tbl_currency` VALUES (1,'USD',0,NULL,'82010','2023-02-10 06:45:01',NULL,NULL,NULL,NULL),(2,'RP',1,NULL,'82010','2023-02-10 06:45:09',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_currency` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_employee` +-- + +DROP TABLE IF EXISTS `tbl_employee`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_employee` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `nik` varchar(30) DEFAULT NULL COMMENT 'Nik', + `employeename` varchar(100) DEFAULT NULL COMMENT 'Nama Karyawan', + `pass` text COMMENT 'Pass', + `maskpass` varchar(30) DEFAULT NULL, + `fcmtoken` text, + `title` varchar(80) DEFAULT NULL COMMENT 'Jabatan', + `address` varchar(200) DEFAULT NULL COMMENT 'Alamat', + `msisdn` varchar(30) DEFAULT NULL COMMENT 'Telp/HP', + `email` varchar(30) DEFAULT NULL COMMENT 'Email', + `iddept` smallint(6) DEFAULT NULL COMMENT 'Department', + `deptname` varchar(100) DEFAULT NULL, + `idxcounter` int(11) DEFAULT NULL COMMENT 'Counter', + `countername` varchar(100) DEFAULT NULL, + `counternumber` smallint(6) DEFAULT '0', + `iduserlevel` smallint(6) DEFAULT NULL COMMENT 'Level', + `userlevel` varchar(10) DEFAULT NULL, + `isactivated` smallint(6) DEFAULT NULL COMMENT 'Aktifkan', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_employee` (`_idx`,`idxcounter`,`iduserlevel`,`isactivated`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_employee` +-- + +LOCK TABLES `tbl_employee` WRITE; +/*!40000 ALTER TABLE `tbl_employee` DISABLE KEYS */; +INSERT INTO `tbl_employee` VALUES (1,'82010','Administrator','223344','1234','fckbIxx3kK4:APA91bF2VlBT8_XzmnGcOKIwb9WQCOzJ1k4FrZVr-SCxT01hr91WMbasfwGjntwPySXfZ_fUkteqnCgFhJ2HqIB0l64zS5WE3TWUi6BfMGP_NJgmkrN0cDDNQa12fy1MmIxp7P7csraB','Administrator','Aimutin','73000032','itnsr09@gmail.com',1,'IT',0,'',0,2,'Supervise',1,0,'','82010','2019-12-08 09:28:38','82010','2022-06-18 08:21:28',NULL,NULL); +/*!40000 ALTER TABLE `tbl_employee` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_employee_accessibility` +-- + +DROP TABLE IF EXISTS `tbl_employee_accessibility`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_employee_accessibility` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idemployee` int(11) DEFAULT '0', + `nik` varchar(30) DEFAULT NULL, + `idxmenu` int(11) DEFAULT '0', + `isactivated` smallint(6) DEFAULT '0', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_employee_accessibility` (`_idx`,`idemployee`,`idxmenu`,`isactivated`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=607 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_employee_accessibility` +-- + +LOCK TABLES `tbl_employee_accessibility` WRITE; +/*!40000 ALTER TABLE `tbl_employee_accessibility` DISABLE KEYS */; +INSERT INTO `tbl_employee_accessibility` VALUES (1,70,'82010',1,1,0,NULL,'82010','2022-10-27 11:11:03',NULL,NULL,NULL,NULL),(2,70,'82010',2,1,0,NULL,'82010','2022-10-27 11:11:09',NULL,NULL,NULL,NULL),(3,70,'82010',3,1,0,NULL,'82010','2022-10-27 11:49:34',NULL,NULL,NULL,NULL),(4,70,'82010',4,1,0,NULL,'82010','2022-10-27 11:49:56',NULL,NULL,NULL,NULL),(5,70,'82010',5,1,0,NULL,'82010','2022-10-27 00:00:00',NULL,NULL,NULL,NULL),(6,70,'82010',6,1,0,NULL,'82010','2022-10-27 00:00:00',NULL,NULL,NULL,NULL),(7,70,'82010',7,1,0,NULL,'82010','2022-10-27 00:00:00',NULL,NULL,NULL,NULL),(8,329,'999999',1,1,0,NULL,NULL,NULL,'999999','2024-06-18 11:49:52',NULL,NULL),(9,329,'999999',2,1,0,NULL,NULL,NULL,'999999','2024-06-18 11:49:52',NULL,NULL),(10,329,'999999',3,1,0,NULL,NULL,NULL,'999999','2024-06-18 11:49:52',NULL,NULL),(11,329,'999999',4,1,0,NULL,NULL,NULL,'999999','2024-06-18 11:49:52',NULL,NULL),(12,329,'999999',5,1,0,NULL,NULL,NULL,'999999','2024-06-18 11:49:52',NULL,NULL),(13,329,'999999',6,1,0,NULL,NULL,NULL,'999999','2024-06-18 11:49:52',NULL,NULL),(14,329,'999999',7,1,0,NULL,NULL,NULL,'999999','2024-06-18 11:49:52',NULL,NULL),(15,329,'999999',8,1,0,NULL,'82010','2022-10-31 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(16,329,'999999',9,1,0,NULL,'82010','2022-10-31 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(17,329,'999999',10,1,0,NULL,'82010','2022-10-31 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(18,329,'999999',11,1,0,NULL,'82010','2022-11-03 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(19,329,'999999',12,1,0,NULL,'82010','2022-11-03 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(20,329,'999999',13,1,0,NULL,'82010','2022-11-03 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(21,329,'999999',14,1,0,NULL,'82010','2022-11-09 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(22,329,'999999',15,1,0,NULL,'82010','2022-11-09 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(23,329,'999999',16,1,0,NULL,'82010','2022-11-09 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(24,329,'999999',17,1,0,NULL,'82010','2022-11-09 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(25,329,'999999',18,1,0,NULL,'82010','2022-11-09 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(26,329,'999999',19,1,0,NULL,'82010','2022-11-09 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(27,329,'999999',20,1,0,NULL,'82010','2022-12-19 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(28,329,'999999',21,1,0,NULL,'82010','2022-12-19 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(29,329,'999999',22,1,0,NULL,'82010','2022-12-21 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(30,329,'999999',23,1,0,NULL,'82010','2022-12-21 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(31,329,'999999',24,1,0,NULL,'82010','2022-12-30 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(32,329,'999999',25,1,0,NULL,'82010','2023-01-02 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(33,329,'999999',26,1,0,NULL,'82010','2023-01-12 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(34,329,'999999',27,1,0,NULL,'82010','2023-01-12 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(35,329,'999999',27,1,1,NULL,'82010','2023-01-12 08:57:34',NULL,NULL,NULL,NULL),(36,329,'999999',28,1,0,NULL,'82010','2023-01-12 08:57:34','999999','2024-06-18 11:49:52',NULL,NULL),(37,329,'999999',29,1,0,NULL,'82010','2023-01-25 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(38,329,'999999',30,1,0,NULL,'82010','2023-01-25 00:00:00','999999','2024-06-18 11:49:52',NULL,NULL),(39,329,'999999',31,1,0,NULL,'82010','2023-01-30 00:00:00','999999','2024-06-18 11:49:53',NULL,NULL),(40,329,'999999',32,1,0,NULL,'82010','2023-02-01 00:00:00','999999','2024-06-18 11:49:53',NULL,NULL),(41,329,'999999',33,1,0,NULL,'82010','2023-02-07 00:00:00','999999','2024-06-18 11:49:53',NULL,NULL),(104,6,'91009',1,1,0,NULL,'999999','2023-02-15 08:38:55','999999','2024-06-18 11:48:39',NULL,NULL),(105,11,'91001',1,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(106,11,'91001',2,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(107,11,'91001',3,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(108,11,'91001',4,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(109,11,'91001',5,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(110,11,'91001',6,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(111,11,'91001',7,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(112,11,'91001',8,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(113,11,'91001',9,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(114,11,'91001',10,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(115,11,'91001',11,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(116,11,'91001',12,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(117,11,'91001',13,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(118,11,'91001',14,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(119,11,'91001',15,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(120,11,'91001',16,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(121,11,'91001',17,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(122,11,'91001',18,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(123,11,'91001',19,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(124,11,'91001',20,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(125,11,'91001',21,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(126,11,'91001',22,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(127,11,'91001',23,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(128,11,'91001',24,1,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(129,11,'91001',25,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(130,11,'91001',33,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(131,11,'91001',27,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(132,11,'91001',26,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(133,11,'91001',28,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(134,11,'91001',29,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(135,11,'91001',30,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(136,11,'91001',31,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(137,11,'91001',32,0,0,NULL,'999999','2023-02-15 17:19:59','999999','2023-02-20 12:27:25',NULL,NULL),(138,6,'91009',2,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(139,6,'91009',3,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(140,6,'91009',4,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(141,6,'91009',5,0,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(142,6,'91009',6,0,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(143,6,'91009',7,0,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(144,6,'91009',8,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(145,6,'91009',9,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(146,6,'91009',10,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(147,6,'91009',11,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(148,6,'91009',12,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(149,6,'91009',13,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(150,6,'91009',14,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(151,6,'91009',15,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(152,6,'91009',16,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(153,6,'91009',17,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(154,6,'91009',18,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(155,6,'91009',19,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(156,6,'91009',20,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(157,6,'91009',21,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(158,6,'91009',22,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(159,6,'91009',23,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(160,6,'91009',24,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(161,6,'91009',25,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(162,6,'91009',33,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(163,6,'91009',27,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(164,6,'91009',26,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(165,6,'91009',28,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(166,6,'91009',29,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(167,6,'91009',30,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(168,6,'91009',31,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(169,6,'91009',32,1,0,NULL,'999999','2023-02-15 17:58:47','999999','2024-06-18 11:48:39',NULL,NULL),(170,38,'81001',1,1,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(171,38,'81001',2,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(172,38,'81001',3,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(173,38,'81001',4,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(174,38,'81001',5,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(175,38,'81001',6,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(176,38,'81001',7,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(177,38,'81001',8,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(178,38,'81001',9,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(179,38,'81001',10,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(180,38,'81001',11,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(181,38,'81001',12,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(182,38,'81001',13,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(183,38,'81001',14,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(184,38,'81001',15,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(185,38,'81001',16,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(186,38,'81001',17,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(187,38,'81001',18,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(188,38,'81001',19,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(189,38,'81001',20,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(190,38,'81001',21,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(191,38,'81001',22,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(192,38,'81001',23,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(193,38,'81001',24,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(194,38,'81001',25,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(195,38,'81001',33,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(196,38,'81001',27,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(197,38,'81001',26,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(198,38,'81001',28,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(199,38,'81001',29,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(200,38,'81001',30,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(201,38,'81001',31,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(202,38,'81001',32,0,0,NULL,'999999','2023-02-15 18:12:13',NULL,NULL,NULL,NULL),(203,1,'82012',1,1,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(204,1,'82012',2,0,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(205,1,'82012',3,0,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(206,1,'82012',4,0,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(207,1,'82012',5,0,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(208,1,'82012',6,0,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(209,1,'82012',7,0,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(210,1,'82012',8,1,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(211,1,'82012',9,1,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(212,1,'82012',10,1,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(213,1,'82012',11,1,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(214,1,'82012',12,1,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(215,1,'82012',13,0,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(216,1,'82012',14,1,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(217,1,'82012',15,0,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(218,1,'82012',16,1,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(219,1,'82012',17,1,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(220,1,'82012',18,0,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(221,1,'82012',19,1,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(222,1,'82012',20,1,0,NULL,'999999','2023-02-16 12:09:17','999999','2024-10-30 13:43:08',NULL,NULL),(223,1,'82012',21,0,0,NULL,'999999','2023-02-16 12:09:18','999999','2024-10-30 13:43:08',NULL,NULL),(224,1,'82012',22,1,0,NULL,'999999','2023-02-16 12:09:18','999999','2024-10-30 13:43:08',NULL,NULL),(225,1,'82012',23,1,0,NULL,'999999','2023-02-16 12:09:18','999999','2024-10-30 13:43:08',NULL,NULL),(226,1,'82012',24,0,0,NULL,'999999','2023-02-16 12:09:18','999999','2024-10-30 13:43:08',NULL,NULL),(227,1,'82012',25,0,0,NULL,'999999','2023-02-16 12:09:18','999999','2024-10-30 13:43:08',NULL,NULL),(228,1,'82012',33,0,0,NULL,'999999','2023-02-16 12:09:18','999999','2024-10-30 13:43:08',NULL,NULL),(229,1,'82012',27,1,0,NULL,'999999','2023-02-16 12:09:18','999999','2024-10-30 13:43:08',NULL,NULL),(230,1,'82012',26,1,0,NULL,'999999','2023-02-16 12:09:18','999999','2024-10-30 13:43:08',NULL,NULL),(231,1,'82012',28,1,0,NULL,'999999','2023-02-16 12:09:18','999999','2024-10-30 13:43:08',NULL,NULL),(232,1,'82012',29,1,0,NULL,'999999','2023-02-16 12:09:18','999999','2024-10-30 13:43:08',NULL,NULL),(233,1,'82012',30,1,0,NULL,'999999','2023-02-16 12:09:18','999999','2024-10-30 13:43:08',NULL,NULL),(234,1,'82012',31,1,0,NULL,'999999','2023-02-16 12:09:18','999999','2024-10-30 13:43:08',NULL,NULL),(235,1,'82012',32,0,0,NULL,'999999','2023-02-16 12:09:18','999999','2024-10-30 13:43:08',NULL,NULL),(236,2,'90015',1,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(237,2,'90015',2,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(238,2,'90015',3,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(239,2,'90015',4,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(240,2,'90015',5,0,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(241,2,'90015',6,0,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(242,2,'90015',7,0,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(243,2,'90015',8,0,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(244,2,'90015',9,0,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(245,2,'90015',10,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(246,2,'90015',11,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(247,2,'90015',12,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(248,2,'90015',13,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(249,2,'90015',14,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(250,2,'90015',15,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(251,2,'90015',16,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(252,2,'90015',17,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(253,2,'90015',18,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(254,2,'90015',19,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(255,2,'90015',20,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(256,2,'90015',21,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(257,2,'90015',22,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(258,2,'90015',23,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(259,2,'90015',24,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(260,2,'90015',25,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(261,2,'90015',33,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(262,2,'90015',27,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(263,2,'90015',26,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(264,2,'90015',28,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(265,2,'90015',29,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(266,2,'90015',30,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(267,2,'90015',31,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(268,2,'90015',32,1,0,NULL,'999999','2023-02-16 16:08:29','91009','2024-07-03 11:27:06',NULL,NULL),(302,21,'90014',1,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(303,21,'90014',2,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(304,21,'90014',3,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(305,21,'90014',4,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(306,21,'90014',5,0,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(307,21,'90014',6,0,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(308,21,'90014',7,0,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(309,21,'90014',8,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(310,21,'90014',9,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(311,21,'90014',10,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(312,21,'90014',11,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(313,21,'90014',12,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(314,21,'90014',13,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(315,21,'90014',14,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(316,21,'90014',15,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(317,21,'90014',16,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(318,21,'90014',17,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(319,21,'90014',18,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(320,21,'90014',19,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(321,21,'90014',20,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(322,21,'90014',21,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(323,21,'90014',22,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(324,21,'90014',23,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(325,21,'90014',24,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(326,21,'90014',25,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(327,21,'90014',33,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(328,21,'90014',27,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(329,21,'90014',27,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(330,21,'90014',26,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(331,21,'90014',28,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(332,21,'90014',29,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(333,21,'90014',30,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(334,21,'90014',31,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(335,21,'90014',32,1,0,NULL,'999999','2023-02-17 16:19:03',NULL,NULL,NULL,NULL),(336,253,'74003',1,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(337,253,'74003',2,0,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(338,253,'74003',3,0,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(339,253,'74003',4,0,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(340,253,'74003',5,0,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(341,253,'74003',6,0,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(342,253,'74003',7,0,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(343,253,'74003',8,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(344,253,'74003',9,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(345,253,'74003',10,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(346,253,'74003',11,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(347,253,'74003',12,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(348,253,'74003',13,0,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(349,253,'74003',14,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(350,253,'74003',15,0,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(351,253,'74003',16,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(352,253,'74003',17,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(353,253,'74003',18,0,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(354,253,'74003',19,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(355,253,'74003',20,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(356,253,'74003',21,0,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(357,253,'74003',22,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(358,253,'74003',23,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(359,253,'74003',24,0,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(360,253,'74003',25,0,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(361,253,'74003',33,0,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(362,253,'74003',27,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(363,253,'74003',27,0,0,NULL,'999999','2023-02-17 16:22:07',NULL,NULL,NULL,NULL),(364,253,'74003',26,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(365,253,'74003',28,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(366,253,'74003',29,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(367,253,'74003',30,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(368,253,'74003',31,1,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(369,253,'74003',32,0,0,NULL,'999999','2023-02-17 16:22:07','999999','2023-02-20 12:39:43',NULL,NULL),(370,329,'999999',34,1,0,NULL,'91009','2023-02-27 13:48:40','999999','2024-06-18 11:49:53',NULL,NULL),(371,329,'999999',35,1,0,NULL,'999999','2023-03-06 00:42:47','999999','2024-06-18 11:49:53',NULL,NULL),(372,103,'92008',1,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(373,103,'92008',2,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(374,103,'92008',3,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(375,103,'92008',4,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(376,103,'92008',5,0,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(377,103,'92008',6,0,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(378,103,'92008',7,0,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(379,103,'92008',8,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(380,103,'92008',9,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(381,103,'92008',10,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(382,103,'92008',11,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(383,103,'92008',12,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(384,103,'92008',13,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(385,103,'92008',14,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(386,103,'92008',15,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(387,103,'92008',16,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(388,103,'92008',17,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(389,103,'92008',18,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(390,103,'92008',19,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(391,103,'92008',20,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(392,103,'92008',21,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(393,103,'92008',22,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(394,103,'92008',23,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(395,103,'92008',24,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(396,103,'92008',25,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(397,103,'92008',26,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(398,103,'92008',27,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(399,103,'92008',27,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(400,103,'92008',28,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(401,103,'92008',29,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(402,103,'92008',30,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(403,103,'92008',31,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(404,103,'92008',32,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(405,103,'92008',33,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(406,103,'92008',34,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(407,103,'92008',35,1,0,NULL,'999999','2023-03-07 12:15:55',NULL,NULL,NULL,NULL),(408,6,'91009',34,1,0,NULL,'999999','2023-03-07 12:16:13','999999','2024-06-18 11:48:39',NULL,NULL),(409,6,'91009',35,1,0,NULL,'999999','2023-03-07 12:16:13','999999','2024-06-18 11:48:39',NULL,NULL),(410,329,'999999',36,1,0,NULL,'999999','2023-03-08 15:58:51','999999','2024-06-18 11:49:53',NULL,NULL),(411,329,'999999',37,1,0,NULL,'999999','2023-09-27 13:26:38','999999','2024-06-18 11:49:53',NULL,NULL),(412,15,'92004',1,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(413,15,'92004',2,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(414,15,'92004',3,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(415,15,'92004',4,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(416,15,'92004',5,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(417,15,'92004',6,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(418,15,'92004',7,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(419,15,'92004',8,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(420,15,'92004',9,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(421,15,'92004',10,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(422,15,'92004',11,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(423,15,'92004',12,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(424,15,'92004',13,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(425,15,'92004',14,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(426,15,'92004',15,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(427,15,'92004',16,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(428,15,'92004',17,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(429,15,'92004',18,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(430,15,'92004',19,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(431,15,'92004',20,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(432,15,'92004',21,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(433,15,'92004',22,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(434,15,'92004',23,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(435,15,'92004',24,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(436,15,'92004',25,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(437,15,'92004',26,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(438,15,'92004',27,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(439,15,'92004',28,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(440,15,'92004',29,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(441,15,'92004',30,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(442,15,'92004',31,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(443,15,'92004',32,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(444,15,'92004',33,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(445,15,'92004',34,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(446,15,'92004',35,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(447,15,'92004',36,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(448,15,'92004',37,1,0,NULL,'91009','2024-05-21 16:55:36',NULL,NULL,NULL,NULL),(449,293,'93003',1,1,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(450,293,'93003',2,1,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(451,293,'93003',3,1,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(452,293,'93003',4,1,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(453,293,'93003',5,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(454,293,'93003',6,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(455,293,'93003',7,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(456,293,'93003',8,1,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(457,293,'93003',9,1,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(458,293,'93003',10,1,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(459,293,'93003',11,1,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(460,293,'93003',12,1,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(461,293,'93003',13,1,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(462,293,'93003',14,1,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(463,293,'93003',15,1,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(464,293,'93003',16,1,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(465,293,'93003',17,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(466,293,'93003',18,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(467,293,'93003',19,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(468,293,'93003',20,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(469,293,'93003',21,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(470,293,'93003',22,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(471,293,'93003',23,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(472,293,'93003',24,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(473,293,'93003',25,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(474,293,'93003',26,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(475,293,'93003',27,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(476,293,'93003',28,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(477,293,'93003',29,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(478,293,'93003',30,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(479,293,'93003',31,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(480,293,'93003',32,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(481,293,'93003',33,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(482,293,'93003',34,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(483,293,'93003',35,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(484,293,'93003',36,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(485,293,'93003',37,0,0,NULL,'91009','2024-06-11 15:10:55','91009','2024-06-28 17:04:31',NULL,NULL),(486,323,'22006',1,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(487,323,'22006',2,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(488,323,'22006',3,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(489,323,'22006',4,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(490,323,'22006',5,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(491,323,'22006',6,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(492,323,'22006',7,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(493,323,'22006',8,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(494,323,'22006',9,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(495,323,'22006',10,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(496,323,'22006',11,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(497,323,'22006',12,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(498,323,'22006',13,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(499,323,'22006',14,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(500,323,'22006',15,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(501,323,'22006',16,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(502,323,'22006',17,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(503,323,'22006',18,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(504,323,'22006',19,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(505,323,'22006',20,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(506,323,'22006',21,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(507,323,'22006',22,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(508,323,'22006',23,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(509,323,'22006',24,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(510,323,'22006',25,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(511,323,'22006',26,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(512,323,'22006',27,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(513,323,'22006',28,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(514,323,'22006',29,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(515,323,'22006',30,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(516,323,'22006',31,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(517,323,'22006',32,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(518,323,'22006',33,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(519,323,'22006',34,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(520,323,'22006',35,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(521,323,'22006',36,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(522,323,'22006',37,1,0,NULL,'92004','2024-06-11 17:01:05',NULL,NULL,NULL,NULL),(523,6,'91009',36,1,0,NULL,'999999','2024-06-18 11:48:39',NULL,NULL,NULL,NULL),(524,6,'91009',37,1,0,NULL,'999999','2024-06-18 11:48:39',NULL,NULL,NULL,NULL),(525,2,'90015',34,1,0,NULL,'91009','2024-07-03 11:13:26','91009','2024-07-03 11:27:06',NULL,NULL),(526,2,'90015',35,1,0,NULL,'91009','2024-07-03 11:13:26','91009','2024-07-03 11:27:06',NULL,NULL),(527,2,'90015',36,1,0,NULL,'91009','2024-07-03 11:13:26','91009','2024-07-03 11:27:06',NULL,NULL),(528,2,'90015',37,1,0,NULL,'91009','2024-07-03 11:13:26','91009','2024-07-03 11:27:06',NULL,NULL),(529,81,'90010',1,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(530,81,'90010',2,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(531,81,'90010',3,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(532,81,'90010',4,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(533,81,'90010',5,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(534,81,'90010',6,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(535,81,'90010',7,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(536,81,'90010',8,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(537,81,'90010',9,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(538,81,'90010',10,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(539,81,'90010',11,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(540,81,'90010',12,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(541,81,'90010',13,1,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(542,81,'90010',14,1,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(543,81,'90010',15,1,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(544,81,'90010',16,1,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(545,81,'90010',17,1,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(546,81,'90010',18,1,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(547,81,'90010',19,1,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(548,81,'90010',20,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(549,81,'90010',21,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(550,81,'90010',22,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(551,81,'90010',23,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(552,81,'90010',24,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(553,81,'90010',25,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(554,81,'90010',26,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(555,81,'90010',27,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(556,81,'90010',28,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(557,81,'90010',29,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(558,81,'90010',30,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(559,81,'90010',31,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(560,81,'90010',32,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(561,81,'90010',33,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(562,81,'90010',34,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(563,81,'90010',35,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(564,81,'90010',36,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(565,81,'90010',37,0,0,NULL,'91009','2024-07-03 11:29:26',NULL,NULL,NULL,NULL),(566,217,'83006',1,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(567,217,'83006',2,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(568,217,'83006',3,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(569,217,'83006',4,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(570,217,'83006',5,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(571,217,'83006',6,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(572,217,'83006',7,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(573,217,'83006',8,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(574,217,'83006',9,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(575,217,'83006',10,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(576,217,'83006',11,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(577,217,'83006',12,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(578,217,'83006',13,1,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(579,217,'83006',14,1,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(580,217,'83006',15,1,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(581,217,'83006',16,1,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(582,217,'83006',17,1,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(583,217,'83006',18,1,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(584,217,'83006',19,1,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(585,217,'83006',20,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(586,217,'83006',21,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(587,217,'83006',22,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(588,217,'83006',23,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(589,217,'83006',24,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(590,217,'83006',25,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(591,217,'83006',26,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(592,217,'83006',27,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(593,217,'83006',28,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(594,217,'83006',29,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(595,217,'83006',30,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(596,217,'83006',31,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(597,217,'83006',32,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(598,217,'83006',33,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(599,217,'83006',34,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(600,217,'83006',35,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(601,217,'83006',36,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(602,217,'83006',37,0,0,NULL,'91009','2024-07-03 11:30:13',NULL,NULL,NULL,NULL),(603,1,'82012',34,0,0,NULL,'999999','2024-10-30 13:42:52','999999','2024-10-30 13:43:08',NULL,NULL),(604,1,'82012',35,0,0,NULL,'999999','2024-10-30 13:42:52','999999','2024-10-30 13:43:08',NULL,NULL),(605,1,'82012',36,0,0,NULL,'999999','2024-10-30 13:42:52','999999','2024-10-30 13:43:08',NULL,NULL),(606,1,'82012',37,0,0,NULL,'999999','2024-10-30 13:42:52','999999','2024-10-30 13:43:08',NULL,NULL); +/*!40000 ALTER TABLE `tbl_employee_accessibility` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_employee_accessibilityold` +-- + +DROP TABLE IF EXISTS `tbl_employee_accessibilityold`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_employee_accessibilityold` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `nik` varchar(20) DEFAULT NULL COMMENT 'NIK', + `employeename` varchar(80) DEFAULT NULL, + `msisdn` varchar(30) DEFAULT '0', + `pass` text CHARACTER SET latin1, + `maskpass` varchar(12) DEFAULT NULL COMMENT 'Password', + `menuidgroupproject` mediumtext CHARACTER SET latin1 COMMENT 'ID Groupproject', + `menuid` mediumtext CHARACTER SET latin1 COMMENT 'Menu ID', + `treemenuid` text, + `iddept` smallint(6) DEFAULT '0', + `deptname` varchar(30) DEFAULT NULL, + `isactivated` smallint(6) DEFAULT NULL COMMENT 'Aktifkan', + `idgroupuser` int(11) DEFAULT '0', + `groupuser` varchar(30) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remark` varchar(600) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_userlogin` (`nik`,`isactivated`,`isdeleted`) +) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_employee_accessibilityold` +-- + +LOCK TABLES `tbl_employee_accessibilityold` WRITE; +/*!40000 ALTER TABLE `tbl_employee_accessibilityold` DISABLE KEYS */; +INSERT INTO `tbl_employee_accessibilityold` VALUES (1,'82010','Administrator','73000032','4f851ef5374d9df4c80f870eb8a05035','1234','1,2','2,11','1,2,3,4,5,6,7,8,9,10,11,12,13',0,NULL,1,1,'ALL',0,NULL,'82010','2022-09-21 10:35:15','82010','2022-09-26 06:42:53',NULL,NULL); +/*!40000 ALTER TABLE `tbl_employee_accessibilityold` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_employee_dept` +-- + +DROP TABLE IF EXISTS `tbl_employee_dept`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_employee_dept` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `deptname` varchar(30) DEFAULT NULL COMMENT 'Department', + `description` varchar(100) DEFAULT NULL COMMENT 'Keterangan', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_employee_dept` (`_idx`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_employee_dept` +-- + +LOCK TABLES `tbl_employee_dept` WRITE; +/*!40000 ALTER TABLE `tbl_employee_dept` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_employee_dept` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_employee_userlevel` +-- + +DROP TABLE IF EXISTS `tbl_employee_userlevel`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_employee_userlevel` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `userlevel` varchar(80) DEFAULT NULL COMMENT 'User Level', + `description` varchar(100) DEFAULT NULL COMMENT 'Keterangan', + `isdeleted` smallint(6) DEFAULT '0', + `remark` varchar(200) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_employee_userlevel` (`_idx`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_employee_userlevel` +-- + +LOCK TABLES `tbl_employee_userlevel` WRITE; +/*!40000 ALTER TABLE `tbl_employee_userlevel` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_employee_userlevel` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_finance` +-- + +DROP TABLE IF EXISTS `tbl_finance`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_finance` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxbudget` int(11) DEFAULT '0', + `idxpo` int(11) DEFAULT '0', + `ponumber` varchar(80) DEFAULT NULL, + `idxvendor` int(11) DEFAULT '0', + `vendorname` varchar(100) DEFAULT NULL, + `totalpo` double DEFAULT '0', + `contractnumber` varchar(100) DEFAULT NULL, + `percentpay` double DEFAULT '0', + `totalinvoice` double DEFAULT '0', + `payto` smallint(6) DEFAULT '0', + `paymentdate` datetime DEFAULT NULL, + `payperiod` varchar(20) DEFAULT NULL, + `whtvalue` double DEFAULT '0', + `costcenter` varchar(30) DEFAULT NULL, + `description` text, + `status` int(11) DEFAULT NULL, + `statusdescription` varchar(30) DEFAULT NULL, + `laststatusupdate` datetime DEFAULT NULL, + `nikpreparedby` varchar(30) DEFAULT NULL, + `namepreparedby` varchar(200) DEFAULT '', + `positionpreparedby` varchar(200) DEFAULT '', + `prepareddate` datetime DEFAULT NULL, + `nikreviewby` varchar(30) DEFAULT NULL, + `namereviewby` varchar(200) DEFAULT '', + `positionreviewby` varchar(200) DEFAULT '', + `reviewdate` datetime DEFAULT NULL, + `nikreviewdirby` varchar(30) DEFAULT NULL, + `namereviewdirby` varchar(200) DEFAULT '', + `positionreviewdirby` varchar(200) DEFAULT '', + `reviewdirdate` datetime DEFAULT NULL, + `reviewdescription` varchar(100) DEFAULT NULL, + `filedoc` varchar(100) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_finance` (`_idx`,`idxbudget`,`idxpo`,`idxvendor`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_finance` +-- + +LOCK TABLES `tbl_finance` WRITE; +/*!40000 ALTER TABLE `tbl_finance` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_finance` ENABLE KEYS */; +UNLOCK TABLES; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `tr_beforeinsertblfinance` BEFORE INSERT ON `tbl_finance` FOR EACH ROW BEGIN + DECLARE namepreparedby1 varchar(200); + DECLARE positionpreparedby1 varchar(300); + DECLARE namereviewby1 varchar(200); + DECLARE positionreviewby1 varchar(300); + DECLARE namereviewdirby1 varchar(200); + DECLARE positionreviewdirby1 varchar(300); + + + select fullname,positionname into @namepreparedby1,@positionpreparedby1 from dbssotcel.tbl_employee where nik=NEW.nikpreparedby; + select fullname,positionname into @namereviewby1,@positionreviewby1 from dbssotcel.tbl_employee where nik=NEW.nikreviewby; + select fullname,positionname into @namereviewdirby1,@positionreviewdirby1 from dbssotcel.tbl_employee where nik=NEW.nikreviewdirby; + + set NEW.namepreparedby=@namepreparedby1; + set NEW.positionpreparedby=@positionpreparedby1; + set NEW.namereviewby=@namereviewby1; + set NEW.positionreviewby=@positionreviewby1; + set NEW.namereviewdirby=@namereviewdirby1; + set NEW.positionreviewdirby=@positionreviewdirby1; + + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `tr_afterinsertfinance` AFTER INSERT ON `tbl_finance` FOR EACH ROW BEGIN + insert into tbl_financelogs set idxfinance=NEW._idx,datelogs=now(), + status=NEW.status,statusdescription=NEW.statusdescription,iby=NEW.iby,idt=now(); + + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `dbproc`.`tr_afterupdatefinance` AFTER UPDATE + ON dbproc.tbl_finance FOR EACH ROW +BEGIN + if (OLD.status<>NEW.status) then + insert into tbl_financelogs set idxfinance=NEW._idx,datelogs=now(),status=NEW.status,statusdescription=NEW.statusdescription,iby=NEW.iby,idt=now(); + end if; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `tbl_financechecklist` +-- + +DROP TABLE IF EXISTS `tbl_financechecklist`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_financechecklist` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `checklistname` varchar(100) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_financechecklist` (`_idx`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_financechecklist` +-- + +LOCK TABLES `tbl_financechecklist` WRITE; +/*!40000 ALTER TABLE `tbl_financechecklist` DISABLE KEYS */; +INSERT INTO `tbl_financechecklist` VALUES (1,'Kontrak / Perjanjian / Agreement',0,NULL,'82010','2023-01-24 09:13:32',NULL,NULL,NULL,NULL),(2,'Surat Tagihan ',0,NULL,'82010','2023-01-24 09:13:32',NULL,NULL,NULL,NULL),(3,'Kuitansi',0,NULL,'82010','2023-01-24 09:13:32',NULL,NULL,NULL,NULL),(4,'Faktur ( Invoice)',0,NULL,'82010','2023-01-24 09:13:33',NULL,NULL,NULL,NULL),(5,'BA. Penyel./ Prestasi Pekerjaan ',0,NULL,'82010','2023-01-24 09:13:33',NULL,NULL,NULL,NULL),(6,'BAUT / BASTOS',0,NULL,'82010','2023-01-24 09:13:33',NULL,NULL,NULL,NULL),(7,'BAPP/BAPPB',0,NULL,'82010','2023-01-24 09:13:33',NULL,NULL,NULL,NULL),(8,'Jaminan Uang Muka',0,NULL,'82010','2023-01-24 09:13:33',NULL,NULL,NULL,NULL),(9,'Jaminan Pelaksanaan',0,NULL,'82010','2023-01-24 09:13:34',NULL,NULL,NULL,NULL),(10,'Jaminan Pemeliharaan',0,NULL,'82010','2023-01-24 09:14:45',NULL,NULL,NULL,NULL),(11,'Polis Asuransi ',0,NULL,'82010','2023-01-24 09:14:46',NULL,NULL,NULL,NULL),(12,'Bukti Pembay. -Premi Asuransi ',0,NULL,'82010','2023-01-24 09:14:46',NULL,NULL,NULL,NULL),(13,'Perhitungan Denda',0,NULL,'82010','2023-01-24 09:14:46',NULL,NULL,NULL,NULL),(14,'Surat Permohonan Bayar',0,NULL,'82010','2023-01-24 09:14:46',NULL,NULL,NULL,NULL),(15,'SP3 / SPK ',0,NULL,'82010','2023-01-24 09:14:46',NULL,NULL,NULL,NULL),(16,'Surat Pesanan ( PO)',0,NULL,'82010','2023-01-24 09:14:47',NULL,NULL,NULL,NULL),(17,'Tax Identification Number ( TIN)',0,NULL,'82010','2023-01-24 09:14:47',NULL,NULL,NULL,NULL),(18,'Dividas',0,NULL,'82010','2023-01-24 09:14:47',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_financechecklist` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_financedetailchecklist` +-- + +DROP TABLE IF EXISTS `tbl_financedetailchecklist`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_financedetailchecklist` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxheader` int(11) DEFAULT '0', + `idxchecklist` int(11) DEFAULT '0', + `checklistname` varchar(100) DEFAULT NULL, + `iscomplete` int(11) DEFAULT '0', + `isvalid` smallint(6) DEFAULT '0', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_financechecklist` (`_idx`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=379 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_financedetailchecklist` +-- + +LOCK TABLES `tbl_financedetailchecklist` WRITE; +/*!40000 ALTER TABLE `tbl_financedetailchecklist` DISABLE KEYS */; +INSERT INTO `tbl_financedetailchecklist` VALUES (1,1,1,'Kontrak / Perjanjian / Agreement',1,1,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(2,1,2,'Surat Tagihan ',1,1,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(3,1,3,'Kuitansi',1,1,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(4,1,4,'Faktur ( Invoice)',0,0,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(5,1,5,'BA. Penyel./ Prestasi Pekerjaan ',0,0,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(6,1,6,'BAUT / BASTOS',0,0,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(7,1,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(8,1,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(9,1,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(10,1,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(11,1,11,'Polis Asuransi ',0,0,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(12,1,12,'Bukti Pembay. -Premi Asuransi ',0,1,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(13,1,13,'Perhitungan Denda',1,0,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(14,1,14,'Surat Permohonan Bayar',0,0,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(15,1,15,'SP3 / SPK ',0,0,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(16,1,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(17,1,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(18,1,18,'Dividas',0,0,0,NULL,'999999','2023-10-03 18:49:33',NULL,NULL,NULL,NULL),(19,2,1,'Kontrak / Perjanjian / Agreement',1,0,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(20,2,2,'Surat Tagihan ',0,1,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(21,2,3,'Kuitansi',0,1,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(22,2,4,'Faktur ( Invoice)',1,0,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(23,2,5,'BA. Penyel./ Prestasi Pekerjaan ',0,1,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(24,2,6,'BAUT / BASTOS',0,1,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(25,2,7,'BAPP/BAPPB',1,0,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(26,2,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(27,2,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(28,2,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(29,2,11,'Polis Asuransi ',0,1,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(30,2,12,'Bukti Pembay. -Premi Asuransi ',1,0,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(31,2,13,'Perhitungan Denda',0,1,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(32,2,14,'Surat Permohonan Bayar',0,1,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(33,2,15,'SP3 / SPK ',1,0,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(34,2,16,'Surat Pesanan ( PO)',0,1,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(35,2,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(36,2,18,'Dividas',0,0,0,NULL,'999999','2023-10-26 16:32:59',NULL,NULL,NULL,NULL),(37,3,1,'Kontrak / Perjanjian / Agreement',0,1,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(38,3,2,'Surat Tagihan ',0,0,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(39,3,3,'Kuitansi',1,0,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(40,3,4,'Faktur ( Invoice)',0,0,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(41,3,5,'BA. Penyel./ Prestasi Pekerjaan ',1,0,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(42,3,6,'BAUT / BASTOS',0,1,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(43,3,7,'BAPP/BAPPB',1,0,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(44,3,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(45,3,9,'Jaminan Pelaksanaan',0,1,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(46,3,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(47,3,11,'Polis Asuransi ',0,1,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(48,3,12,'Bukti Pembay. -Premi Asuransi ',0,0,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(49,3,13,'Perhitungan Denda',0,0,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(50,3,14,'Surat Permohonan Bayar',1,0,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(51,3,15,'SP3 / SPK ',0,1,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(52,3,16,'Surat Pesanan ( PO)',1,0,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(53,3,17,'Tax Identification Number ( TIN)',0,1,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(54,3,18,'Dividas',0,0,0,NULL,'999999','2023-11-08 12:50:00',NULL,NULL,NULL,NULL),(55,4,1,'Kontrak / Perjanjian / Agreement',0,1,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(56,4,2,'Surat Tagihan ',1,0,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(57,4,3,'Kuitansi',0,1,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(58,4,4,'Faktur ( Invoice)',1,0,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(59,4,5,'BA. Penyel./ Prestasi Pekerjaan ',1,0,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(60,4,6,'BAUT / BASTOS',0,1,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(61,4,7,'BAPP/BAPPB',0,1,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(62,4,8,'Jaminan Uang Muka',1,0,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(63,4,9,'Jaminan Pelaksanaan',1,0,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(64,4,10,'Jaminan Pemeliharaan',0,1,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(65,4,11,'Polis Asuransi ',1,0,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(66,4,12,'Bukti Pembay. -Premi Asuransi ',0,0,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(67,4,13,'Perhitungan Denda',1,0,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(68,4,14,'Surat Permohonan Bayar',0,1,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(69,4,15,'SP3 / SPK ',0,0,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(70,4,16,'Surat Pesanan ( PO)',1,0,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(71,4,17,'Tax Identification Number ( TIN)',0,1,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(72,4,18,'Dividas',0,1,0,NULL,'999999','2023-11-08 12:52:07',NULL,NULL,NULL,NULL),(73,5,1,'Kontrak / Perjanjian / Agreement',1,0,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(74,5,2,'Surat Tagihan ',0,0,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(75,5,3,'Kuitansi',0,1,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(76,5,4,'Faktur ( Invoice)',1,0,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(77,5,5,'BA. Penyel./ Prestasi Pekerjaan ',0,1,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(78,5,6,'BAUT / BASTOS',1,0,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(79,5,7,'BAPP/BAPPB',0,1,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(80,5,8,'Jaminan Uang Muka',1,0,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(81,5,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(82,5,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(83,5,11,'Polis Asuransi ',1,0,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(84,5,12,'Bukti Pembay. -Premi Asuransi ',1,0,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(85,5,13,'Perhitungan Denda',0,1,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(86,5,14,'Surat Permohonan Bayar',0,1,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(87,5,15,'SP3 / SPK ',0,1,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(88,5,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(89,5,17,'Tax Identification Number ( TIN)',1,0,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(90,5,18,'Dividas',0,0,0,NULL,'999999','2023-11-08 12:54:23',NULL,NULL,NULL,NULL),(91,6,1,'Kontrak / Perjanjian / Agreement',0,1,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(92,6,2,'Surat Tagihan ',0,0,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(93,6,3,'Kuitansi',1,0,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(94,6,4,'Faktur ( Invoice)',0,0,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(95,6,5,'BA. Penyel./ Prestasi Pekerjaan ',1,0,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(96,6,6,'BAUT / BASTOS',0,1,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(97,6,7,'BAPP/BAPPB',1,0,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(98,6,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(99,6,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(100,6,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(101,6,11,'Polis Asuransi ',0,0,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(102,6,12,'Bukti Pembay. -Premi Asuransi ',0,1,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(103,6,13,'Perhitungan Denda',0,0,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(104,6,14,'Surat Permohonan Bayar',1,0,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(105,6,15,'SP3 / SPK ',0,1,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(106,6,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(107,6,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(108,6,18,'Dividas',0,0,0,NULL,'999999','2023-11-08 21:07:37',NULL,NULL,NULL,NULL),(109,7,1,'Kontrak / Perjanjian / Agreement',0,1,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(110,7,2,'Surat Tagihan ',1,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(111,7,3,'Kuitansi',1,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(112,7,4,'Faktur ( Invoice)',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(113,7,5,'BA. Penyel./ Prestasi Pekerjaan ',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(114,7,6,'BAUT / BASTOS',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(115,7,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(116,7,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(117,7,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(118,7,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(119,7,11,'Polis Asuransi ',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(120,7,12,'Bukti Pembay. -Premi Asuransi ',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(121,7,13,'Perhitungan Denda',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(122,7,14,'Surat Permohonan Bayar',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(123,7,15,'SP3 / SPK ',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(124,7,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(125,7,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(126,7,18,'Dividas',0,0,0,NULL,'999999','2023-11-08 21:09:28',NULL,NULL,NULL,NULL),(127,8,1,'Kontrak / Perjanjian / Agreement',0,1,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(128,8,2,'Surat Tagihan ',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(129,8,3,'Kuitansi',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(130,8,4,'Faktur ( Invoice)',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(131,8,5,'BA. Penyel./ Prestasi Pekerjaan ',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(132,8,6,'BAUT / BASTOS',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(133,8,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(134,8,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(135,8,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(136,8,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(137,8,11,'Polis Asuransi ',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(138,8,12,'Bukti Pembay. -Premi Asuransi ',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(139,8,13,'Perhitungan Denda',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(140,8,14,'Surat Permohonan Bayar',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(141,8,15,'SP3 / SPK ',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(142,8,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(143,8,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(144,8,18,'Dividas',0,0,0,NULL,'999999','2023-11-08 21:11:10',NULL,NULL,NULL,NULL),(145,9,1,'Kontrak / Perjanjian / Agreement',0,1,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(146,9,2,'Surat Tagihan ',0,1,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(147,9,3,'Kuitansi',1,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(148,9,4,'Faktur ( Invoice)',0,1,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(149,9,5,'BA. Penyel./ Prestasi Pekerjaan ',0,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(150,9,6,'BAUT / BASTOS',0,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(151,9,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(152,9,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(153,9,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(154,9,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(155,9,11,'Polis Asuransi ',0,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(156,9,12,'Bukti Pembay. -Premi Asuransi ',0,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(157,9,13,'Perhitungan Denda',0,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(158,9,14,'Surat Permohonan Bayar',0,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(159,9,15,'SP3 / SPK ',0,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(160,9,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(161,9,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(162,9,18,'Dividas',0,0,0,NULL,'999999','2023-11-09 04:07:00',NULL,NULL,NULL,NULL),(163,10,1,'Kontrak / Perjanjian / Agreement',0,1,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(164,10,2,'Surat Tagihan ',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(165,10,3,'Kuitansi',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(166,10,4,'Faktur ( Invoice)',1,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(167,10,5,'BA. Penyel./ Prestasi Pekerjaan ',0,1,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(168,10,6,'BAUT / BASTOS',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(169,10,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(170,10,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(171,10,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(172,10,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(173,10,11,'Polis Asuransi ',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(174,10,12,'Bukti Pembay. -Premi Asuransi ',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(175,10,13,'Perhitungan Denda',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(176,10,14,'Surat Permohonan Bayar',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(177,10,15,'SP3 / SPK ',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(178,10,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(179,10,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(180,10,18,'Dividas',0,0,0,NULL,'999999','2023-11-09 13:05:13',NULL,NULL,NULL,NULL),(181,11,1,'Kontrak / Perjanjian / Agreement',1,1,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(182,11,2,'Surat Tagihan ',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(183,11,3,'Kuitansi',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(184,11,4,'Faktur ( Invoice)',1,1,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(185,11,5,'BA. Penyel./ Prestasi Pekerjaan ',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(186,11,6,'BAUT / BASTOS',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(187,11,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(188,11,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(189,11,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(190,11,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(191,11,11,'Polis Asuransi ',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(192,11,12,'Bukti Pembay. -Premi Asuransi ',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(193,11,13,'Perhitungan Denda',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(194,11,14,'Surat Permohonan Bayar',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(195,11,15,'SP3 / SPK ',1,1,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(196,11,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(197,11,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(198,11,18,'Dividas',0,0,0,NULL,'999999','2024-01-15 12:36:58',NULL,NULL,NULL,NULL),(199,12,1,'Kontrak / Perjanjian / Agreement',1,1,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(200,12,2,'Surat Tagihan ',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(201,12,3,'Kuitansi',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(202,12,4,'Faktur ( Invoice)',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(203,12,5,'BA. Penyel./ Prestasi Pekerjaan ',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(204,12,6,'BAUT / BASTOS',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(205,12,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(206,12,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(207,12,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(208,12,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(209,12,11,'Polis Asuransi ',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(210,12,12,'Bukti Pembay. -Premi Asuransi ',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(211,12,13,'Perhitungan Denda',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(212,12,14,'Surat Permohonan Bayar',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(213,12,15,'SP3 / SPK ',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(214,12,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(215,12,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(216,12,18,'Dividas',0,0,0,NULL,'999999','2024-01-15 12:41:13',NULL,NULL,NULL,NULL),(217,13,1,'Kontrak / Perjanjian / Agreement',0,1,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(218,13,2,'Surat Tagihan ',1,1,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(219,13,3,'Kuitansi',0,1,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(220,13,4,'Faktur ( Invoice)',1,1,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(221,13,5,'BA. Penyel./ Prestasi Pekerjaan ',1,0,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(222,13,6,'BAUT / BASTOS',0,0,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(223,13,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(224,13,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(225,13,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(226,13,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(227,13,11,'Polis Asuransi ',0,1,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(228,13,12,'Bukti Pembay. -Premi Asuransi ',1,0,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(229,13,13,'Perhitungan Denda',0,1,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(230,13,14,'Surat Permohonan Bayar',0,1,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(231,13,15,'SP3 / SPK ',1,0,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(232,13,16,'Surat Pesanan ( PO)',0,1,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(233,13,17,'Tax Identification Number ( TIN)',0,1,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(234,13,18,'Dividas',1,0,0,NULL,'999999','2024-01-16 12:33:59',NULL,NULL,NULL,NULL),(235,14,1,'Kontrak / Perjanjian / Agreement',0,1,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(236,14,2,'Surat Tagihan ',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(237,14,3,'Kuitansi',0,1,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(238,14,4,'Faktur ( Invoice)',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(239,14,5,'BA. Penyel./ Prestasi Pekerjaan ',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(240,14,6,'BAUT / BASTOS',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(241,14,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(242,14,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(243,14,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(244,14,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(245,14,11,'Polis Asuransi ',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(246,14,12,'Bukti Pembay. -Premi Asuransi ',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(247,14,13,'Perhitungan Denda',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(248,14,14,'Surat Permohonan Bayar',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(249,14,15,'SP3 / SPK ',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(250,14,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(251,14,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(252,14,18,'Dividas',0,0,0,NULL,'999999','2024-01-17 13:12:06',NULL,NULL,NULL,NULL),(253,15,1,'Kontrak / Perjanjian / Agreement',1,1,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(254,15,2,'Surat Tagihan ',1,1,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(255,15,3,'Kuitansi',1,0,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(256,15,4,'Faktur ( Invoice)',0,1,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(257,15,5,'BA. Penyel./ Prestasi Pekerjaan ',1,0,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(258,15,6,'BAUT / BASTOS',1,1,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(259,15,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(260,15,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(261,15,9,'Jaminan Pelaksanaan',1,0,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(262,15,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(263,15,11,'Polis Asuransi ',0,0,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(264,15,12,'Bukti Pembay. -Premi Asuransi ',1,0,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(265,15,13,'Perhitungan Denda',0,1,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(266,15,14,'Surat Permohonan Bayar',1,0,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(267,15,15,'SP3 / SPK ',0,1,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(268,15,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(269,15,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(270,15,18,'Dividas',0,0,0,NULL,'999999','2024-01-23 14:16:06',NULL,NULL,NULL,NULL),(271,16,1,'Kontrak / Perjanjian / Agreement',1,1,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(272,16,2,'Surat Tagihan ',1,1,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(273,16,3,'Kuitansi',1,1,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(274,16,4,'Faktur ( Invoice)',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(275,16,5,'BA. Penyel./ Prestasi Pekerjaan ',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(276,16,6,'BAUT / BASTOS',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(277,16,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(278,16,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(279,16,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(280,16,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(281,16,11,'Polis Asuransi ',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(282,16,12,'Bukti Pembay. -Premi Asuransi ',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(283,16,13,'Perhitungan Denda',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(284,16,14,'Surat Permohonan Bayar',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(285,16,15,'SP3 / SPK ',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(286,16,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(287,16,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(288,16,18,'Dividas',0,0,0,NULL,'999999','2024-02-10 03:33:03',NULL,NULL,NULL,NULL),(289,17,1,'Kontrak / Perjanjian / Agreement',1,1,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(290,17,2,'Surat Tagihan ',0,0,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(291,17,3,'Kuitansi',1,1,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(292,17,4,'Faktur ( Invoice)',1,1,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(293,17,5,'BA. Penyel./ Prestasi Pekerjaan ',0,0,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(294,17,6,'BAUT / BASTOS',0,0,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(295,17,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(296,17,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(297,17,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(298,17,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(299,17,11,'Polis Asuransi ',0,0,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(300,17,12,'Bukti Pembay. -Premi Asuransi ',0,0,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(301,17,13,'Perhitungan Denda',0,0,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(302,17,14,'Surat Permohonan Bayar',0,0,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(303,17,15,'SP3 / SPK ',1,1,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(304,17,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(305,17,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(306,17,18,'Dividas',0,0,0,NULL,'999999','2024-02-24 10:40:16',NULL,NULL,NULL,NULL),(307,18,1,'Kontrak / Perjanjian / Agreement',1,1,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(308,18,2,'Surat Tagihan ',0,0,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(309,18,3,'Kuitansi',0,0,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(310,18,4,'Faktur ( Invoice)',1,1,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(311,18,5,'BA. Penyel./ Prestasi Pekerjaan ',0,0,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(312,18,6,'BAUT / BASTOS',1,1,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(313,18,7,'BAPP/BAPPB',1,1,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(314,18,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(315,18,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(316,18,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(317,18,11,'Polis Asuransi ',0,0,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(318,18,12,'Bukti Pembay. -Premi Asuransi ',0,0,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(319,18,13,'Perhitungan Denda',0,0,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(320,18,14,'Surat Permohonan Bayar',0,0,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(321,18,15,'SP3 / SPK ',1,1,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(322,18,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(323,18,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(324,18,18,'Dividas',0,0,0,NULL,'999999','2024-02-24 10:46:53',NULL,NULL,NULL,NULL),(325,19,1,'Kontrak / Perjanjian / Agreement',1,1,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(326,19,2,'Surat Tagihan ',0,0,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(327,19,3,'Kuitansi',1,1,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(328,19,4,'Faktur ( Invoice)',1,1,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(329,19,5,'BA. Penyel./ Prestasi Pekerjaan ',0,0,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(330,19,6,'BAUT / BASTOS',0,0,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(331,19,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(332,19,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(333,19,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(334,19,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(335,19,11,'Polis Asuransi ',0,0,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(336,19,12,'Bukti Pembay. -Premi Asuransi ',0,0,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(337,19,13,'Perhitungan Denda',0,0,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(338,19,14,'Surat Permohonan Bayar',0,0,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(339,19,15,'SP3 / SPK ',1,1,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(340,19,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(341,19,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(342,19,18,'Dividas',0,0,0,NULL,'999999','2024-02-28 11:27:02',NULL,NULL,NULL,NULL),(343,20,1,'Kontrak / Perjanjian / Agreement',1,1,0,NULL,'999999','2024-02-28 13:51:08',NULL,NULL,NULL,NULL),(344,20,2,'Surat Tagihan ',1,0,0,NULL,'999999','2024-02-28 13:51:08',NULL,NULL,NULL,NULL),(345,20,3,'Kuitansi',0,0,0,NULL,'999999','2024-02-28 13:51:08',NULL,NULL,NULL,NULL),(346,20,4,'Faktur ( Invoice)',0,0,0,NULL,'999999','2024-02-28 13:51:08',NULL,NULL,NULL,NULL),(347,20,5,'BA. Penyel./ Prestasi Pekerjaan ',0,0,0,NULL,'999999','2024-02-28 13:51:08',NULL,NULL,NULL,NULL),(348,20,6,'BAUT / BASTOS',0,1,0,NULL,'999999','2024-02-28 13:51:08',NULL,NULL,NULL,NULL),(349,20,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2024-02-28 13:51:09',NULL,NULL,NULL,NULL),(350,20,8,'Jaminan Uang Muka',1,0,0,NULL,'999999','2024-02-28 13:51:09',NULL,NULL,NULL,NULL),(351,20,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2024-02-28 13:51:09',NULL,NULL,NULL,NULL),(352,20,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2024-02-28 13:51:09',NULL,NULL,NULL,NULL),(353,20,11,'Polis Asuransi ',0,0,0,NULL,'999999','2024-02-28 13:51:09',NULL,NULL,NULL,NULL),(354,20,12,'Bukti Pembay. -Premi Asuransi ',0,1,0,NULL,'999999','2024-02-28 13:51:09',NULL,NULL,NULL,NULL),(355,20,13,'Perhitungan Denda',0,1,0,NULL,'999999','2024-02-28 13:51:09',NULL,NULL,NULL,NULL),(356,20,14,'Surat Permohonan Bayar',1,1,0,NULL,'999999','2024-02-28 13:51:09',NULL,NULL,NULL,NULL),(357,20,15,'SP3 / SPK ',1,0,0,NULL,'999999','2024-02-28 13:51:09',NULL,NULL,NULL,NULL),(358,20,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2024-02-28 13:51:09',NULL,NULL,NULL,NULL),(359,20,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2024-02-28 13:51:09',NULL,NULL,NULL,NULL),(360,20,18,'Dividas',0,0,0,NULL,'999999','2024-02-28 13:51:09',NULL,NULL,NULL,NULL),(361,1,1,'Kontrak / Perjanjian / Agreement',0,1,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(362,1,2,'Surat Tagihan ',1,0,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(363,1,3,'Kuitansi',0,1,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(364,1,4,'Faktur ( Invoice)',1,0,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(365,1,5,'BA. Penyel./ Prestasi Pekerjaan ',0,0,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(366,1,6,'BAUT / BASTOS',0,0,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(367,1,7,'BAPP/BAPPB',0,0,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(368,1,8,'Jaminan Uang Muka',0,0,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(369,1,9,'Jaminan Pelaksanaan',0,0,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(370,1,10,'Jaminan Pemeliharaan',0,0,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(371,1,11,'Polis Asuransi ',0,0,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(372,1,12,'Bukti Pembay. -Premi Asuransi ',0,1,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(373,1,13,'Perhitungan Denda',0,0,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(374,1,14,'Surat Permohonan Bayar',0,1,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(375,1,15,'SP3 / SPK ',0,0,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(376,1,16,'Surat Pesanan ( PO)',0,0,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(377,1,17,'Tax Identification Number ( TIN)',0,0,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL),(378,1,18,'Dividas',0,0,0,NULL,'999999','2024-07-03 16:00:14',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_financedetailchecklist` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_financelogs` +-- + +DROP TABLE IF EXISTS `tbl_financelogs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_financelogs` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxfinance` int(11) DEFAULT '0', + `datelogs` datetime DEFAULT NULL, + `status` int(11) DEFAULT NULL, + `statusdescription` varchar(30) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_financelogs` +-- + +LOCK TABLES `tbl_financelogs` WRITE; +/*!40000 ALTER TABLE `tbl_financelogs` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_financelogs` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_financestatus` +-- + +DROP TABLE IF EXISTS `tbl_financestatus`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_financestatus` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `status` int(11) DEFAULT NULL, + `description` varchar(30) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_justificationstatus` (`_idx`,`status`,`idt`,`isdeleted`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_financestatus` +-- + +LOCK TABLES `tbl_financestatus` WRITE; +/*!40000 ALTER TABLE `tbl_financestatus` DISABLE KEYS */; +INSERT INTO `tbl_financestatus` VALUES (1,-2,'Rejected',0,NULL,'82010','2022-11-29 06:56:18',NULL,NULL,NULL,NULL),(2,-1,'Draft',0,NULL,'82010','2022-11-29 06:56:18',NULL,NULL,NULL,NULL),(3,0,'Submitted',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL),(4,1,'Paid',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL),(5,2,'Verify by Fin',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_financestatus` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_justification` +-- + +DROP TABLE IF EXISTS `tbl_justification`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_justification` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxrequestbudget` int(11) DEFAULT '0', + `trxid` varchar(30) DEFAULT NULL, + `justificationnumber` varchar(60) DEFAULT NULL, + `title` varchar(200) DEFAULT NULL, + `division` varchar(80) DEFAULT NULL, + `idcoa` int(11) DEFAULT '0', + `glacc` varchar(30) DEFAULT NULL, + `description` varchar(300) DEFAULT NULL, + `budgettype` varchar(30) DEFAULT NULL, + `amount` double DEFAULT '0', + `useddate` datetime DEFAULT NULL, + `textpurpose` text COMMENT '1. Maksud dan Tujuan', + `textintroduce` text COMMENT '2. latar belakang', + `textstrategic` text COMMENT '3. Aspek strategis dan bisnis', + `textbussiness` text COMMENT '4. Aspek bisnis dan financial', + `textrisk` text COMMENT '5. Risiko dan mitigasi', + `textfund` text COMMENT '6. Anggaran dan sumber pendanaan', + `textrecomendation` text COMMENT '7. Rekomendasi Keputusan', + `textschedule` text COMMENT '8. Jadwal Pelaksanaan', + `status` int(11) DEFAULT NULL, + `statusdescription` varchar(30) DEFAULT NULL, + `filedoc` varchar(200) DEFAULT '', + `filedocmerge` varchar(100) DEFAULT '', + `ismergedoc` smallint(6) DEFAULT '0', + `filepdf` varchar(100) DEFAULT NULL, + `iscreatepr` smallint(6) DEFAULT '0', + `createprdate` datetime DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`) +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_justification` +-- + +LOCK TABLES `tbl_justification` WRITE; +/*!40000 ALTER TABLE `tbl_justification` DISABLE KEYS */; +INSERT INTO `tbl_justification` VALUES (1,1,'TRX/20241002/93003/0001','NO: 001/LG280/TCL-1200000/2024','tes','divisi',0,'13201022','Upgrading The Scalability of Datacom','CAPEX',1889287,'2024-10-02 00:00:00','','','','','','','','',-1,'draft','justifikasi_999999_1727860642953.docx','',0,NULL,0,NULL,1,'gajadi','999999','2024-10-02 18:18:07',NULL,NULL,'999999','2024-10-02 18:19:11'),(2,1,'TRX/20241002/93003/0001','NO: 001/LG280/TCL-1200000/2024','Upgrade Scalability Datacom','Mobile Network Operation',0,'13201022','Upgrading The Scalability of Datacom','CAPEX',1889287,'2024-12-31 00:00:00','','','','','','','','',0,'Submitted','justifikasi_93003_1727860830921.docx','',0,NULL,0,NULL,0,NULL,'93003','2024-10-02 18:21:15','93003','2024-10-02 18:23:11',NULL,NULL),(3,2,'TRX/20241030/93003/0002','000/LG280/TCL-1200000/2024','Justifikasi Akselerasi Moderenisasi RAN','MNO',0,'13201022','RAN Modernization','CAPEX',535619,'2024-12-01 00:00:00','','','','','','','','',0,'Submitted','justifikasi_93003_1730251674421.docx','',0,NULL,0,NULL,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(4,4,'TRX/20250320/93003/0001','28/LG280/TLC-12000000/2025','Penggantian dan Perbaikan Genset MSC & DC Aimutin (1x500 KVA)','MNO',0,'13201022','Pengadaan New Genset 500KVA & General Maintenance 1x Genset 500KVA','CAPEX',99677,'2025-03-31 00:00:00','','','','','','','','',0,'Submitted','justifikasi_93003_1742435649899.docx','',0,NULL,0,NULL,0,NULL,'93003','2025-03-20 10:55:43','93003','2025-03-20 11:39:13',NULL,NULL); +/*!40000 ALTER TABLE `tbl_justification` ENABLE KEYS */; +UNLOCK TABLES; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `dbproc`.`tr_afterinsertjustification` AFTER INSERT + ON dbproc.tbl_justification FOR EACH ROW +BEGIN + insert into tbl_justificationlogs set idxjustification=NEW._idx,datelogs=now(), + status=NEW.status,statusdescription=NEW.statusdescription,iby=NEW.iby,idt=now(); + + update tbl_requestbudget set isused=1 where _idx=NEW.idxrequestbudget; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `dbproc`.`tr_afterupdatejustification` AFTER UPDATE + ON dbproc.tbl_justification FOR EACH ROW +BEGIN + if (OLD.status<>NEW.status) then + insert into tbl_justificationlogs set idxjustification=NEW._idx,datelogs=now(),status=NEW.status,statusdescription=NEW.statusdescription,iby=NEW.iby,idt=now(); + end if; + + if (NEW.status>=0 and NEW.isdeleted=0) then + update tbl_requestbudget set isused=1 where _idx=NEW.idxrequestbudget; +-- else +-- update tbl_requestbudget set isused=0 where _idx=NEW.idxrequestbudget; + end if; + + if (NEW.isdeleted=1) then + update tbl_justificationboq set isdeleted=1,remarkdeleted=NEW.remarkdeleted where idxjustification=NEW._idx; + update tbl_justificationttd set isdeleted=1,remarkdeleted=NEW.remarkdeleted where idxjustification=NEW._idx; + update tbl_justificationlogs set isdeleted=1,remarkdeleted=NEW.remarkdeleted where idxjustification=NEW._idx; + update tbl_requestbudget set isused=0 where _idx=NEW.idxrequestbudget; + end if; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `tbl_justificationboq` +-- + +DROP TABLE IF EXISTS `tbl_justificationboq`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_justificationboq` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxjustification` int(11) DEFAULT '0', + `items` varchar(100) DEFAULT NULL, + `qty` double DEFAULT '0', + `unitprice` double DEFAULT '0', + `units` varchar(20) DEFAULT NULL, + `total` double DEFAULT '0', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_justificationboq` (`_idx`,`idxjustification`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=135 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_justificationboq` +-- + +LOCK TABLES `tbl_justificationboq` WRITE; +/*!40000 ALTER TABLE `tbl_justificationboq` DISABLE KEYS */; +INSERT INTO `tbl_justificationboq` VALUES (1,1,'tes',20,1,'pcs',20,1,'gajadi','999999','2024-10-02 18:18:07',NULL,NULL,NULL,NULL),(2,2,'Hardware',1,943631.2,'1',943631.2,0,NULL,'93003','2024-10-02 18:21:15','93003','2024-10-02 18:23:11',NULL,NULL),(3,2,'Services',1,458218.68,'1',458218.68,0,NULL,'93003','2024-10-02 18:21:15','93003','2024-10-02 18:23:11',NULL,NULL),(4,2,'Software',1,344786.4,'1',344786.4,0,NULL,'93003','2024-10-02 18:21:15','93003','2024-10-02 18:23:11',NULL,NULL),(5,2,'Support Warranty',1,142650.72,'1',142650.72,0,NULL,'93003','2024-10-02 18:21:15','93003','2024-10-02 18:23:11',NULL,NULL),(6,3,'ZXRAN V9200 Plug - in ',1,1662.3,'Unit',1662.3,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(7,3,'Virtualized Environtmental Monitor C1',1,212.88,'Unit',212.88,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(8,3,'Power Distribution Board C1',1,393,'Unit',393,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(9,3,'Virtualized Switch type D1',1,6339.12,'Unit',6339.12,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(10,3,'Virtualized Basestation Processing Type E1P',1,2093.89,'Unit',2093.89,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(11,3,'Virtualized Basestation Processing Type E3P',1,15704.1,'Unit',15704.1,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(12,3,'10G/1310nm SM Optical Module (1.4km)',1,473.76,'Unit',473.76,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(13,3,'25G-2Km SFP Optical Tranceiver Module (Industrial)',1,657.2,'Unit',657.2,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(14,3,'ZX SDR R9614 S23 (8*50W) (without SFP) ',1,52429.3,'Unit',52429.3,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(15,3,'ZX SDR R9264H M901821 (2*80W+4*140W) (without SFP)',1,96625.62,'Unit',96625.62,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(16,3,'GPS Sets',1,587.7,'Unit',587.7,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(17,3,'DCPD108 Installation Material',1,1339.2,'Unit',1339.2,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(18,3,'RRU Engineering Cable ',1,1332.2,'Unit',1332.2,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(19,3,'RRU Engineering Cable (super high power)',1,4719.6,'Unit',4719.6,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(20,3,'RRU Engineering Installation Kit',1,297.6,'Unit ',297.6,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(21,3,'RRU Engineering Installation Kit (Strong) ',1,1181.88,'Unit',1181.88,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(22,3,'RRU Engineering Accessory (8T) ',1,440.44,'Unit',440.44,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(23,3,'ZX RAN VC9910A Cabinet',1,4987.32,'Unit',4987.32,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(24,3,'BS 9900A Engineering Accessorial Materials',1,386.76,'Unit',386.76,0,NULL,'93003','2024-10-30 10:28:48','93003','2025-03-20 15:45:04',NULL,NULL),(25,3,'BS9900A Engineering Installation Cables Package',1,2817.18,'Unit',2817.18,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(26,3,'VC9910A Top Cover & Base (Aluminium)',1,667.2,'Unit',667.2,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(27,3,'LPU2 Module',1,1090.38,'Unit',1090.38,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(28,3,'Ethernet Lighting Protection Board',1,72.84,'Unit',72.84,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(29,3,'MCB 100A',1,159.12,'Unit',159.12,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(30,3,'MCB 63A',1,114.3,'Unit',114.3,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(31,3,'Cable Fixing ',1,148.2,'Unit',148.2,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(32,3,'Metal Hose',1,2433,'Unit',2433,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(33,3,'12-port antenna',1,42384.84,'Unit',42384.84,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(34,3,'AISG Cable (5m R886X)',1,181.44,'Unit',181.44,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(35,3,'Jumper (RRU-N)',1,558.4,'Unit',558.4,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(36,3,'Jumper (RRU-4.3-10)',1,1313.82,'Unit',1313.82,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(37,3,'4G capacity license for 1MHZ FDD (4*4 MIMO)',1,62910.35,'Unit',62910.35,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(38,3,'4G capacity license for 1MHZ TDD (4*4 MIMO) ',1,23271.34,'Unit',23271.34,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(39,3,'MM Capacity License for 1MHZ TDD (64*64 MIMO)',1,3168.73,'Unit',3168.73,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(40,3,'4G FFD Power License per watt',1,75909.81,'Unit',75909.81,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(41,3,'4G TTD Power License per watt',1,17806.01,'Unit',17806.01,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(42,3,'4G MM Power License per watt',1,468.58,'Unit',468.58,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(43,3,'Software Basic package for 4G FDD (excluding OSS basic software)',1,60576.12,'Unit',60576.12,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(44,3,'Software basic package for 4G TTD (excluding OSS basic software)',1,19414.02,'Unit',19414.02,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(45,3,'Software OSS package for 4G FDD',1,1346.13,'Unit',1346.13,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(46,3,'Software OSS package for 4G TDD',1,498.57,'Unit',498.57,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(47,3,'4G FDD AYCE',1,16780.09,'Unit',16780.09,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(48,3,'4G TDD AYCE',1,6238.84,'Unit',6238.84,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(49,3,'Implementation Services for cabinet + BBU +1-3 RRU 2 Mode',1,94.42,'Unit',94.42,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(50,3,'Implementation Services for cabinet + BBU +4-6RRU 2 Mode',1,1224.88,'Unit',1224.88,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(51,3,'Implementation Services for BBU +1-3 RRU 1 Mode',1,751.12,'Unit',751.12,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(52,3,'Cabinet + BBU + 4-6 RRU Disamantle',1,331.65,'Unit',331.65,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(53,3,'1-3RRU Dismantle',1,210.51,'Unit',210.51,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(54,3,'Installation (1-3 Sector) Antenna (Collocation)',1,78.91,'Unit',78.91,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(55,3,'(1-3 Sector) Antenna Dismantle (Collocation)',1,43.55,'Unit',43.55,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(56,3,'Implementation Services for 2th TDD Carrier',1,60.35,'Unit',60.35,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(57,3,'Optimization 1 Modeband',1,202.83,'Unit',202.83,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(58,3,'Optimization 2 Modeband',1,427.5,'Unit',427.5,0,NULL,'93003','2024-10-30 11:00:44','93003','2025-03-20 15:45:04',NULL,NULL),(59,3,'BS9900A Engineering Installation Cables Package',1,2817.18,'Unit',2817.18,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(60,3,'VC9910A Top Cover & Base (Aluminium)',1,667.2,'Unit',667.2,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(61,3,'LPU2 Module',1,1090.38,'Unit',1090.38,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(62,3,'Ethernet Lighting Protection Board',1,72.84,'Unit',72.84,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(63,3,'MCB 100A',1,159.12,'Unit',159.12,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(64,3,'MCB 63A',1,114.3,'Unit',114.3,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(65,3,'Cable Fixing ',1,148.2,'Unit',148.2,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(66,3,'Metal Hose',1,2433,'Unit',2433,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(67,3,'12-port antenna',1,42384.84,'Unit',42384.84,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(68,3,'AISG Cable (5m R886X)',1,181.44,'Unit',181.44,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(69,3,'Jumper (RRU-N)',1,558.4,'Unit',558.4,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(70,3,'Jumper (RRU-4.3-10)',1,1313.82,'Unit',1313.82,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(71,3,'4G capacity license for 1MHZ FDD (4*4 MIMO)',1,62910.35,'Unit',62910.35,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(72,3,'4G capacity license for 1MHZ TDD (4*4 MIMO) ',1,23271.34,'Unit',23271.34,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(73,3,'MM Capacity License for 1MHZ TDD (64*64 MIMO)',1,3168.73,'Unit',3168.73,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(74,3,'4G FFD Power License per watt',1,75909.81,'Unit',75909.81,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(75,3,'4G TTD Power License per watt',1,17806.01,'Unit',17806.01,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(76,3,'4G MM Power License per watt',1,468.58,'Unit',468.58,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(77,3,'Software Basic package for 4G FDD (excluding OSS basic software)',1,60576.12,'Unit',60576.12,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(78,3,'Software basic package for 4G TTD (excluding OSS basic software)',1,19414.02,'Unit',19414.02,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(79,3,'Software OSS package for 4G FDD',1,1346.13,'Unit',1346.13,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(80,3,'Software OSS package for 4G TDD',1,498.57,'Unit',498.57,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(81,3,'4G FDD AYCE',1,16780.09,'Unit',16780.09,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(82,3,'4G TDD AYCE',1,6238.84,'Unit',6238.84,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(83,3,'Implementation Services for cabinet + BBU +1-3 RRU 2 Mode',1,94.42,'Unit',94.42,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(84,3,'Implementation Services for cabinet + BBU +4-6RRU 2 Mode',1,1224.88,'Unit',1224.88,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(85,3,'Implementation Services for BBU +1-3 RRU 1 Mode',1,751.12,'Unit',751.12,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(86,3,'Cabinet + BBU + 4-6 RRU Disamantle',1,331.65,'Unit',331.65,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(87,3,'1-3RRU Dismantle',1,210.51,'Unit',210.51,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(88,3,'Installation (1-3 Sector) Antenna (Collocation)',1,78.91,'Unit',78.91,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(89,3,'(1-3 Sector) Antenna Dismantle (Collocation)',1,43.55,'Unit',43.55,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(90,3,'Implementation Services for 2th TDD Carrier',1,60.35,'Unit',60.35,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(91,3,'Optimization 1 Modeband',1,202.83,'Unit',202.83,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(92,3,'Optimization 2 Modeband',1,427.5,'Unit',427.5,0,NULL,'93003','2024-10-30 11:00:54','93003','2025-03-20 15:45:04',NULL,NULL),(93,3,'BS9900A Engineering Installation Cables Package',1,2817.18,'Unit',2817.18,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(94,3,'VC9910A Top Cover & Base (Aluminium)',1,667.2,'Unit',667.2,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(95,3,'LPU2 Module',1,1090.38,'Unit',1090.38,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(96,3,'Ethernet Lighting Protection Board',1,72.84,'Unit',72.84,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(97,3,'MCB 100A',1,159.12,'Unit',159.12,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(98,3,'MCB 63A',1,114.3,'Unit',114.3,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(99,3,'Cable Fixing ',1,148.2,'Unit',148.2,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(100,3,'Metal Hose',1,2433,'Unit',2433,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(101,3,'12-port antenna',1,42384.84,'Unit',42384.84,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(102,3,'AISG Cable (5m R886X)',1,181.44,'Unit',181.44,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(103,3,'Jumper (RRU-N)',1,558.4,'Unit',558.4,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(104,3,'Jumper (RRU-4.3-10)',1,1313.82,'Unit',1313.82,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(105,3,'4G capacity license for 1MHZ FDD (4*4 MIMO)',1,62910.35,'Unit',62910.35,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(106,3,'4G capacity license for 1MHZ TDD (4*4 MIMO) ',1,23271.34,'Unit',23271.34,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(107,3,'MM Capacity License for 1MHZ TDD (64*64 MIMO)',1,3168.73,'Unit',3168.73,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(108,3,'4G FFD Power License per watt',1,75909.81,'Unit',75909.81,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(109,3,'4G TTD Power License per watt',1,17806.01,'Unit',17806.01,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(110,3,'4G MM Power License per watt',1,468.58,'Unit',468.58,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(111,3,'Software Basic package for 4G FDD (excluding OSS basic software)',1,60576.12,'Unit',60576.12,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(112,3,'Software basic package for 4G TTD (excluding OSS basic software)',1,19414.02,'Unit',19414.02,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(113,3,'Software OSS package for 4G FDD',1,1346.13,'Unit',1346.13,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(114,3,'Software OSS package for 4G TDD',1,498.57,'Unit',498.57,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(115,3,'4G FDD AYCE',1,16780.09,'Unit',16780.09,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(116,3,'4G TDD AYCE',1,6238.84,'Unit',6238.84,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(117,3,'Implementation Services for cabinet + BBU +1-3 RRU 2 Mode',1,94.42,'Unit',94.42,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(118,3,'Implementation Services for cabinet + BBU +4-6RRU 2 Mode',1,1224.88,'Unit',1224.88,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(119,3,'Implementation Services for BBU +1-3 RRU 1 Mode',1,751.12,'Unit',751.12,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(120,3,'Cabinet + BBU + 4-6 RRU Disamantle',1,331.65,'Unit',331.65,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(121,3,'1-3RRU Dismantle',1,210.51,'Unit',210.51,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(122,3,'Installation (1-3 Sector) Antenna (Collocation)',1,78.91,'Unit',78.91,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(123,3,'(1-3 Sector) Antenna Dismantle (Collocation)',1,43.55,'Unit',43.55,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(124,3,'Implementation Services for 2th TDD Carrier',1,60.35,'Unit',60.35,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(125,3,'Optimization 1 Modeband',1,202.83,'Unit',202.83,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(126,3,'Optimization 2 Modeband',1,427.5,'Unit',427.5,0,NULL,'93003','2024-10-30 11:01:03','93003','2025-03-20 15:45:04',NULL,NULL),(127,4,'Pengadaan New Genset 500 KVA',1,56774,'Unit',56774,0,NULL,'93003','2025-03-20 10:55:43','93003','2025-03-20 11:39:13',NULL,NULL),(128,4,'Panel ATS 800A',1,7742,'Unit',7742,0,NULL,'93003','2025-03-20 10:55:43','93003','2025-03-20 11:39:13',NULL,NULL),(129,4,'Panel ACPDU (Jadi satu dengan panes ATS)',1,2581,'Unit',2581,0,NULL,'93003','2025-03-20 10:55:43','93003','2025-03-20 11:39:13',NULL,NULL),(130,4,'Panel ACPDB (untuk PAC Data Center)',1,1935,'Unit',1935,0,NULL,'93003','2025-03-20 10:55:43','93003','2025-03-20 11:39:13',NULL,NULL),(131,4,'Pengadaan New Radiator Genset Existing 500 KVA',1,18387,'Unit',18387,0,NULL,'93003','2025-03-20 10:55:43','93003','2025-03-20 11:39:13',NULL,NULL),(132,4,'NYYHY 1x240mm (Panel EDTL & gensets to ATS)',1,3871,'Meter',3871,0,NULL,'93003','2025-03-20 10:55:43','93003','2025-03-20 11:39:13',NULL,NULL),(133,4,'Service (Install Genset Baru & ATS, Perbaiki Genset Lama, Integrasi)',1,5806,'Lot',5806,0,NULL,'93003','2025-03-20 10:55:43','93003','2025-03-20 11:39:13',NULL,NULL),(134,4,'Material Delivery',1,2581,'Lot',2581,0,NULL,'93003','2025-03-20 10:55:43','93003','2025-03-20 11:39:13',NULL,NULL); +/*!40000 ALTER TABLE `tbl_justificationboq` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_justificationlogs` +-- + +DROP TABLE IF EXISTS `tbl_justificationlogs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_justificationlogs` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxjustification` int(11) DEFAULT '0', + `datelogs` datetime DEFAULT NULL, + `status` int(11) DEFAULT NULL, + `statusdescription` varchar(30) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`) +) ENGINE=InnoDB AUTO_INCREMENT=289 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_justificationlogs` +-- + +LOCK TABLES `tbl_justificationlogs` WRITE; +/*!40000 ALTER TABLE `tbl_justificationlogs` DISABLE KEYS */; +INSERT INTO `tbl_justificationlogs` VALUES (1,1,'2023-09-06 12:07:23',-1,'draft',1,'gajadi','999999','2023-09-06 12:07:23',NULL,NULL,NULL,NULL),(2,1,'2023-09-06 12:07:32',0,'Submitted',1,'gajadi','999999','2023-09-06 12:07:32',NULL,NULL,NULL,NULL),(3,1,'2023-09-06 12:07:57',2,'Approved',1,'gajadi','999999','2023-09-06 12:07:57',NULL,NULL,NULL,NULL),(4,2,'2023-09-06 12:11:12',-1,'draft',1,'d','999999','2023-09-06 12:11:12',NULL,NULL,NULL,NULL),(5,2,'2023-09-06 12:11:22',0,'Submitted',1,'d','999999','2023-09-06 12:11:22',NULL,NULL,NULL,NULL),(6,2,'2023-09-06 12:11:55',2,'Approved',1,'d','999999','2023-09-06 12:11:55',NULL,NULL,NULL,NULL),(7,3,'2023-09-06 12:14:38',-1,'draft',0,NULL,'999999','2023-09-06 12:14:38',NULL,NULL,NULL,NULL),(8,1,'2023-09-06 12:24:30',-1,'draft',1,'gajadi','999999','2023-09-06 12:24:30',NULL,NULL,NULL,NULL),(9,1,'2023-09-06 12:41:13',0,'Submitted',1,'gajadi','999999','2023-09-06 12:41:13',NULL,NULL,NULL,NULL),(10,1,'2023-09-06 12:41:48',2,'Approved',1,'gajadi','999999','2023-09-06 12:41:48',NULL,NULL,NULL,NULL),(11,2,'2023-09-06 14:34:51',-1,'draft',1,'d','999999','2023-09-06 14:34:51',NULL,NULL,NULL,NULL),(12,2,'2023-09-06 14:35:17',0,'Submitted',1,'d','999999','2023-09-06 14:35:17',NULL,NULL,NULL,NULL),(13,2,'2023-09-06 14:37:05',2,'Approved',1,'d','999999','2023-09-06 14:37:05',NULL,NULL,NULL,NULL),(14,3,'2023-09-06 17:23:12',-1,'draft',0,NULL,'999999','2023-09-06 17:23:12',NULL,NULL,NULL,NULL),(15,3,'2023-09-06 17:23:25',0,'Submitted',0,NULL,'999999','2023-09-06 17:23:25',NULL,NULL,NULL,NULL),(16,3,'2023-09-06 17:23:47',2,'Approved',0,NULL,'999999','2023-09-06 17:23:47',NULL,NULL,NULL,NULL),(17,4,'2023-09-07 13:01:02',-1,'draft',1,'d','999999','2023-09-07 13:01:02',NULL,NULL,NULL,NULL),(18,4,'2023-09-07 13:02:56',0,'Submitted',1,'d','999999','2023-09-07 13:02:56',NULL,NULL,NULL,NULL),(19,4,'2023-09-07 13:03:44',2,'Approved',1,'d','999999','2023-09-07 13:03:44',NULL,NULL,NULL,NULL),(20,5,'2023-09-07 13:47:00',-1,'draft',0,NULL,'999999','2023-09-07 13:47:00',NULL,NULL,NULL,NULL),(21,5,'2023-09-07 15:52:54',0,'Submitted',0,NULL,'999999','2023-09-07 15:52:54',NULL,NULL,NULL,NULL),(22,5,'2023-09-07 15:53:44',2,'Approved',0,NULL,'999999','2023-09-07 15:53:44',NULL,NULL,NULL,NULL),(23,6,'2023-09-07 17:02:56',-1,'draft',0,NULL,'999999','2023-09-07 17:02:56',NULL,NULL,NULL,NULL),(24,6,'2023-09-07 17:03:30',0,'Submitted',0,NULL,'999999','2023-09-07 17:03:30',NULL,NULL,NULL,NULL),(25,6,'2023-09-07 17:04:37',-1,'Draft',0,NULL,'999999','2023-09-07 17:04:37',NULL,NULL,NULL,NULL),(26,6,'2023-09-07 17:04:51',0,'Submitted',0,NULL,'999999','2023-09-07 17:04:51',NULL,NULL,NULL,NULL),(27,6,'2023-09-07 17:05:20',2,'Approved',0,NULL,'999999','2023-09-07 17:05:20',NULL,NULL,NULL,NULL),(28,1,'2023-09-08 16:38:30',-1,'draft',1,'gajadi','999999','2023-09-08 16:38:30',NULL,NULL,NULL,NULL),(29,1,'2023-09-08 16:42:03',0,'Submitted',1,'gajadi','999999','2023-09-08 16:42:03',NULL,NULL,NULL,NULL),(30,1,'2023-09-08 16:42:41',-1,'Draft',1,'gajadi','999999','2023-09-08 16:42:41',NULL,NULL,NULL,NULL),(31,1,'2023-09-08 16:42:51',0,'Submitted',1,'gajadi','999999','2023-09-08 16:42:51',NULL,NULL,NULL,NULL),(32,1,'2023-09-08 16:43:09',2,'Approved',1,'gajadi','999999','2023-09-08 16:43:09',NULL,NULL,NULL,NULL),(33,2,'2023-09-08 22:49:12',-1,'draft',1,'d','999999','2023-09-08 22:49:12',NULL,NULL,NULL,NULL),(34,2,'2023-09-08 22:49:33',0,'Submitted',1,'d','999999','2023-09-08 22:49:33',NULL,NULL,NULL,NULL),(35,2,'2023-09-08 23:09:28',2,'Approved',1,'d','999999','2023-09-08 23:09:28',NULL,NULL,NULL,NULL),(36,3,'2023-09-11 12:28:47',-1,'draft',0,NULL,'999999','2023-09-11 12:28:47',NULL,NULL,NULL,NULL),(37,3,'2023-09-11 12:30:12',0,'Submitted',0,NULL,'999999','2023-09-11 12:30:12',NULL,NULL,NULL,NULL),(38,3,'2023-09-11 12:32:10',2,'Approved',0,NULL,'999999','2023-09-11 12:32:10',NULL,NULL,NULL,NULL),(39,4,'2023-09-11 12:51:48',-1,'draft',1,'d','999999','2023-09-11 12:51:48',NULL,NULL,NULL,NULL),(40,5,'2023-09-11 12:52:50',-1,'draft',0,NULL,'999999','2023-09-11 12:52:50',NULL,NULL,NULL,NULL),(41,5,'2023-09-11 12:54:25',0,'Submitted',0,NULL,'999999','2023-09-11 12:54:25',NULL,NULL,NULL,NULL),(42,5,'2023-09-11 12:54:45',-1,'Draft',0,NULL,'999999','2023-09-11 12:54:45',NULL,NULL,NULL,NULL),(43,5,'2023-09-11 12:55:01',0,'Submitted',0,NULL,'999999','2023-09-11 12:55:01',NULL,NULL,NULL,NULL),(44,5,'2023-09-11 12:55:21',2,'Approved',0,NULL,'999999','2023-09-11 12:55:21',NULL,NULL,NULL,NULL),(45,6,'2023-09-11 13:03:14',-1,'draft',0,NULL,'999999','2023-09-11 13:03:14',NULL,NULL,NULL,NULL),(46,6,'2023-09-11 13:03:37',0,'Submitted',0,NULL,'999999','2023-09-11 13:03:37',NULL,NULL,NULL,NULL),(47,6,'2023-09-11 13:04:07',2,'Approved',0,NULL,'999999','2023-09-11 13:04:07',NULL,NULL,NULL,NULL),(48,7,'2023-09-11 13:14:10',-1,'draft',0,NULL,'999999','2023-09-11 13:14:10',NULL,NULL,NULL,NULL),(49,7,'2023-09-11 13:14:26',0,'Submitted',0,NULL,'999999','2023-09-11 13:14:26',NULL,NULL,NULL,NULL),(50,7,'2023-09-11 13:14:48',2,'Approved',0,NULL,'999999','2023-09-11 13:14:48',NULL,NULL,NULL,NULL),(51,8,'2023-09-11 13:15:18',-1,'draft',1,'tes','999999','2023-09-11 13:15:18',NULL,NULL,NULL,NULL),(52,8,'2023-09-11 13:16:15',0,'Submitted',1,'tes','999999','2023-09-11 13:16:15',NULL,NULL,NULL,NULL),(53,8,'2023-09-11 13:16:40',2,'Approved',1,'tes','999999','2023-09-11 13:16:40',NULL,NULL,NULL,NULL),(54,9,'2023-09-11 13:36:24',-1,'draft',1,'tes','999999','2023-09-11 13:36:24',NULL,NULL,NULL,NULL),(55,9,'2023-09-11 13:36:31',0,'Submitted',1,'tes','999999','2023-09-11 13:36:31',NULL,NULL,NULL,NULL),(56,9,'2023-09-11 13:36:52',2,'Approved',1,'tes','999999','2023-09-11 13:36:52',NULL,NULL,NULL,NULL),(57,10,'2023-09-11 17:30:14',-1,'draft',1,'tes','999999','2023-09-11 17:30:14',NULL,NULL,NULL,NULL),(58,10,'2023-09-11 17:30:57',0,'Submitted',1,'tes','999999','2023-09-11 17:30:57',NULL,NULL,NULL,NULL),(59,10,'2023-09-11 17:31:22',-1,'Draft',1,'tes','999999','2023-09-11 17:31:22',NULL,NULL,NULL,NULL),(60,10,'2023-09-11 17:31:36',0,'Submitted',1,'tes','999999','2023-09-11 17:31:36',NULL,NULL,NULL,NULL),(61,10,'2023-09-11 17:32:02',2,'Approved',1,'tes','999999','2023-09-11 17:32:02',NULL,NULL,NULL,NULL),(62,11,'2023-09-12 00:57:22',-1,'draft',1,'868','999999','2023-09-12 00:57:22',NULL,NULL,NULL,NULL),(63,11,'2023-09-12 12:43:58',0,'Submitted',1,'868','999999','2023-09-12 12:43:58',NULL,NULL,NULL,NULL),(64,11,'2023-09-12 12:44:47',2,'Approved',1,'868','999999','2023-09-12 12:44:47',NULL,NULL,NULL,NULL),(65,1,'2023-09-12 13:30:34',-1,'draft',1,'gajadi','999999','2023-09-12 13:30:34',NULL,NULL,NULL,NULL),(66,1,'2023-09-12 13:30:58',0,'Submitted',1,'gajadi','999999','2023-09-12 13:30:58',NULL,NULL,NULL,NULL),(67,1,'2023-09-12 13:32:28',2,'Approved',1,'gajadi','999999','2023-09-12 13:32:28',NULL,NULL,NULL,NULL),(68,2,'2023-09-12 16:41:52',-1,'draft',1,'d','999999','2023-09-12 16:41:52',NULL,NULL,NULL,NULL),(69,2,'2023-09-12 16:43:02',0,'Submitted',1,'d','999999','2023-09-12 16:43:02',NULL,NULL,NULL,NULL),(70,2,'2023-09-12 16:43:30',-1,'Draft',1,'d','999999','2023-09-12 16:43:30',NULL,NULL,NULL,NULL),(71,2,'2023-09-12 16:44:33',0,'Submitted',1,'d','999999','2023-09-12 16:44:33',NULL,NULL,NULL,NULL),(72,2,'2023-09-12 16:44:56',-1,'Draft',1,'d','999999','2023-09-12 16:44:56',NULL,NULL,NULL,NULL),(73,2,'2023-09-12 16:46:26',0,'Submitted',1,'d','999999','2023-09-12 16:46:26',NULL,NULL,NULL,NULL),(74,2,'2023-09-12 16:48:13',2,'Approved',1,'d','999999','2023-09-12 16:48:13',NULL,NULL,NULL,NULL),(75,3,'2023-09-13 13:04:12',-1,'draft',0,NULL,'999999','2023-09-13 13:04:12',NULL,NULL,NULL,NULL),(76,3,'2023-09-13 13:06:46',0,'Submitted',0,NULL,'999999','2023-09-13 13:06:46',NULL,NULL,NULL,NULL),(77,3,'2023-09-13 13:07:13',2,'Approved',0,NULL,'999999','2023-09-13 13:07:13',NULL,NULL,NULL,NULL),(78,4,'2023-09-13 13:27:24',-1,'draft',0,NULL,'999999','2023-09-13 13:27:24',NULL,NULL,NULL,NULL),(79,4,'2023-09-13 13:28:00',0,'Submitted',0,NULL,'999999','2023-09-13 13:28:00',NULL,NULL,NULL,NULL),(80,4,'2023-09-13 13:29:58',2,'Approved',0,NULL,'999999','2023-09-13 13:29:58',NULL,NULL,NULL,NULL),(81,5,'2023-09-13 13:43:33',-1,'draft',0,NULL,'999999','2023-09-13 13:43:33',NULL,NULL,NULL,NULL),(82,5,'2023-09-13 13:43:59',0,'Submitted',0,NULL,'999999','2023-09-13 13:43:59',NULL,NULL,NULL,NULL),(83,5,'2023-09-13 13:44:19',2,'Approved',0,NULL,'999999','2023-09-13 13:44:19',NULL,NULL,NULL,NULL),(84,6,'2023-09-14 13:18:13',-1,'draft',0,NULL,'999999','2023-09-14 13:18:13',NULL,NULL,NULL,NULL),(85,6,'2023-09-14 13:20:08',0,'Submitted',0,NULL,'999999','2023-09-14 13:20:08',NULL,NULL,NULL,NULL),(86,6,'2023-09-14 13:23:33',2,'Approved',0,NULL,'999999','2023-09-14 13:23:33',NULL,NULL,NULL,NULL),(87,7,'2023-09-14 17:48:59',-1,'draft',0,NULL,'999999','2023-09-14 17:48:59',NULL,NULL,NULL,NULL),(88,7,'2023-09-14 17:49:08',0,'Submitted',0,NULL,'999999','2023-09-14 17:49:08',NULL,NULL,NULL,NULL),(89,7,'2023-09-14 17:49:39',2,'Approved',0,NULL,'999999','2023-09-14 17:49:39',NULL,NULL,NULL,NULL),(90,8,'2023-09-14 18:27:11',-1,'draft',1,'tes','999999','2023-09-14 18:27:11',NULL,NULL,NULL,NULL),(91,8,'2023-09-14 18:27:52',0,'Submitted',1,'tes','999999','2023-09-14 18:27:52',NULL,NULL,NULL,NULL),(92,8,'2023-09-14 18:28:32',2,'Approved',1,'tes','999999','2023-09-14 18:28:32',NULL,NULL,NULL,NULL),(93,9,'2023-09-18 12:46:00',-1,'draft',1,'tes','999999','2023-09-18 12:46:00',NULL,NULL,NULL,NULL),(94,9,'2023-09-18 12:50:14',0,'Submitted',1,'tes','999999','2023-09-18 12:50:14',NULL,NULL,NULL,NULL),(95,9,'2023-09-18 12:50:42',-1,'Draft',1,'tes','999999','2023-09-18 12:50:42',NULL,NULL,NULL,NULL),(96,9,'2023-09-18 12:50:55',0,'Submitted',1,'tes','999999','2023-09-18 12:50:55',NULL,NULL,NULL,NULL),(97,9,'2023-09-18 12:51:25',2,'Approved',1,'tes','999999','2023-09-18 12:51:25',NULL,NULL,NULL,NULL),(98,10,'2023-09-19 11:01:46',-1,'draft',1,'tes','999999','2023-09-19 11:01:46',NULL,NULL,NULL,NULL),(99,10,'2023-09-19 11:03:49',0,'Submitted',1,'tes','999999','2023-09-19 11:03:49',NULL,NULL,NULL,NULL),(100,10,'2023-09-19 11:04:46',2,'Approved',1,'tes','999999','2023-09-19 11:04:46',NULL,NULL,NULL,NULL),(101,11,'2023-09-19 16:09:42',-1,'draft',1,'868','999999','2023-09-19 16:09:42',NULL,NULL,NULL,NULL),(102,12,'2023-09-19 16:23:47',-1,'draft',1,'jlk','999999','2023-09-19 16:23:47',NULL,NULL,NULL,NULL),(103,13,'2023-09-19 16:52:33',-1,'draft',0,NULL,'999999','2023-09-19 16:52:33',NULL,NULL,NULL,NULL),(104,13,'2023-09-19 17:18:27',0,'Submitted',0,NULL,'999999','2023-09-19 17:18:27',NULL,NULL,NULL,NULL),(105,13,'2023-09-19 17:19:09',2,'Approved',0,NULL,'999999','2023-09-19 17:19:09',NULL,NULL,NULL,NULL),(106,14,'2023-09-22 12:41:34',-1,'draft',0,NULL,'999999','2023-09-22 12:41:34',NULL,NULL,NULL,NULL),(107,14,'2023-09-22 12:47:40',0,'Submitted',0,NULL,'999999','2023-09-22 12:47:40',NULL,NULL,NULL,NULL),(108,14,'2023-09-22 12:52:25',2,'Approved',0,NULL,'999999','2023-09-22 12:52:25',NULL,NULL,NULL,NULL),(109,15,'2023-09-22 13:02:40',-1,'draft',1,'d','999999','2023-09-22 13:02:40',NULL,NULL,NULL,NULL),(110,16,'2023-09-22 16:23:55',-1,'draft',1,'d','999999','2023-09-22 16:23:55',NULL,NULL,NULL,NULL),(111,16,'2023-09-22 16:25:52',0,'Submitted',1,'d','999999','2023-09-22 16:25:52',NULL,NULL,NULL,NULL),(112,16,'2023-09-22 16:26:44',-1,'Draft',1,'d','999999','2023-09-22 16:26:44',NULL,NULL,NULL,NULL),(113,16,'2023-09-22 16:27:10',0,'Submitted',1,'d','999999','2023-09-22 16:27:10',NULL,NULL,NULL,NULL),(114,16,'2023-09-22 16:27:30',-1,'Draft',1,'d','999999','2023-09-22 16:27:30',NULL,NULL,NULL,NULL),(115,16,'2023-09-22 16:28:23',0,'Submitted',1,'d','999999','2023-09-22 16:28:23',NULL,NULL,NULL,NULL),(116,16,'2023-09-22 16:28:42',-1,'Draft',1,'d','999999','2023-09-22 16:28:42',NULL,NULL,NULL,NULL),(117,17,'2023-09-22 16:30:52',-1,'draft',0,NULL,'999999','2023-09-22 16:30:52',NULL,NULL,NULL,NULL),(118,17,'2023-09-22 16:32:47',0,'Submitted',0,NULL,'999999','2023-09-22 16:32:47',NULL,NULL,NULL,NULL),(119,17,'2023-09-22 16:40:00',2,'Approved',0,NULL,'999999','2023-09-22 16:40:00',NULL,NULL,NULL,NULL),(120,18,'2023-09-22 16:47:44',-1,'draft',0,NULL,'999999','2023-09-22 16:47:44',NULL,NULL,NULL,NULL),(121,18,'2023-09-22 16:49:27',0,'Submitted',0,NULL,'999999','2023-09-22 16:49:27',NULL,NULL,NULL,NULL),(122,18,'2023-09-22 17:14:45',-1,'Draft',0,NULL,'999999','2023-09-22 17:14:45',NULL,NULL,NULL,NULL),(123,18,'2023-09-22 17:15:31',0,'Submitted',0,NULL,'999999','2023-09-22 17:15:31',NULL,NULL,NULL,NULL),(124,18,'2023-09-22 17:18:30',2,'Approved',0,NULL,'999999','2023-09-22 17:18:30',NULL,NULL,NULL,NULL),(125,19,'2023-09-23 21:58:00',-1,'draft',0,NULL,'999999','2023-09-23 21:58:00',NULL,NULL,NULL,NULL),(126,19,'2023-09-23 21:58:13',0,'Submitted',0,NULL,'999999','2023-09-23 21:58:13',NULL,NULL,NULL,NULL),(127,19,'2023-09-23 22:00:04',2,'Approved',0,NULL,'999999','2023-09-23 22:00:04',NULL,NULL,NULL,NULL),(128,20,'2023-09-25 12:45:27',-1,'draft',0,NULL,'999999','2023-09-25 12:45:27',NULL,NULL,NULL,NULL),(129,20,'2023-09-25 12:48:38',0,'Submitted',0,NULL,'999999','2023-09-25 12:48:38',NULL,NULL,NULL,NULL),(130,20,'2023-09-25 12:49:58',2,'Approved',0,NULL,'999999','2023-09-25 12:49:58',NULL,NULL,NULL,NULL),(131,1,'2023-09-27 13:52:13',-1,'draft',1,'gajadi','999999','2023-09-27 13:52:13',NULL,NULL,NULL,NULL),(132,1,'2023-09-27 13:56:33',0,'Submitted',1,'gajadi','999999','2023-09-27 13:56:33',NULL,NULL,NULL,NULL),(133,1,'2023-09-27 13:56:59',2,'Approved',1,'gajadi','999999','2023-09-27 13:56:59',NULL,NULL,NULL,NULL),(134,2,'2023-09-27 14:40:41',-1,'draft',1,'d','999999','2023-09-27 14:40:41',NULL,NULL,NULL,NULL),(135,2,'2023-09-27 14:40:55',0,'Submitted',1,'d','999999','2023-09-27 14:40:55',NULL,NULL,NULL,NULL),(136,2,'2023-09-27 14:41:19',2,'Approved',1,'d','999999','2023-09-27 14:41:19',NULL,NULL,NULL,NULL),(137,3,'2023-09-27 17:58:50',-1,'draft',0,NULL,'999999','2023-09-27 17:58:50',NULL,NULL,NULL,NULL),(138,3,'2023-09-27 18:08:47',0,'Submitted',0,NULL,'999999','2023-09-27 18:08:47',NULL,NULL,NULL,NULL),(139,3,'2023-09-27 18:10:08',2,'Approved',0,NULL,'999999','2023-09-27 18:10:08',NULL,NULL,NULL,NULL),(140,4,'2023-09-28 12:23:32',-1,'draft',0,NULL,'999999','2023-09-28 12:23:32',NULL,NULL,NULL,NULL),(141,4,'2023-09-28 12:23:40',0,'Submitted',0,NULL,'999999','2023-09-28 12:23:40',NULL,NULL,NULL,NULL),(142,4,'2023-09-28 12:24:13',2,'Approved',0,NULL,'999999','2023-09-28 12:24:13',NULL,NULL,NULL,NULL),(143,1,'2023-09-29 12:48:55',-1,'draft',1,'gajadi','999999','2023-09-29 12:48:55',NULL,NULL,NULL,NULL),(144,1,'2023-09-29 12:49:57',0,'Submitted',1,'gajadi','999999','2023-09-29 12:49:57',NULL,NULL,NULL,NULL),(145,1,'2023-09-29 12:51:14',-1,'Draft',1,'gajadi','999999','2023-09-29 12:51:14',NULL,NULL,NULL,NULL),(146,1,'2023-09-29 12:53:24',0,'Submitted',1,'gajadi','999999','2023-09-29 12:53:24',NULL,NULL,NULL,NULL),(147,1,'2023-09-29 12:53:56',2,'Approved',1,'gajadi','999999','2023-09-29 12:53:56',NULL,NULL,NULL,NULL),(148,2,'2023-09-29 13:56:32',-1,'draft',1,'d','999999','2023-09-29 13:56:32',NULL,NULL,NULL,NULL),(149,2,'2023-09-29 14:04:12',0,'Submitted',1,'d','999999','2023-09-29 14:04:12',NULL,NULL,NULL,NULL),(150,2,'2023-09-29 14:09:47',2,'Approved',1,'d','999999','2023-09-29 14:09:47',NULL,NULL,NULL,NULL),(151,1,'2023-09-29 16:57:39',-1,'draft',1,'gajadi','999999','2023-09-29 16:57:39',NULL,NULL,NULL,NULL),(152,1,'2023-09-29 17:03:13',0,'Submitted',1,'gajadi','999999','2023-09-29 17:03:13',NULL,NULL,NULL,NULL),(153,1,'2023-09-29 17:04:33',2,'Approved',1,'gajadi','999999','2023-09-29 17:04:33',NULL,NULL,NULL,NULL),(154,2,'2023-10-02 13:02:23',-1,'draft',1,'d','999999','2023-10-02 13:02:23',NULL,NULL,NULL,NULL),(155,3,'2023-10-02 13:04:24',-1,'draft',0,NULL,'999999','2023-10-02 13:04:24',NULL,NULL,NULL,NULL),(156,3,'2023-10-02 13:04:57',0,'Submitted',0,NULL,'999999','2023-10-02 13:04:57',NULL,NULL,NULL,NULL),(157,3,'2023-10-02 13:07:55',2,'Approved',0,NULL,'999999','2023-10-02 13:07:55',NULL,NULL,NULL,NULL),(158,4,'2023-10-02 13:29:46',-1,'draft',0,NULL,'999999','2023-10-02 13:29:46',NULL,NULL,NULL,NULL),(159,4,'2023-10-02 13:30:00',0,'Submitted',0,NULL,'999999','2023-10-02 13:30:00',NULL,NULL,NULL,NULL),(160,1,'2023-10-03 16:28:52',-1,'draft',1,'gajadi','999999','2023-10-03 16:28:52',NULL,NULL,NULL,NULL),(161,1,'2023-10-03 16:29:46',0,'Submitted',1,'gajadi','999999','2023-10-03 16:29:46',NULL,NULL,NULL,NULL),(162,1,'2023-10-03 16:30:25',2,'Approved',1,'gajadi','999999','2023-10-03 16:30:25',NULL,NULL,NULL,NULL),(163,2,'2023-10-03 17:12:57',-1,'draft',0,NULL,'999999','2023-10-03 17:12:57',NULL,NULL,NULL,NULL),(164,2,'2023-10-03 17:13:19',0,'Submitted',0,NULL,'999999','2023-10-03 17:13:19',NULL,NULL,NULL,NULL),(165,2,'2023-10-03 17:13:49',2,'Approved',0,NULL,'999999','2023-10-03 17:13:49',NULL,NULL,NULL,NULL),(166,3,'2023-10-03 17:34:10',-1,'draft',0,NULL,'999999','2023-10-03 17:34:10',NULL,NULL,NULL,NULL),(167,3,'2023-10-03 17:34:17',0,'Submitted',0,NULL,'999999','2023-10-03 17:34:17',NULL,NULL,NULL,NULL),(168,3,'2023-10-03 17:34:39',2,'Approved',0,NULL,'999999','2023-10-03 17:34:39',NULL,NULL,NULL,NULL),(169,4,'2023-10-03 17:59:47',-1,'draft',0,NULL,'999999','2023-10-03 17:59:47',NULL,NULL,NULL,NULL),(170,4,'2023-10-03 17:59:55',0,'Submitted',0,NULL,'999999','2023-10-03 17:59:55',NULL,NULL,NULL,NULL),(171,4,'2023-10-03 18:01:38',2,'Approved',0,NULL,'999999','2023-10-03 18:01:38',NULL,NULL,NULL,NULL),(172,5,'2023-10-09 12:43:00',-1,'draft',0,NULL,'999999','2023-10-09 12:43:00',NULL,NULL,NULL,NULL),(173,5,'2023-10-09 12:46:06',0,'Submitted',0,NULL,'999999','2023-10-09 12:46:06',NULL,NULL,NULL,NULL),(174,5,'2023-10-09 12:46:30',2,'Approved',0,NULL,'999999','2023-10-09 12:46:30',NULL,NULL,NULL,NULL),(175,6,'2023-10-23 16:53:54',-1,'draft',0,NULL,'999999','2023-10-23 16:53:54',NULL,NULL,NULL,NULL),(176,6,'2023-10-23 16:54:02',0,'Submitted',0,NULL,'999999','2023-10-23 16:54:02',NULL,NULL,NULL,NULL),(177,6,'2023-10-23 16:54:25',2,'Approved',0,NULL,'999999','2023-10-23 16:54:25',NULL,NULL,NULL,NULL),(178,7,'2023-11-06 13:17:21',-1,'draft',0,NULL,'999999','2023-11-06 13:17:21',NULL,NULL,NULL,NULL),(179,8,'2023-11-06 13:38:14',-1,'draft',1,'tes','999999','2023-11-06 13:38:14',NULL,NULL,NULL,NULL),(180,9,'2023-11-06 14:43:47',-1,'draft',1,'tes','999999','2023-11-06 14:43:47',NULL,NULL,NULL,NULL),(181,10,'2023-11-06 14:49:22',-1,'draft',1,'tes','999999','2023-11-06 14:49:22',NULL,NULL,NULL,NULL),(182,11,'2023-11-06 17:49:08',-1,'draft',0,NULL,'999999','2023-11-06 17:49:08',NULL,NULL,NULL,NULL),(183,11,'2023-11-06 17:57:02',0,'Submitted',0,NULL,'999999','2023-11-06 17:57:02',NULL,NULL,NULL,NULL),(184,7,'2023-11-06 17:58:50',0,'Submitted',0,NULL,'999999','2023-11-06 17:58:50',NULL,NULL,NULL,NULL),(185,7,'2023-11-06 18:00:25',-1,'Draft',0,NULL,'999999','2023-11-06 18:00:25',NULL,NULL,NULL,NULL),(186,7,'2023-11-06 18:04:24',0,'Submitted',0,NULL,'999999','2023-11-06 18:04:24',NULL,NULL,NULL,NULL),(187,7,'2023-11-06 18:09:38',2,'Approved',0,NULL,'999999','2023-11-06 18:09:38',NULL,NULL,NULL,NULL),(188,12,'2023-11-07 12:34:04',-1,'draft',0,NULL,'999999','2023-11-07 12:34:04',NULL,NULL,NULL,NULL),(189,12,'2023-11-07 12:37:15',0,'Submitted',0,NULL,'999999','2023-11-07 12:37:15',NULL,NULL,NULL,NULL),(190,12,'2023-11-07 12:37:45',2,'Approved',0,NULL,'999999','2023-11-07 12:37:45',NULL,NULL,NULL,NULL),(191,13,'2023-11-08 12:33:16',-1,'draft',0,NULL,'999999','2023-11-08 12:33:16',NULL,NULL,NULL,NULL),(192,13,'2023-11-08 12:33:58',0,'Submitted',0,NULL,'999999','2023-11-08 12:33:58',NULL,NULL,NULL,NULL),(193,13,'2023-11-08 12:34:29',2,'Approved',0,NULL,'999999','2023-11-08 12:34:29',NULL,NULL,NULL,NULL),(194,14,'2023-11-09 14:31:46',-1,'draft',0,NULL,'999999','2023-11-09 14:31:46',NULL,NULL,NULL,NULL),(195,14,'2023-11-09 14:40:54',0,'Submitted',0,NULL,'999999','2023-11-09 14:40:54',NULL,NULL,NULL,NULL),(196,14,'2023-11-09 14:41:53',2,'Approved',0,NULL,'999999','2023-11-09 14:41:53',NULL,NULL,NULL,NULL),(197,15,'2024-01-06 23:13:08',-1,'draft',0,NULL,'999999','2024-01-06 23:13:08',NULL,NULL,NULL,NULL),(198,15,'2024-01-06 23:14:06',0,'Submitted',0,NULL,'999999','2024-01-06 23:14:06',NULL,NULL,NULL,NULL),(199,15,'2024-01-06 23:17:07',-1,'Draft',0,NULL,'999999','2024-01-06 23:17:07',NULL,NULL,NULL,NULL),(200,15,'2024-01-06 23:17:22',0,'Submitted',0,NULL,'999999','2024-01-06 23:17:22',NULL,NULL,NULL,NULL),(201,15,'2024-01-06 23:18:52',2,'Approved',0,NULL,'999999','2024-01-06 23:18:52',NULL,NULL,NULL,NULL),(202,11,'2024-01-12 15:35:47',2,'Approved',0,NULL,'999999','2024-01-12 15:35:47',NULL,NULL,NULL,NULL),(203,16,'2024-01-14 13:37:57',-1,'draft',0,NULL,'999999','2024-01-14 13:37:57',NULL,NULL,NULL,NULL),(204,16,'2024-01-14 14:36:12',0,'Submitted',0,NULL,'999999','2024-01-14 14:36:12',NULL,NULL,NULL,NULL),(205,16,'2024-01-14 14:41:04',2,'Approved',0,NULL,'999999','2024-01-14 14:41:04',NULL,NULL,NULL,NULL),(206,17,'2024-01-17 11:43:27',-1,'draft',0,NULL,'999999','2024-01-17 11:43:27',NULL,NULL,NULL,NULL),(207,17,'2024-01-17 11:45:04',0,'Submitted',0,NULL,'999999','2024-01-17 11:45:04',NULL,NULL,NULL,NULL),(208,17,'2024-01-17 11:47:27',-1,'Draft',0,NULL,'999999','2024-01-17 11:47:27',NULL,NULL,NULL,NULL),(209,17,'2024-01-17 11:48:31',0,'Submitted',0,NULL,'999999','2024-01-17 11:48:31',NULL,NULL,NULL,NULL),(210,17,'2024-01-17 11:49:43',2,'Approved',0,NULL,'999999','2024-01-17 11:49:43',NULL,NULL,NULL,NULL),(211,18,'2024-01-22 13:34:44',-1,'draft',0,NULL,'999999','2024-01-22 13:34:44',NULL,NULL,NULL,NULL),(212,18,'2024-01-22 13:34:56',0,'Submitted',0,NULL,'999999','2024-01-22 13:34:56',NULL,NULL,NULL,NULL),(213,18,'2024-01-22 13:36:15',-1,'Draft',0,NULL,'999999','2024-01-22 13:36:15',NULL,NULL,NULL,NULL),(214,18,'2024-01-22 13:37:14',0,'Submitted',0,NULL,'999999','2024-01-22 13:37:14',NULL,NULL,NULL,NULL),(215,18,'2024-01-22 13:42:56',-1,'Draft',0,NULL,'999999','2024-01-22 13:42:56',NULL,NULL,NULL,NULL),(216,18,'2024-01-22 13:43:31',0,'Submitted',0,NULL,'999999','2024-01-22 13:43:31',NULL,NULL,NULL,NULL),(217,18,'2024-01-22 13:48:45',-1,'Draft',0,NULL,'999999','2024-01-22 13:48:45',NULL,NULL,NULL,NULL),(218,18,'2024-01-22 13:49:48',0,'Submitted',0,NULL,'999999','2024-01-22 13:49:48',NULL,NULL,NULL,NULL),(219,18,'2024-01-22 13:50:10',2,'Approved',0,NULL,'999999','2024-01-22 13:50:10',NULL,NULL,NULL,NULL),(220,19,'2024-01-24 16:50:54',-1,'draft',0,NULL,'999999','2024-01-24 16:50:54',NULL,NULL,NULL,NULL),(221,19,'2024-01-24 16:51:06',0,'Submitted',0,NULL,'999999','2024-01-24 16:51:06',NULL,NULL,NULL,NULL),(222,19,'2024-01-24 16:51:45',-1,'Draft',0,NULL,'999999','2024-01-24 16:51:45',NULL,NULL,NULL,NULL),(223,19,'2024-01-24 16:52:19',0,'Submitted',0,NULL,'999999','2024-01-24 16:52:19',NULL,NULL,NULL,NULL),(224,19,'2024-01-24 16:52:49',2,'Approved',0,NULL,'999999','2024-01-24 16:52:49',NULL,NULL,NULL,NULL),(225,20,'2024-02-10 02:56:28',-1,'draft',0,NULL,'999999','2024-02-10 02:56:28',NULL,NULL,NULL,NULL),(226,20,'2024-02-10 02:58:24',0,'Submitted',0,NULL,'999999','2024-02-10 02:58:24',NULL,NULL,NULL,NULL),(227,20,'2024-02-10 02:59:04',-1,'Draft',0,NULL,'999999','2024-02-10 02:59:04',NULL,NULL,NULL,NULL),(228,20,'2024-02-10 02:59:38',0,'Submitted',0,NULL,'999999','2024-02-10 02:59:38',NULL,NULL,NULL,NULL),(229,20,'2024-02-10 03:00:09',2,'Approved',0,NULL,'999999','2024-02-10 03:00:09',NULL,NULL,NULL,NULL),(230,21,'2024-02-20 02:16:46',-1,'draft',0,NULL,'999999','2024-02-20 02:16:46',NULL,NULL,NULL,NULL),(231,21,'2024-02-20 02:19:56',0,'Submitted',0,NULL,'999999','2024-02-20 02:19:56',NULL,NULL,NULL,NULL),(232,21,'2024-02-23 14:13:18',-1,'Draft',0,NULL,'999999','2024-02-23 14:13:18',NULL,NULL,NULL,NULL),(233,21,'2024-02-23 17:04:12',0,'Submitted',0,NULL,'999999','2024-02-23 17:04:12',NULL,NULL,NULL,NULL),(234,21,'2024-02-23 17:04:52',-1,'Draft',0,NULL,'999999','2024-02-23 17:04:52',NULL,NULL,NULL,NULL),(235,21,'2024-02-23 17:05:42',0,'Submitted',0,NULL,'999999','2024-02-23 17:05:42',NULL,NULL,NULL,NULL),(236,21,'2024-02-23 17:15:32',-1,'Draft',0,NULL,'999999','2024-02-23 17:15:32',NULL,NULL,NULL,NULL),(237,21,'2024-02-23 17:15:51',0,'Submitted',0,NULL,'999999','2024-02-23 17:15:51',NULL,NULL,NULL,NULL),(238,21,'2024-02-23 17:16:29',2,'Approved',0,NULL,'999999','2024-02-23 17:16:29',NULL,NULL,NULL,NULL),(239,22,'2024-02-28 10:29:31',-1,'draft',0,NULL,'999999','2024-02-28 10:29:31',NULL,NULL,NULL,NULL),(240,22,'2024-02-28 10:30:00',0,'Submitted',0,NULL,'999999','2024-02-28 10:30:00',NULL,NULL,NULL,NULL),(241,22,'2024-02-28 10:31:05',-1,'Draft',0,NULL,'999999','2024-02-28 10:31:05',NULL,NULL,NULL,NULL),(242,22,'2024-02-28 10:33:38',0,'Submitted',0,NULL,'999999','2024-02-28 10:33:38',NULL,NULL,NULL,NULL),(243,22,'2024-02-28 10:34:36',2,'Approved',0,NULL,'999999','2024-02-28 10:34:36',NULL,NULL,NULL,NULL),(244,23,'2024-02-28 15:22:31',-1,'draft',0,NULL,'999999','2024-02-28 15:22:31',NULL,NULL,NULL,NULL),(245,23,'2024-02-28 15:22:48',0,'Submitted',0,NULL,'999999','2024-02-28 15:22:48',NULL,NULL,NULL,NULL),(246,23,'2024-02-28 15:29:41',-1,'Draft',0,NULL,'999999','2024-02-28 15:29:41',NULL,NULL,NULL,NULL),(247,23,'2024-02-28 15:32:41',0,'Submitted',0,NULL,'999999','2024-02-28 15:32:41',NULL,NULL,NULL,NULL),(248,23,'2024-02-28 15:33:50',2,'Approved',0,NULL,'999999','2024-02-28 15:33:50',NULL,NULL,NULL,NULL),(249,24,'2024-04-09 18:25:31',-1,'draft',1,'tes','999999','2024-04-09 18:25:31',NULL,NULL,NULL,NULL),(250,25,'2024-04-09 18:27:29',-1,'draft',1,'cancel','999999','2024-04-09 18:27:29',NULL,NULL,NULL,NULL),(251,26,'2024-04-09 19:32:13',-1,'draft',0,NULL,'999999','2024-04-09 19:32:13',NULL,NULL,NULL,NULL),(252,26,'2024-04-09 19:44:47',0,'Submitted',0,NULL,'999999','2024-04-09 19:44:47',NULL,NULL,NULL,NULL),(253,26,'2024-04-09 19:45:38',-1,'Draft',0,NULL,'999999','2024-04-09 19:45:38',NULL,NULL,NULL,NULL),(254,26,'2024-04-09 19:48:57',0,'Submitted',0,NULL,'999999','2024-04-09 19:48:57',NULL,NULL,NULL,NULL),(255,26,'2024-04-09 19:49:28',-1,'Draft',0,NULL,'999999','2024-04-09 19:49:28',NULL,NULL,NULL,NULL),(256,26,'2024-04-09 19:50:06',0,'Submitted',0,NULL,'999999','2024-04-09 19:50:06',NULL,NULL,NULL,NULL),(257,27,'2024-04-09 20:27:58',-1,'draft',0,NULL,'999999','2024-04-09 20:27:58',NULL,NULL,NULL,NULL),(258,27,'2024-04-09 20:30:03',0,'Submitted',0,NULL,'999999','2024-04-09 20:30:03',NULL,NULL,NULL,NULL),(259,27,'2024-04-09 20:30:22',-1,'Draft',0,NULL,'999999','2024-04-09 20:30:22',NULL,NULL,NULL,NULL),(260,27,'2024-04-09 20:30:52',0,'Submitted',0,NULL,'999999','2024-04-09 20:30:52',NULL,NULL,NULL,NULL),(261,27,'2024-04-09 20:31:06',-1,'Draft',0,NULL,'999999','2024-04-09 20:31:06',NULL,NULL,NULL,NULL),(262,27,'2024-04-09 20:31:38',0,'Submitted',0,NULL,'999999','2024-04-09 20:31:38',NULL,NULL,NULL,NULL),(263,27,'2024-04-09 20:31:50',-1,'Draft',0,NULL,'999999','2024-04-09 20:31:50',NULL,NULL,NULL,NULL),(264,27,'2024-04-09 20:33:26',0,'Submitted',0,NULL,'999999','2024-04-09 20:33:26',NULL,NULL,NULL,NULL),(265,27,'2024-04-09 20:35:34',-1,'Draft',0,NULL,'999999','2024-04-09 20:35:34',NULL,NULL,NULL,NULL),(266,27,'2024-04-09 20:36:08',0,'Submitted',0,NULL,'999999','2024-04-09 20:36:08',NULL,NULL,NULL,NULL),(267,27,'2024-04-09 20:36:21',-1,'Draft',0,NULL,'999999','2024-04-09 20:36:21',NULL,NULL,NULL,NULL),(268,27,'2024-04-09 20:36:35',0,'Submitted',0,NULL,'999999','2024-04-09 20:36:35',NULL,NULL,NULL,NULL),(269,28,'2024-04-09 21:14:49',-1,'draft',0,NULL,'999999','2024-04-09 21:14:49',NULL,NULL,NULL,NULL),(270,28,'2024-04-09 21:15:20',0,'Submitted',0,NULL,'999999','2024-04-09 21:15:20',NULL,NULL,NULL,NULL),(271,1,'2024-05-08 09:37:00',-1,'draft',1,'gajadi','999999','2024-05-08 09:37:00',NULL,NULL,NULL,NULL),(272,1,'2024-05-08 09:37:17',0,'Submitted',1,'gajadi','999999','2024-05-08 09:37:17',NULL,NULL,NULL,NULL),(273,1,'2024-05-08 09:37:47',2,'Approved',1,'gajadi','999999','2024-05-08 09:37:47',NULL,NULL,NULL,NULL),(274,2,'2024-05-14 11:10:43',-1,'draft',0,NULL,'999999','2024-05-14 11:10:43',NULL,NULL,NULL,NULL),(275,2,'2024-05-14 11:11:01',0,'Submitted',0,NULL,'999999','2024-05-14 11:11:01',NULL,NULL,NULL,NULL),(276,2,'2024-05-14 11:11:21',2,'Approved',0,NULL,'999999','2024-05-14 11:11:21',NULL,NULL,NULL,NULL),(277,1,'2024-07-03 13:10:32',-1,'draft',1,'gajadi','999999','2024-07-03 13:10:32',NULL,NULL,NULL,NULL),(278,1,'2024-07-03 13:15:37',0,'Submitted',1,'gajadi','999999','2024-07-03 13:15:37',NULL,NULL,NULL,NULL),(279,1,'2024-07-03 13:17:19',2,'Approved',1,'gajadi','999999','2024-07-03 13:17:19',NULL,NULL,NULL,NULL),(280,1,'2024-10-02 18:18:07',-1,'draft',1,'gajadi','999999','2024-10-02 18:18:07',NULL,NULL,NULL,NULL),(281,2,'2024-10-02 18:21:15',-1,'draft',0,NULL,'93003','2024-10-02 18:21:15',NULL,NULL,NULL,NULL),(282,2,'2024-10-02 18:23:11',0,'Submitted',0,NULL,'93003','2024-10-02 18:23:11',NULL,NULL,NULL,NULL),(283,3,'2024-10-30 10:28:48',-1,'draft',0,NULL,'93003','2024-10-30 10:28:48',NULL,NULL,NULL,NULL),(284,3,'2024-10-30 14:32:07',0,'Submitted',0,NULL,'93003','2024-10-30 14:32:07',NULL,NULL,NULL,NULL),(285,4,'2025-03-20 10:55:43',-1,'draft',0,NULL,'93003','2025-03-20 10:55:43',NULL,NULL,NULL,NULL),(286,4,'2025-03-20 11:39:13',0,'Submitted',0,NULL,'93003','2025-03-20 11:39:13',NULL,NULL,NULL,NULL),(287,3,'2025-03-20 15:43:41',-1,'Submitted',0,NULL,'93003','2025-03-20 15:43:41',NULL,NULL,NULL,NULL),(288,3,'2025-03-20 15:45:04',0,'Submitted',0,NULL,'93003','2025-03-20 15:45:04',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_justificationlogs` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_justificationstatus` +-- + +DROP TABLE IF EXISTS `tbl_justificationstatus`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_justificationstatus` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `status` int(11) DEFAULT NULL, + `description` varchar(30) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_justificationstatus` (`_idx`,`status`,`idt`,`isdeleted`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_justificationstatus` +-- + +LOCK TABLES `tbl_justificationstatus` WRITE; +/*!40000 ALTER TABLE `tbl_justificationstatus` DISABLE KEYS */; +INSERT INTO `tbl_justificationstatus` VALUES (1,-2,'Rejected',0,NULL,'82010','2022-11-29 06:56:18',NULL,NULL,NULL,NULL),(2,-1,'Draft',0,NULL,'82010','2022-11-29 06:56:18',NULL,NULL,NULL,NULL),(3,0,'Submitted',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL),(4,1,'Verified',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL),(5,2,'Approval',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_justificationstatus` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_justificationttd` +-- + +DROP TABLE IF EXISTS `tbl_justificationttd`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_justificationttd` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxjustification` int(11) DEFAULT '0', + `idemployee` int(11) DEFAULT '0', + `nik` varchar(30) DEFAULT NULL, + `category` varchar(20) DEFAULT NULL, + `token` varchar(100) DEFAULT NULL, + `imgqr` text, + `issigned` smallint(6) DEFAULT '0', + `signeddate` datetime DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`) +) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_justificationttd` +-- + +LOCK TABLES `tbl_justificationttd` WRITE; +/*!40000 ALTER TABLE `tbl_justificationttd` DISABLE KEYS */; +INSERT INTO `tbl_justificationttd` VALUES (1,1,1,'82012','CRE','141600','',0,NULL,1,'gajadi','999999','2024-10-02 18:18:07',NULL,NULL,NULL,NULL),(2,1,4,'85006','APR','018381','',0,NULL,1,'gajadi','85006','2024-10-02 18:18:07',NULL,NULL,NULL,NULL),(3,2,74,'82001','CRE','345708','',0,NULL,0,NULL,'93003','2024-10-02 18:21:15','82001','2024-10-02 18:23:11',NULL,NULL),(4,2,349,'83077','CRE','021188','',0,NULL,0,NULL,'93003','2024-10-02 18:21:15','83077','2024-10-02 18:23:11',NULL,NULL),(5,2,6,'91009','CRE','286404','',0,NULL,0,NULL,'93003','2024-10-02 18:21:15','91009','2024-10-02 18:23:11',NULL,NULL),(6,2,69,'84016','APR','215700','',0,NULL,0,NULL,'84016','2024-10-02 18:21:15','84016','2024-10-02 18:23:11',NULL,NULL),(7,2,253,'74003','APR','011583','',0,NULL,0,NULL,'74003','2024-10-02 18:21:15','74003','2024-10-02 18:23:11',NULL,NULL),(8,2,4,'85006','APR','423566','',0,NULL,0,NULL,'85006','2024-10-02 18:21:15','85006','2024-10-02 18:23:11',NULL,NULL),(9,2,1,'82012','APR','100022','',0,NULL,0,NULL,'82012','2024-10-02 18:21:15','82012','2024-10-02 18:23:11',NULL,NULL),(10,3,81,'90010','CRE','762670','',0,NULL,0,NULL,'93003','2024-10-30 10:28:48','90010','2025-03-20 15:45:04',NULL,NULL),(11,3,69,'84016','APR','656252','',0,NULL,0,NULL,'82012','2024-10-30 10:28:48','84016','2025-03-20 15:45:04',NULL,NULL),(12,3,6,'91009','CRE','237658','',0,NULL,0,NULL,'91009','2024-10-30 11:00:44','91009','2025-03-20 15:45:04',NULL,NULL),(13,3,349,'83077','CRE','658115','',0,NULL,0,NULL,'83077','2024-10-30 11:00:44','83077','2025-03-20 15:45:04',NULL,NULL),(14,3,253,'74003','APR','830464','',0,NULL,0,NULL,'74003','2024-10-30 11:00:44','74003','2025-03-20 15:45:04',NULL,NULL),(15,3,4,'85006','APR','227478','',0,NULL,0,NULL,'85006','2024-10-30 11:00:44','85006','2025-03-20 15:45:04',NULL,NULL),(16,3,1,'82012','APR','805433','',0,NULL,1,NULL,'82012','2024-10-30 11:00:44',NULL,NULL,'82012','2024-10-30 14:32:07'),(17,3,6,'91009','CRE','536223','',0,NULL,0,NULL,'91009','2024-10-30 11:00:54','91009','2025-03-20 15:45:04',NULL,NULL),(18,3,349,'83077','CRE','063037','',0,NULL,0,NULL,'83077','2024-10-30 11:00:54','83077','2025-03-20 15:45:04',NULL,NULL),(19,3,253,'74003','APR','335265','',0,NULL,1,NULL,'74003','2024-10-30 11:00:54',NULL,NULL,'74003','2024-10-30 14:32:07'),(20,3,4,'85006','APR','188084','',0,NULL,1,NULL,'85006','2024-10-30 11:00:54',NULL,NULL,'85006','2024-10-30 14:32:07'),(21,3,1,'82012','APR','687351','',0,NULL,0,NULL,'82012','2024-10-30 11:00:54','82012','2025-03-20 15:45:04',NULL,NULL),(22,3,6,'91009','CRE','278288','',0,NULL,0,NULL,'91009','2024-10-30 11:01:03','91009','2025-03-20 15:45:04',NULL,NULL),(23,3,349,'83077','CRE','541087','',0,NULL,0,NULL,'83077','2024-10-30 11:01:03','83077','2025-03-20 15:45:04',NULL,NULL),(24,3,253,'74003','APR','808715','',0,NULL,1,NULL,'74003','2024-10-30 11:01:03',NULL,NULL,'74003','2024-10-30 14:32:07'),(25,3,4,'85006','APR','562026','',0,NULL,1,NULL,'85006','2024-10-30 11:01:03',NULL,NULL,'85006','2024-10-30 14:32:07'),(26,3,1,'82012','APR','561616','',0,NULL,1,NULL,'82012','2024-10-30 11:01:03',NULL,NULL,'82012','2024-10-30 14:32:07'),(27,4,93,'92006','CRE','646255','',0,NULL,0,NULL,'93003','2025-03-20 10:55:43','92006','2025-03-20 11:39:13',NULL,NULL),(28,4,81,'90010','CRE','612287','',0,NULL,0,NULL,'93003','2025-03-20 10:55:43','90010','2025-03-20 11:39:13',NULL,NULL),(29,4,11,'91001','CRE','020687','',0,NULL,0,NULL,'93003','2025-03-20 10:55:43','91001','2025-03-20 11:39:13',NULL,NULL),(30,4,349,'83077','CRE','148503','',0,NULL,0,NULL,'93003','2025-03-20 10:55:43','83077','2025-03-20 11:39:13',NULL,NULL),(31,4,6,'91009','CRE','408626','',0,NULL,0,NULL,'93003','2025-03-20 10:55:43','91009','2025-03-20 11:39:13',NULL,NULL),(32,4,69,'84016','APR','212337','',0,NULL,0,NULL,'84016','2025-03-20 10:55:43','84016','2025-03-20 11:39:13',NULL,NULL),(33,4,253,'74003','APR','474828','',0,NULL,0,NULL,'74003','2025-03-20 10:55:43','74003','2025-03-20 11:39:13',NULL,NULL),(34,4,4,'85006','APR','668838','',0,NULL,0,NULL,'85006','2025-03-20 10:55:43','85006','2025-03-20 11:39:13',NULL,NULL),(35,4,1,'82012','APR','106760','',0,NULL,0,NULL,'82012','2025-03-20 10:55:43','82012','2025-03-20 11:39:13',NULL,NULL); +/*!40000 ALTER TABLE `tbl_justificationttd` ENABLE KEYS */; +UNLOCK TABLES; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `dbproc`.`tr_afterupdatejustificationttd` AFTER UPDATE + ON dbproc.tbl_justificationttd FOR EACH ROW +BEGIN + DECLARE totalsigned INT; + DECLARE totalapproval INT; + + select count(_idx) into totalapproval from tbl_justificationttd where idxjustification=NEW.idxjustification and isdeleted=0; + select count(_idx) into totalsigned from tbl_justificationttd where idxjustification=NEW.idxjustification and issigned=1 and isdeleted=0; + if (totalsigned=totalapproval and NEW.isdeleted=0) then + update tbl_justification set status=2,statusdescription='Approved',uby=NEW.uby,udt=NEW.udt + where _idx=NEW.idxjustification; + end if; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `tbl_menu_groupproject` +-- + +DROP TABLE IF EXISTS `tbl_menu_groupproject`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_menu_groupproject` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `groupname` varchar(80) DEFAULT NULL, + `groupdescription` varchar(100) DEFAULT NULL, + `isadministrator` smallint(6) DEFAULT '0', + `isdeleted` smallint(6) DEFAULT '0', + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`) +) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_menu_groupproject` +-- + +LOCK TABLES `tbl_menu_groupproject` WRITE; +/*!40000 ALTER TABLE `tbl_menu_groupproject` DISABLE KEYS */; +INSERT INTO `tbl_menu_groupproject` VALUES (1,'Procurement','Procurement Module',0,0,'82010','2021-02-28 00:39:31',NULL,NULL,NULL,NULL),(2,'Administrator','Administrator Module',1,0,'82010','2021-02-28 00:41:45',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_menu_groupproject` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_menus` +-- + +DROP TABLE IF EXISTS `tbl_menus`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_menus` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `menuid` varchar(60) DEFAULT NULL, + `sort` int(11) DEFAULT '0', + `menuheader` smallint(6) DEFAULT '0', + `menutype` varchar(5) DEFAULT NULL, + `menutext` varchar(100) DEFAULT NULL, + `i18n` varchar(60) DEFAULT '', + `classname` varchar(60) DEFAULT '', + `icon` varchar(60) DEFAULT '', + `slug` varchar(60) DEFAULT '', + `url` text, + `isactivated` smallint(6) DEFAULT '0', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_menus` (`_idx`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_menus` +-- + +LOCK TABLES `tbl_menus` WRITE; +/*!40000 ALTER TABLE `tbl_menus` DISABLE KEYS */; +INSERT INTO `tbl_menus` VALUES (1,'mnuheaderdtdas',1,0,'H','Dashboard','Dashboard','waves-effect waves-cyan','airplay','dashboard','/',1,0,NULL,'82010','2022-10-27 10:49:29',NULL,NULL,NULL,NULL),(2,'mnuheaderdtaccessibility',2,0,'H1','Accessibility','-','-','more_horiz','-','-',1,0,NULL,'82010','2022-10-27 10:49:29',NULL,NULL,NULL,NULL),(3,'mnuheaderdtuseracc',3,2,'S','User Access','User Access','collapsible-header waves-effect waves-cyan','perm_identity','user-access','javascript:void(0)',1,0,NULL,'82010','2022-10-27 11:46:23',NULL,NULL,NULL,NULL),(4,'mnuheaderdtuseraccuseracc',4,3,'D','Setting User Accesibility','Setting User Accesibility','Setting User Accesibility','','app-invoice-list','user-access',1,0,NULL,'82010','2022-10-27 11:46:23',NULL,NULL,NULL,NULL),(5,'menusubheaderconfiguration',5,2,'S','Menu Configuration','Menu Configuration','collapsible-header waves-effect waves-cyan','code','menu-configuration','javascript:void(0)',0,1,NULL,'82010','2022-10-27 15:27:05',NULL,NULL,NULL,NULL),(6,'mnuheaderdtnewtreeview',6,5,'D','New Treeview Menu','New Treeview Menu','New Treeview Menu','','app-invoice-list','user-access',0,1,NULL,'82010','2022-10-27 11:46:23',NULL,NULL,NULL,NULL),(7,'mnuheaderdtnewtreeview',7,5,'D','Find Treeview Menu','Find Treeview Menu','Find Treeview Menu','','app-invoice-list','user-access',0,1,NULL,'82010','2022-10-27 11:46:23',NULL,NULL,NULL,NULL),(8,'mnuheaderdatamaster',8,0,'H1','Data Master','-','-','more_horiz','-','-',1,0,NULL,'82010','2022-10-27 10:49:29',NULL,NULL,NULL,NULL),(9,'mnusubbudgetinfo',9,8,'S','Budget Info','Budget Info','waves-effect waves-cyan','track_changes','budget-capex','budget-capex',1,0,NULL,'82010','2022-10-27 11:46:23',NULL,NULL,NULL,NULL),(10,'mnusubvendorinfo',10,8,'S','Vendor Info','Vendor Info','waves-effect waves-cyan','data_usage','database-vendor','database-vendor',1,0,NULL,'82010','2022-10-27 11:46:23',NULL,NULL,NULL,NULL),(11,'mnusubbudgetcoainfo',11,8,'S','GL Account','GL Account','waves-effect waves-cyan','perm_identity','account-sap','account-sap',1,0,NULL,'82010','2022-11-03 00:00:00',NULL,NULL,NULL,NULL),(12,'mnuheadertransaction',12,0,'H1','Transaction','-','-','more_horiz','-','-',1,0,NULL,'82010','2022-10-27 10:49:29',NULL,NULL,NULL,NULL),(13,'mnusubreqbudget',13,12,'S','Request Budget','Request Budget','waves-effect waves-cyan','filter_none','request-budget','request-budget',1,0,NULL,'82010','2022-11-03 00:00:00',NULL,NULL,NULL,NULL),(14,'mnusubjustification',14,12,'S','Justification','Justification','collapsible-header waves-effect waves-cyan','code','','javascript:void(0)',1,0,NULL,'82010','2022-11-09 00:00:00',NULL,NULL,NULL,NULL),(15,'mnusubpreparedjustification',15,14,'D','Preparation','Preparation','Preparation','','justifikasi','justifikasi',1,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(16,'mnusubapprovaljustification',16,14,'D','Circulation','Circulation','Circulation','','circulation','circulation',1,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(17,'mnusubpr',17,12,'S','Purchase Requisition','Purchase Requisition','collapsible-header waves-effect waves-cyan','filter_drama','','javascript:void(0)',1,0,NULL,'82010','2022-11-09 00:00:00',NULL,NULL,NULL,NULL),(18,'mnusubprcreate',18,17,'D','Create PR','Create PR','Create PR','','createpr','createpr',1,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(19,'mnusubprapproval',19,17,'D','Approval PR','Approval PR','Approval PR','','approvalpr','approvalpr',1,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(20,'mnusubpr',20,12,'S','Procurement Justification','Procurement Justification','collapsible-header waves-effect waves-cyan','cast','','javascript:void(0)',1,0,NULL,'82010','2022-11-09 00:00:00',NULL,NULL,NULL,NULL),(21,'mnuidpreparationprocjustifcation',21,20,'D','Preparation','Preparation','Preparation','','procjustification','procjustification',1,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(22,'mnuidsubprocjustificationverified',22,20,'D','Verify','Verify','Verify','','procverify','procverify',1,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(23,'mnuidsubprocjustificationapproval',23,20,'D','Approval','Approval','Approval','','procapproval','procapproval',1,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(24,'mnuidsubprocjustificationinquiry',24,20,'D','Inquiry Justification','Inquiry Justification','Inquiry Justification','','inquiryproc','inquiryproc',1,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(25,'mnuidsubpurchaseorder',24,12,'S','Purchase Order','Purchase Order','waves-effect waves-cyan','monetization_on','po-vendor','po-vendor',1,0,NULL,'82010','2022-11-03 00:00:00',NULL,NULL,NULL,NULL),(26,'mnuidsubacceptance',28,12,'S','Acceptance','Acceptance','collapsible-header waves-effect waves-cyan','chrome_reader_mode','','javascript:void(0)',1,0,NULL,'82010','2023-01-12 08:54:56',NULL,NULL,NULL,NULL),(27,'mnuidsubtechnicalacceptance',27,26,'D','Technical Acceptance','Technical Acceptance','Technical Acceptance','','','technical-acceptance',1,0,NULL,'82010','2023-01-12 08:54:57',NULL,NULL,NULL,NULL),(28,'mnuidsubhandover',28,26,'D','HandOver','HandOver','HandOver','','','handover',1,0,NULL,'82010','2023-01-12 08:54:57',NULL,NULL,NULL,NULL),(29,'mnuidsubfinance',29,12,'S','Finance','Finance','collapsible-header waves-effect waves-cyan','queue_play_next','','javascript:void(0)',1,0,NULL,'82010','2023-01-12 08:54:56',NULL,NULL,NULL,NULL),(30,'mnuidsubfinancepaidvendor',30,29,'D','Vendor Payment','Vendor Payment','Vendor Payment','','finance','finance',1,0,NULL,'82010','2023-01-12 08:54:57',NULL,NULL,NULL,NULL),(31,'mnuidsubfinanceverifyvendor',31,29,'D','Verify Finance','Verify Finance','Verify Finance','','verify-finance','verify-finance',1,0,NULL,'82010','2023-01-30 08:18:48',NULL,NULL,NULL,NULL),(32,'mnusubprmanagement',32,17,'D','PR Management','PR Management','PR Management','','pr-management','pr-management',1,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(33,'mnuidsubpomanagement',26,12,'S','PO Management','PO Management','PO Management','adjust','po-management','po-management',1,0,NULL,'82010','2022-11-03 00:00:00',NULL,NULL,NULL,NULL),(34,'mnuidsubinventoryprocboq',26,26,'D','Inventory Management','Inventory Management','waves-effect waves-cyan','','inventory-management','inventory-management',1,0,NULL,'82010','2023-02-27 13:09:29',NULL,NULL,NULL,NULL),(35,'mnuidsubpoapproval',25,12,'S','Approval PO','Approval PO','waves-effect waves-cyan','border_all','approval-po','approval-po',1,1,NULL,'82010','2023-03-05 22:16:50',NULL,NULL,NULL,NULL),(36,'mnuidsubmigoposap',28,12,'S','Migo SAP','Migo SAP','Migo','devices_other','migo','migo',1,0,NULL,'82010','2023-03-08 06:58:26',NULL,NULL,NULL,NULL),(37,'mnuidsubpoadjustment',27,12,'S','PO Adjustment','PO Adjustment','waves-effect waves-cyan','build','po-adjustment','po-adjustment',1,0,NULL,'82010','2023-09-27 11:25:48',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_menus` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_po` +-- + +DROP TABLE IF EXISTS `tbl_po`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_po` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `trxid` varchar(80) DEFAULT NULL, + `ponumber` varchar(80) DEFAULT NULL, + `idxpr` int(11) DEFAULT '0', + `prnumber` varchar(30) DEFAULT NULL, + `idxjustification` int(11) DEFAULT '0', + `justificationnumber` varchar(30) DEFAULT NULL, + `idxvendor` int(11) DEFAULT '0', + `vendorname` varchar(80) DEFAULT NULL, + `vendorid` varchar(30) DEFAULT NULL, + `podate` datetime DEFAULT NULL, + `podatettd` datetime DEFAULT NULL, + `vper_start` datetime DEFAULT NULL, + `vper_end` datetime DEFAULT NULL, + `podescription` text, + `identifyprojectnumber` varchar(100) DEFAULT '', + `contractdescription` varchar(100) DEFAULT '', + `contractperiodfrom` varchar(10) DEFAULT '', + `contractperiodto` varchar(10) DEFAULT '', + `units` varchar(30) DEFAULT NULL, + `totalqty` double DEFAULT '0', + `totalpo` double DEFAULT '0', + `status` int(11) DEFAULT NULL, + `statusdescription` varchar(80) DEFAULT NULL, + `sapmessages` text, + `migo` varchar(100) DEFAULT '', + `migosapmessages` varchar(100) DEFAULT '', + `idxapproval` int(11) DEFAULT '0', + `nikapproval` varchar(30) DEFAULT '', + `approveddate` datetime DEFAULT NULL, + `token` varchar(100) DEFAULT NULL, + `filepng` varchar(100) DEFAULT NULL, + `idxpoboq` varchar(100) DEFAULT NULL, + `isadjustment` smallint(6) DEFAULT '0', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_po` (`_idx`,`idxpr`,`idxjustification`,`status`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_po` +-- + +LOCK TABLES `tbl_po` WRITE; +/*!40000 ALTER TABLE `tbl_po` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_po` ENABLE KEYS */; +UNLOCK TABLES; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `tr_afterinsertpo` AFTER INSERT ON `tbl_po` FOR EACH ROW BEGIN + insert into tbl_pologs set idxpo=NEW._idx,datelogs=now(), + status=NEW.status,statusdescription=NEW.statusdescription,iby=NEW.iby,idt=now(); + + update tbl_poboq set status=NEW.status,statusdescription=NEW.statusdescription,isdeleted=NEW.isdeleted,remarkdeleted=NEW.remarkdeleted where idxheader=NEW._idx; + + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `tr_afterupdatepo` AFTER UPDATE ON `tbl_po` FOR EACH ROW BEGIN + if (OLD.status<>NEW.status) then + insert into tbl_pologs set idxpo=NEW._idx,datelogs=now(),status=NEW.status,statusdescription=NEW.statusdescription,iby=NEW.iby,idt=now(); + + end if; +-- update tbl_poboq set identifyprojectnumber=NEW.identifyprojectnumber,ponumber=NEW.ponumber,status=NEW.status,statusdescription=NEW.statusdescription where idxheader=NEW._idx and _idx in(NEW.idxpoboq); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `tbl_poadj` +-- + +DROP TABLE IF EXISTS `tbl_poadj`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_poadj` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxpo` int(11) DEFAULT '0', + `ponumber` varchar(80) DEFAULT NULL, + `dates` datetime DEFAULT NULL, + `reason` varchar(300) DEFAULT NULL, + `filedoc` varchar(100) DEFAULT NULL, + `totalpo` double DEFAULT '0', + `adjval` double DEFAULT '0', + `grandtotal` double DEFAULT '0', + `status` int(11) DEFAULT NULL, + `statusdescription` varchar(100) DEFAULT NULL, + `laststatusupdated` datetime DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(200) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_poadj` (`_idx`,`idxpo`,`dates`,`isdeleted`,`status`) +) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_poadj` +-- + +LOCK TABLES `tbl_poadj` WRITE; +/*!40000 ALTER TABLE `tbl_poadj` DISABLE KEYS */; +INSERT INTO `tbl_poadj` VALUES (1,1,'99-HH','2023-10-23 00:00:00','kurang budget, coba edit','ADJPO_999999_1698294975177.docx',25000,100,25100,-1,'Draft','2023-10-26 07:07:00',1,'gajadi','999999','2023-10-26 07:07:00','999999','2023-10-26 13:36:33','999999','2023-10-26 13:37:51'),(2,5,'23102023','0000-00-00 00:00:00','gatau gabut aja','ADJPO_999999_1698290763121.docx',4000,200,4200,-1,'Draft','2023-10-26 12:26:21',1,'gajadi','999999','2023-10-26 12:26:21',NULL,NULL,'999999','2023-10-26 13:36:09'),(3,1,'ponumber','2023-10-23 00:00:00','kurang budget','ADJPO_999999_1698294729840.pdf',1000,100,1100,NULL,NULL,NULL,1,'gajadi','999999','2023-10-26 13:32:27',NULL,NULL,'999999','2023-10-26 13:37:54'),(4,5,'23102023','0000-00-00 00:00:00','kurang nich','ADJPO_999999_1698295082830.docx',4000,200,4200,-1,'Draft','2023-10-26 13:38:20',1,'hapus','999999','2023-10-26 13:38:20',NULL,NULL,'999999','2023-10-26 13:38:38'),(5,5,'23102023','0000-00-00 00:00:00','kurang nich','ADJPO_999999_1698295189605.docx',4000,200,4200,-1,'Draft','2023-10-26 13:40:07',1,'kurang','999999','2023-10-26 13:40:07',NULL,NULL,'999999','2023-10-26 13:40:32'),(6,5,'070707(1)','2024-01-15 00:00:00','delivery','ADJPO_999999_1705306751712.pdf',2000,90,2090,-1,'Draft','2023-10-26 13:41:08',0,NULL,'999999','2023-10-26 13:41:08','999999','2024-01-15 17:19:28',NULL,NULL),(7,6,'07EB','2023-11-07 00:00:00','Ini kenapa ya','ADJPO_999999_1699330851463.docx',4000,200,4200,-1,'Draft','2023-10-26 16:22:02',0,NULL,'999999','2023-10-26 16:22:02','999999','2023-11-07 13:21:09',NULL,NULL),(8,2,'1272727','2023-10-27 00:00:00','Test','ADJPO_999999_1698379546921.docx',4000,400,4400,-1,'Draft','2023-10-27 13:05:46',1,'delete','999999','2023-10-27 13:05:46','999999','2023-10-27 13:06:04','999999','2023-10-27 13:07:28'),(9,3,'227','2023-10-27 00:00:00','Test','ADJPO_999999_1699329005426.docx',4000,400,4400,-1,'Draft','2023-10-27 13:08:35',0,NULL,'999999','2023-10-27 13:08:35','999999','2023-11-07 12:50:23',NULL,NULL),(10,1,'272727','2023-11-06 00:00:00','apa ya','ADJPO_999999_1699263030710.docx',4000,100,4100,-1,'Draft','2023-11-06 18:30:48',0,NULL,'999999','2023-11-06 18:30:48',NULL,NULL,NULL,NULL),(11,7,'PO-IKI-2023','2023-11-07 00:00:00','kurang euy','ADJPO_999999_1699365088885.docx',108000,10800,118800,-1,'Draft','2023-11-07 22:51:46',0,NULL,'999999','2023-11-07 22:51:46',NULL,NULL,NULL,NULL),(12,8,'PO-IKI-2023-02','2023-11-07 00:00:00','kurang lagi','ADJPO_999999_1699365537951.docx',24600,2450,27050,-1,'Draft','2023-11-07 22:59:15',0,NULL,'999999','2023-11-07 22:59:15',NULL,NULL,NULL,NULL),(13,10,'080808','2023-11-08 00:00:00','Dicoba','ADJPO_999999_1699415049493.docx',1000,100,1100,-1,'Draft','2023-11-08 12:44:27',0,NULL,'999999','2023-11-08 12:44:27',NULL,NULL,NULL,NULL),(14,11,'Deb-09','2023-11-09 00:00:00','Beli Jam','ADJPO_999999_1699512910829.docx',1000,100,1100,-1,'Draft','2023-11-09 15:55:28',0,NULL,'999999','2023-11-09 15:55:28',NULL,NULL,NULL,NULL),(15,12,'41100000088','2024-01-16 00:00:00','Delivery change from sea freight to air freight','ADJPO_999999_1705287765860.docx',900,50,950,-1,'Draft','2024-01-15 12:03:02',0,NULL,'999999','2024-01-15 12:03:02','999999','2024-01-15 12:15:31',NULL,NULL),(16,2,'1272727','2024-01-17 00:00:00','testing','ADJPO_999999_1705463720693.pdf',4000,400,4400,-1,'Draft','2024-01-17 12:55:37',0,NULL,'999999','2024-01-17 12:55:37',NULL,NULL,NULL,NULL),(17,25,'PO-2024-01-22','2024-01-23 00:00:00','delivery','ADJPO_999999_1705984435342.PDF',10,1,11,-1,'Draft','2024-01-23 13:34:11',0,NULL,'999999','2024-01-23 13:34:11',NULL,NULL,NULL,NULL),(18,27,'41100000095','2024-01-25 00:00:00','modifikasi port','ADJPO_999999_1706084627891.pdf',2500,250,2750,-1,'Draft','2024-01-24 17:22:46',0,NULL,'999999','2024-01-24 17:22:46','999999','2024-01-24 17:24:04',NULL,NULL),(19,33,'4110000102','2024-02-29 00:00:00','Add Delivery','ADJPO_999999_1707503221168.PDF',833.05,80,913.05,-1,'Draft','2024-02-10 03:27:17',0,NULL,'999999','2024-02-10 03:27:17',NULL,NULL,NULL,NULL),(20,36,'4110000058','2024-02-29 00:00:00','add delivery','ADJPO_999999_1708707820205.PDF',610,50,660,-1,'Draft','2024-02-24 02:03:56',0,NULL,'999999','2024-02-24 02:03:56',NULL,NULL,NULL,NULL),(21,40,'4110000101','2024-03-01 00:00:00','Karena stock habis','ADJPO_999999_1709086316589.pdf',2500,-300,2200,-1,'Draft','2024-02-28 11:12:12',0,NULL,'999999','2024-02-28 11:12:12',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_poadj` ENABLE KEYS */; +UNLOCK TABLES; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `trafterinserttblpoadjs` AFTER INSERT ON `tbl_poadj` FOR EACH ROW update tbl_po set isadjustment=1 where _idx=NEW.idxpo */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `trafterupdatetblpoadj` AFTER UPDATE ON `tbl_poadj` FOR EACH ROW if NEW.isdeleted=1 +THEN + update tbl_po set isadjustment=0 where _idx=NEW.idxpo; +end if */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `tbl_poboq` +-- + +DROP TABLE IF EXISTS `tbl_poboq`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_poboq` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxheader` int(11) DEFAULT '0', + `idxjustification` int(11) DEFAULT '0', + `idxjustificationboq` int(11) DEFAULT '0', + `items` varchar(100) DEFAULT NULL, + `qty` double DEFAULT '0', + `unitprice` double DEFAULT '0', + `units` varchar(30) DEFAULT NULL, + `total` double DEFAULT '0', + `idxvendor` int(11) DEFAULT '0', + `vendorid` varchar(40) DEFAULT NULL, + `vendorname` varchar(100) DEFAULT NULL, + `description` varchar(100) DEFAULT NULL, + `enddate` datetime DEFAULT NULL, + `startdate` datetime DEFAULT NULL, + `curr` varchar(30) DEFAULT NULL, + `hs` double DEFAULT '0', + `poamount` double DEFAULT '0', + `ratepo` double DEFAULT '0', + `ponumber` varchar(100) DEFAULT '', + `identifyprojectnumber` varchar(100) DEFAULT '', + `migo` varchar(100) DEFAULT NULL, + `status` int(11) DEFAULT NULL, + `statusdescription` varchar(100) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_poboq` (`_idx`,`idxheader`,`idxjustificationboq`,`idxvendor`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_poboq` +-- + +LOCK TABLES `tbl_poboq` WRITE; +/*!40000 ALTER TABLE `tbl_poboq` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_poboq` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_poboqdetail` +-- + +DROP TABLE IF EXISTS `tbl_poboqdetail`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_poboqdetail` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxpoboq` int(11) DEFAULT '0', + `description` varchar(200) DEFAULT '', + `qty` int(11) DEFAULT '0', + `isbulk` smallint(6) DEFAULT '0', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_poboqdetail` (`_idx`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_poboqdetail` +-- + +LOCK TABLES `tbl_poboqdetail` WRITE; +/*!40000 ALTER TABLE `tbl_poboqdetail` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_poboqdetail` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_pologs` +-- + +DROP TABLE IF EXISTS `tbl_pologs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_pologs` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxpo` int(11) DEFAULT '0', + `datelogs` datetime DEFAULT NULL, + `status` int(11) DEFAULT NULL, + `statusdescription` varchar(30) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_pologs` +-- + +LOCK TABLES `tbl_pologs` WRITE; +/*!40000 ALTER TABLE `tbl_pologs` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_pologs` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_postatus` +-- + +DROP TABLE IF EXISTS `tbl_postatus`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_postatus` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `status` int(11) DEFAULT NULL, + `description` varchar(30) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_justificationstatus` (`_idx`,`status`,`idt`,`isdeleted`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_postatus` +-- + +LOCK TABLES `tbl_postatus` WRITE; +/*!40000 ALTER TABLE `tbl_postatus` DISABLE KEYS */; +INSERT INTO `tbl_postatus` VALUES (1,-2,'Rejected',0,NULL,'82010','2022-11-29 06:56:18',NULL,NULL,NULL,NULL),(2,-1,'Draft',0,NULL,'82010','2022-11-29 06:56:18',NULL,NULL,NULL,NULL),(3,0,'Submitted',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL),(4,1,'Create PO SAP',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL),(5,2,'Create BAST',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL),(8,3,'Change PO',0,NULL,'82010','2023-02-07 00:00:00',NULL,NULL,NULL,NULL),(9,4,'Release PO',0,NULL,'82010','2023-02-10 07:06:25',NULL,NULL,NULL,NULL),(10,5,'Create Header Sap',0,NULL,'82010','2023-02-10 00:00:00',NULL,NULL,NULL,NULL),(11,6,'Approved',0,NULL,'82010','2023-03-05 00:00:00',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_postatus` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_pottd` +-- + +DROP TABLE IF EXISTS `tbl_pottd`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_pottd` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxpo` int(11) DEFAULT '0', + `idemployee` int(11) DEFAULT '0', + `nik` varchar(30) DEFAULT NULL, + `category` varchar(20) DEFAULT NULL, + `token` varchar(100) DEFAULT NULL, + `imgqr` text, + `issigned` smallint(6) DEFAULT '0', + `signeddate` datetime DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_pottd` +-- + +LOCK TABLES `tbl_pottd` WRITE; +/*!40000 ALTER TABLE `tbl_pottd` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_pottd` ENABLE KEYS */; +UNLOCK TABLES; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `tr_afterupdatetblpottd` AFTER UPDATE ON `tbl_pottd` FOR EACH ROW BEGIN + DECLARE totalsigned INT; + DECLARE totalapproval INT; + + select count(_idx) into totalapproval from tbl_pottd where idxpo=NEW.idxpo and isdeleted=0; + select count(_idx) into totalsigned from tbl_pottd where idxpo=NEW.idxpo and issigned=1 and isdeleted=0; + if (totalsigned=totalapproval and NEW.isdeleted=0) then + update tbl_po set status=6,statusdescription='Approved',uby=NEW.uby,udt=NEW.udt + where _idx=NEW.idxpo; + end if; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `tbl_pr` +-- + +DROP TABLE IF EXISTS `tbl_pr`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_pr` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `trxidpr` varchar(30) DEFAULT '', + `prnumber` varchar(100) DEFAULT NULL, + `idxjustification` int(11) DEFAULT '0', + `justificationnumber` varchar(80) DEFAULT NULL, + `costcenter` varchar(30) DEFAULT '', + `profitcenter` varchar(30) DEFAULT '', + `description` varchar(100) DEFAULT NULL, + `qty` int(11) DEFAULT '0', + `unit` varchar(10) DEFAULT NULL, + `netprice` double DEFAULT '0', + `totalvalue` double DEFAULT '0', + `curr` varchar(30) DEFAULT NULL, + `prdate` datetime DEFAULT NULL, + `status` int(11) DEFAULT NULL, + `statusdescription` varchar(10) DEFAULT NULL, + `sapmessage` text, + `idxapproval` int(11) DEFAULT '0', + `nikapproval` varchar(30) DEFAULT NULL, + `approveddate` datetime DEFAULT NULL, + `isused` smallint(6) DEFAULT '0', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `token` varchar(100) DEFAULT '', + `filepng` varchar(100) DEFAULT '', + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_pr` (`_idx`,`idxjustification`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_pr` +-- + +LOCK TABLES `tbl_pr` WRITE; +/*!40000 ALTER TABLE `tbl_pr` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_pr` ENABLE KEYS */; +UNLOCK TABLES; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `dbproc`.`tr_afterinsertpr` AFTER INSERT + ON dbproc.tbl_pr FOR EACH ROW +BEGIN + insert into tbl_prlogs set idxpr=NEW._idx,datelogs=now(), + status=NEW.status,statusdescription=NEW.statusdescription,iby=NEW.iby,idt=now(); + + update tbl_justification set iscreatepr=1,createprdate=now() where _idx=NEW.idxjustification; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `dbproc`.`tr_afterupdatepr` AFTER UPDATE + ON dbproc.tbl_pr FOR EACH ROW +BEGIN + if (OLD.status<>NEW.status) then + insert into tbl_prlogs set idxpr=NEW._idx,datelogs=now(),status=NEW.status,statusdescription=NEW.statusdescription,iby=NEW.iby,idt=now(); + end if; + + if (NEW.status>=-1 and NEW.isdeleted=0) then + update tbl_justification set iscreatepr=1,createprdate=now() where _idx=NEW.idxjustification; + else + update tbl_justification set iscreatepr=0 where _idx=NEW.idxjustification; + end if; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `tbl_prlogs` +-- + +DROP TABLE IF EXISTS `tbl_prlogs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_prlogs` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxpr` int(11) DEFAULT '0', + `datelogs` datetime DEFAULT NULL, + `status` int(11) DEFAULT NULL, + `statusdescription` varchar(30) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_prlogs` +-- + +LOCK TABLES `tbl_prlogs` WRITE; +/*!40000 ALTER TABLE `tbl_prlogs` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_prlogs` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_procjustification` +-- + +DROP TABLE IF EXISTS `tbl_procjustification`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_procjustification` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxpr` int(11) DEFAULT '0', + `prnumber` varchar(30) DEFAULT NULL, + `procjustificationnumber` varchar(80) DEFAULT NULL, + `idxjustification` int(11) DEFAULT '0', + `justificationnumber` varchar(80) DEFAULT NULL, + `ismergedoc` smallint(6) DEFAULT '0', + `idxcreated` int(11) DEFAULT '0', + `nikcreated` varchar(10) DEFAULT '', + `idxverified` int(11) DEFAULT '0', + `nikverified` varchar(10) DEFAULT '', + `idxapproval` smallint(6) DEFAULT '0', + `nikapproval` varchar(20) DEFAULT NULL, + `status` int(11) DEFAULT NULL, + `statusdescription` varchar(80) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_procjustification` (`_idx`,`idxpr`,`idxjustification`,`idxapproval`,`status`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_procjustification` +-- + +LOCK TABLES `tbl_procjustification` WRITE; +/*!40000 ALTER TABLE `tbl_procjustification` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_procjustification` ENABLE KEYS */; +UNLOCK TABLES; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `dbproc`.`tr_afterinserttblprocjustification` AFTER INSERT + ON dbproc.tbl_procjustification FOR EACH ROW +BEGIN + insert into tbl_procjustificationlogs set idxjustification=NEW._idx,datelogs=now(), + status=NEW.status,statusdescription=NEW.statusdescription,iby=NEW.iby,idt=now(); + + update tbl_pr set isused=1 where _idx=NEW.idxpr; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`ssotcel`@`%`*/ /*!50003 TRIGGER `dbproc`.`tr_afterupdateprocjustification` AFTER UPDATE + ON dbproc.tbl_procjustification FOR EACH ROW +BEGIN + if (OLD.status<>NEW.status) then + insert into tbl_procjustificationlogs set idxjustification=NEW._idx,datelogs=now(),status=NEW.status,statusdescription=NEW.statusdescription,iby=NEW.iby,idt=now(); + end if; + + if (NEW.isdeleted=1) then + update tbl_procjustificationdoc set isdeleted=1,remarkdeleted=NEW.remarkdeleted where idxheader=NEW._idx; + update tbl_pr set isused=0 where _idx=NEW.idxpr; + end if; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `tbl_procjustificationdoc` +-- + +DROP TABLE IF EXISTS `tbl_procjustificationdoc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_procjustificationdoc` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxheader` int(11) DEFAULT '0', + `numberoffile` smallint(6) DEFAULT '0', + `filecategory` varchar(100) DEFAULT NULL, + `filename` varchar(100) DEFAULT NULL, + `descriptionfile` varchar(100) DEFAULT NULL, + `filedocmerge` varchar(100) DEFAULT NULL, + `ismergedoc` smallint(6) DEFAULT '0', + `isconvertpdf` smallint(6) DEFAULT '0', + `pdffile` varchar(100) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_procjustificationdoc` (`_idx`,`idxheader`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_procjustificationdoc` +-- + +LOCK TABLES `tbl_procjustificationdoc` WRITE; +/*!40000 ALTER TABLE `tbl_procjustificationdoc` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_procjustificationdoc` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_procjustificationlogs` +-- + +DROP TABLE IF EXISTS `tbl_procjustificationlogs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_procjustificationlogs` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxjustification` int(11) DEFAULT '0', + `datelogs` datetime DEFAULT NULL, + `status` int(11) DEFAULT NULL, + `statusdescription` varchar(30) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_procjustificationlogs` +-- + +LOCK TABLES `tbl_procjustificationlogs` WRITE; +/*!40000 ALTER TABLE `tbl_procjustificationlogs` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_procjustificationlogs` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_procjustificationstatus` +-- + +DROP TABLE IF EXISTS `tbl_procjustificationstatus`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_procjustificationstatus` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `status` int(11) DEFAULT NULL, + `description` varchar(30) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_justificationstatus` (`_idx`,`status`,`idt`,`isdeleted`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_procjustificationstatus` +-- + +LOCK TABLES `tbl_procjustificationstatus` WRITE; +/*!40000 ALTER TABLE `tbl_procjustificationstatus` DISABLE KEYS */; +INSERT INTO `tbl_procjustificationstatus` VALUES (1,-2,'Rejected',0,NULL,'82010','2022-11-29 06:56:18',NULL,NULL,NULL,NULL),(2,-1,'Draft',0,NULL,'82010','2022-11-29 06:56:18',NULL,NULL,NULL,NULL),(3,0,'Submitted',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL),(4,1,'Verified',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL),(5,2,'Approval',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_procjustificationstatus` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_procjustificationttd` +-- + +DROP TABLE IF EXISTS `tbl_procjustificationttd`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_procjustificationttd` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxjustification` int(11) DEFAULT '0', + `idemployee` int(11) DEFAULT '0', + `nik` varchar(30) DEFAULT NULL, + `category` varchar(20) DEFAULT NULL, + `token` varchar(100) DEFAULT NULL, + `imgqr` text, + `issigned` smallint(6) DEFAULT '0', + `signeddate` datetime DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_procjustificationttd` +-- + +LOCK TABLES `tbl_procjustificationttd` WRITE; +/*!40000 ALTER TABLE `tbl_procjustificationttd` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_procjustificationttd` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_profitcenter` +-- + +DROP TABLE IF EXISTS `tbl_profitcenter`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_profitcenter` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `profitcode` varchar(30) DEFAULT NULL, + `profitname` varchar(80) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(200) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `ndx_tbl_profitcenter` (`id`,`isdeleted`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_profitcenter` +-- + +LOCK TABLES `tbl_profitcenter` WRITE; +/*!40000 ALTER TABLE `tbl_profitcenter` DISABLE KEYS */; +INSERT INTO `tbl_profitcenter` VALUES (1,'TIL1A01','Marketing & Sales',0,NULL,'82010','2023-09-22 09:41:11',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_profitcenter` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_projectprofile` +-- + +DROP TABLE IF EXISTS `tbl_projectprofile`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_projectprofile` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `projectid` varchar(30) DEFAULT NULL, + `projectversion` varchar(30) DEFAULT NULL, + `projectname` varchar(30) DEFAULT NULL, + `projectdesc` varchar(80) DEFAULT NULL, + `registered_by` varchar(30) DEFAULT NULL, + `registered_ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`) +) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_projectprofile` +-- + +LOCK TABLES `tbl_projectprofile` WRITE; +/*!40000 ALTER TABLE `tbl_projectprofile` DISABLE KEYS */; +INSERT INTO `tbl_projectprofile` VALUES (1,'e-Proc','1.0.0','e-Procurement Digital','e-Procurement Digital','82010','2022-07-03 07:33:39'); +/*!40000 ALTER TABLE `tbl_projectprofile` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_prstatus` +-- + +DROP TABLE IF EXISTS `tbl_prstatus`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_prstatus` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `status` int(11) DEFAULT NULL, + `description` varchar(30) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_justificationstatus` (`_idx`,`status`,`idt`,`isdeleted`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_prstatus` +-- + +LOCK TABLES `tbl_prstatus` WRITE; +/*!40000 ALTER TABLE `tbl_prstatus` DISABLE KEYS */; +INSERT INTO `tbl_prstatus` VALUES (1,-2,'Rejected',0,NULL,'82010','2022-11-29 06:56:18',NULL,NULL,NULL,NULL),(2,-1,'Draft',0,NULL,'82010','2022-11-29 06:56:18',NULL,NULL,NULL,NULL),(3,0,'Submitted',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL),(4,1,'Verified',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL),(5,2,'Approval',0,NULL,'82010','2022-11-29 06:56:19',NULL,NULL,NULL,NULL),(8,3,'Create PR',0,NULL,'82010','2023-02-01 11:12:42',NULL,NULL,NULL,NULL),(9,4,'Change PR',0,NULL,'82010','2023-02-01 11:12:43',NULL,NULL,NULL,NULL),(10,5,'Delete PR',0,NULL,'82010','2023-02-01 11:12:43',NULL,NULL,NULL,NULL),(11,6,'Release PR',0,NULL,'82010','2023-02-01 11:12:43',NULL,NULL,NULL,NULL),(12,7,'Unrelease PR',0,NULL,'82010','2023-02-01 11:12:43',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_prstatus` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_prttd` +-- + +DROP TABLE IF EXISTS `tbl_prttd`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_prttd` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `idxjustification` int(11) DEFAULT '0', + `idemployee` int(11) DEFAULT '0', + `nik` varchar(30) DEFAULT NULL, + `category` varchar(20) DEFAULT NULL, + `token` varchar(100) DEFAULT NULL, + `imgqr` text, + `issigned` smallint(6) DEFAULT '0', + `signeddate` datetime DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_prttd` +-- + +LOCK TABLES `tbl_prttd` WRITE; +/*!40000 ALTER TABLE `tbl_prttd` DISABLE KEYS */; +/*!40000 ALTER TABLE `tbl_prttd` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_requestbudget` +-- + +DROP TABLE IF EXISTS `tbl_requestbudget`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_requestbudget` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `trxid` varchar(30) DEFAULT NULL, + `justificationnumber` varchar(100) DEFAULT '', + `yearstgt` int(11) DEFAULT '0', + `transactiondate` datetime DEFAULT NULL, + `idxbudgettype` int(11) DEFAULT '0', + `budgettype` varchar(20) DEFAULT NULL, + `idxbudgetid` int(11) DEFAULT '0', + `budgetid` varchar(30) DEFAULT NULL, + `activityname` varchar(100) DEFAULT NULL, + `idcoa` int(11) DEFAULT '0', + `glacc` varchar(30) DEFAULT NULL, + `targetrfs` varchar(30) DEFAULT NULL, + `amount` double DEFAULT '0', + `crdb` varchar(2) DEFAULT 'K', + `isused` smallint(6) DEFAULT '0', + `months` smallint(6) DEFAULT '0', + `years` int(11) DEFAULT '0', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_requestbudget` (`_idx`,`transactiondate`,`yearstgt`,`idxbudgettype`,`idcoa`,`amount`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_requestbudget` +-- + +LOCK TABLES `tbl_requestbudget` WRITE; +/*!40000 ALTER TABLE `tbl_requestbudget` DISABLE KEYS */; +INSERT INTO `tbl_requestbudget` VALUES (1,'TRX/20241002/93003/0001','NO: 001/LG280/TCL-1200000/2024',2024,'2024-12-31 00:00:00',1,'CAPEX',1,'2024-01','Upgrading The Scalability of Datacom',1,'13201022','Q4-2024 / Dec 2024',1889287,'K',1,10,2024,0,NULL,'93003','2024-10-02 15:29:02',NULL,NULL,NULL,NULL),(2,'TRX/20241030/93003/0002','000/LG280/TCL-1200000/2024',2024,'2024-12-31 00:00:00',1,'CAPEX',9,'1603-23-0003','RAN Modernization',1,'13201022','Dec ',535619,'K',1,10,2024,0,NULL,'93003','2024-10-30 09:26:06',NULL,NULL,NULL,NULL),(3,'TRX/20241030/999999/0001','test0001',2024,'2024-10-30 00:00:00',1,'CAPEX',2,'2024-02','New Tranmisi Radio Backbone Xborder 10 Gbps',1,'13201022','Q3-2024/Sept',10,'K',0,10,2024,1,'testasetsetsetest','999999','2024-10-30 13:44:47',NULL,NULL,'999999','2024-10-30 13:50:51'),(4,'TRX/20250320/93003/0001','28/LG280/TLC-12000000/2025',2025,'2025-03-31 00:00:00',1,'CAPEX',20,'2025-11','New Link Capacity 10 Gbps Xborder',1,'13201022','Maret 2025',100000,'K',1,3,2025,0,NULL,'93003','2025-03-20 09:11:15','93003','2025-03-20 09:12:23',NULL,NULL); +/*!40000 ALTER TABLE `tbl_requestbudget` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_treemenu` +-- + +DROP TABLE IF EXISTS `tbl_treemenu`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_treemenu` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `menuid` varchar(40) DEFAULT NULL, + `menutype` varchar(3) DEFAULT NULL, + `menuheader` smallint(6) DEFAULT NULL, + `menutext` varchar(80) DEFAULT NULL, + `menudesc` varchar(120) DEFAULT NULL, + `menuimg` varchar(120) DEFAULT NULL, + `objoption` varchar(80) DEFAULT NULL, + `objname` varchar(80) DEFAULT NULL, + `objtask` varchar(80) DEFAULT NULL, + `objtarget` varchar(80) DEFAULT NULL, + `url` text, + `menuorder` smallint(6) DEFAULT NULL, + `menugroup` varchar(80) DEFAULT NULL, + `id_menu_groupproject` smallint(6) DEFAULT NULL, + `menuactivated` smallint(6) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`) +) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_treemenu` +-- + +LOCK TABLES `tbl_treemenu` WRITE; +/*!40000 ALTER TABLE `tbl_treemenu` DISABLE KEYS */; +INSERT INTO `tbl_treemenu` VALUES (1,'mnuidadminaccessibilitty','H',0,'Accessibility','Administrator->Accessibility','','','','','',NULL,1,'ALL',2,1,0,'82010','2019-12-22 16:57:06',NULL,NULL,NULL,NULL),(2,'mnuidadminaccessibilityuseraccess','S',1,'User Access','Administrator->Accessibility->User Access','','','','','',NULL,1,'ALL',2,1,0,'82010','2019-12-22 17:15:02',NULL,NULL,NULL,NULL),(3,'mnuidadminaccessibilityuseracc','D',2,'Setting User Accessibility ( UAM )','administrator->Accessibility->UserAccess->UAM','','obj_uam','uam_access','default','_self',NULL,1,'ALL',2,1,0,'82010','2019-12-22 17:17:09',NULL,NULL,NULL,NULL),(4,'mnuidadminaccessibilitymenuconfig','S',1,'Menu Configuration','Administrator->Accessibility->Menu Configuration','','','','','',NULL,2,'ALL',2,1,1,'82010','2019-12-22 17:19:27',NULL,NULL,NULL,NULL),(5,'mnuidadminaccessibilitymenuconfignewtree','D',4,'New Treeview Menu','Administrator->Accessibility->MenuConfig->New Treeview Menu','','obj_menuconfig','menuconfig_new','default','_self',NULL,1,'ALL',2,1,0,'82010','2019-12-22 17:26:33',NULL,NULL,NULL,NULL),(6,'mnuidadminaccmenuconfigfindteeview','D',4,'FInd Treeview Menu','Administrator->Accessibility->Menu Conig->FInd Treeview Menu','','obj_menuconfig','menuconfig_list','default','_self',NULL,2,'ALL',2,1,0,'82010','2019-12-22 17:28:11','82010','2021-03-01 07:19:52',NULL,NULL),(7,'mnuidprocurementdatamaster','H',0,'Data Master','PRocurement->Data Master','','','','','',NULL,2,'ALL',1,1,0,'82010','2022-09-23 10:36:20',NULL,NULL,NULL,NULL),(8,'mnuidprocdatamasterbudgettype','D',7,'Budget Type','Procurement->Data Master->Budget Type','','obj_data','data_budtype','default','_self',NULL,1,'ALL',1,1,0,'82010','2022-09-23 10:37:44','82010','2022-09-23 11:12:27',NULL,NULL),(9,'mnuidprocdatamasterbudgetaccount','D',7,'GL Account SAP','Procurement->Data Master->Budget Account','','obj_data','data_budacc','default','_self',NULL,2,'ALL',1,1,0,'82010','2022-09-23 10:59:06','82010','2022-09-26 06:28:04',NULL,NULL),(10,'mnuidprocdatamaster','D',7,'Vendor Info','Procurement->Data Master->Vendor Info','','obj_data','data_vndr','default','_self',NULL,3,'ALL',1,1,0,'82010','2022-09-23 10:59:47','82010','2022-09-23 11:44:28',NULL,NULL),(11,'mnuidprocdatamastercapexinfo','D',7,'Budget Capex Info','Procurement->Data Master->Budget Capex Info','','obj_data','data_cpxinfo','default','_self',NULL,4,'ALL',1,1,0,'82010','2022-09-23 11:05:36','82010','2022-09-23 11:19:10',NULL,NULL),(12,'mnuidproctransaction','H',0,'Transaction','Procurement->Transaction','','','','','',NULL,3,'ALL',1,1,0,'82010','2022-09-26 06:30:35',NULL,NULL,NULL,NULL),(13,'mnuidproctransactionnewbudget','D',12,'New Budget','Procurement->Transaction->New Budget','','obj_tra','tra_newbdgt','default','_self',NULL,1,'ALL',1,1,0,'82010','2022-09-26 06:42:39',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_treemenu` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_usergroup` +-- + +DROP TABLE IF EXISTS `tbl_usergroup`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_usergroup` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `groupuser` varchar(5) DEFAULT NULL, + `keterangan` varchar(50) DEFAULT NULL, + `isdeleted` smallint(6) DEFAULT '0', + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndxusergroup` (`groupuser`) +) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_usergroup` +-- + +LOCK TABLES `tbl_usergroup` WRITE; +/*!40000 ALTER TABLE `tbl_usergroup` DISABLE KEYS */; +INSERT INTO `tbl_usergroup` VALUES (1,'ALL','All user',0,'99999','2014-12-18 00:00:00',NULL,NULL,NULL,NULL),(2,'KSR','Kasir',0,'9999','2014-12-18 00:00:00',NULL,NULL,NULL,NULL),(3,'KEU','Keuangan',0,'9999','2014-12-18 00:00:00',NULL,NULL,NULL,NULL),(4,'ADM','Administrator',0,'9999','2014-12-18 00:00:00',NULL,NULL,NULL,NULL),(5,'SU','Super User',0,'9999','2014-12-18 00:00:00',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_usergroup` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `tbl_vendorinfo` +-- + +DROP TABLE IF EXISTS `tbl_vendorinfo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tbl_vendorinfo` ( + `_idx` int(11) NOT NULL AUTO_INCREMENT, + `vendorid` varchar(30) DEFAULT NULL COMMENT 'Vendor ID', + `vendorname` varchar(100) DEFAULT NULL COMMENT 'Vendor Name', + `picname` varchar(100) DEFAULT NULL COMMENT 'Pic Name', + `address` varchar(200) DEFAULT NULL COMMENT 'Address Vendor', + `telp` varchar(30) DEFAULT NULL COMMENT 'Telp', + `location` varchar(100) DEFAULT NULL COMMENT 'Location', + `bussinessgroup` varchar(100) DEFAULT NULL COMMENT 'Bussiness Group', + `isactivated` smallint(6) DEFAULT NULL COMMENT 'Activated', + `isdeleted` smallint(6) DEFAULT '0', + `remarkdeleted` varchar(100) DEFAULT NULL, + `iby` varchar(30) DEFAULT NULL, + `idt` datetime DEFAULT NULL, + `uby` varchar(30) DEFAULT NULL, + `udt` datetime DEFAULT NULL, + `dby` varchar(30) DEFAULT NULL, + `ddt` datetime DEFAULT NULL, + PRIMARY KEY (`_idx`), + KEY `ndx_tbl_vendorinfo` (`_idx`,`isdeleted`,`idt`,`udt`,`ddt`) +) ENGINE=InnoDB AUTO_INCREMENT=289 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `tbl_vendorinfo` +-- + +LOCK TABLES `tbl_vendorinfo` WRITE; +/*!40000 ALTER TABLE `tbl_vendorinfo` DISABLE KEYS */; +INSERT INTO `tbl_vendorinfo` VALUES (1,'TL10000000','PT.INFOMEDIA NUSANTARA','-','Jl. RS. Fatmawati Raya No.77-81, RT.6/RW.5, Cipete Utara, Kec. Kby. Baru, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta','081111500551','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:44','93003','2024-08-21 10:53:39',NULL,NULL),(2,'TL10000001','TELKOMSEL',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:44',NULL,NULL,NULL,NULL),(3,'TL10000002','MITRATEL (CAPEX)','-','Telkom Landmark Tower, Lantai 25-27\nJl. Gatot Subroto Kav. 52 Jakarta, 12710, Indonesia ','(021) 2793 3363','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:44','93003','2024-08-21 11:03:53',NULL,NULL),(4,'TL10000003','PT. SIGMA METRASYS SOLUTI','-','Menara Dea Tower 2 Lt. 2 Unit 202 Kav.E4.3 No 1-2 Jl. Mega Kuningan Barat III, RT.5/RW2, Kuningan Barat Kecamatan Setiabudi','02157958175','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:44','93003','2024-08-21 10:59:21',NULL,NULL),(5,'TL10000004','TELIN SG','-','1 HarbourFront Place, #03-12 HarbourFront Tower One, Singapore 098633 · ','+6569028088 ·','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:44','93003','2024-08-21 10:59:53',NULL,NULL),(6,'TL10000005','PT.TELIN JAKARTA (CAPEX)','-','Gatot Subroto kav. 52 Jakarta Selatan 12710 - Indonesia','02129952300','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:44','93003','2024-08-21 11:00:37',NULL,NULL),(7,'TL10000006','PT.TELIN JAKARTA','-','Gatot Subroto kav. 52 Jakarta Selatan 12710 - Indonesia','02129952300','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:45','93003','2024-08-21 11:00:51',NULL,NULL),(8,'TL10000007','MULTIMEDIA NUSANTARA SATE','-','Jendral Gatot Subroto Lantai 41. Jakarta Selatan 12710','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:45','93003','2024-08-21 11:02:55',NULL,NULL),(9,'TL10000008','TELIN HONGKONG','-','No.9-15 Yee Wo Street, Hong Kong, Causeway Bay Hong Kong','+85228901230','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:45','93003','2024-08-21 11:03:27',NULL,NULL),(10,'TL10000009','PT.MITRATEL (OPEX)','-','Telkom Landmark Tower, Lantai 25-27\nJl. Gatot Subroto Kav. 52 Jakarta, 12710, Indonesia ','(021) 2793 3363','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:45','93003','2024-08-21 11:04:18',NULL,NULL),(11,'TL10000010','PT. TELIN JAKARTA','-','-','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:45','93003','2024-08-21 11:06:05',NULL,NULL),(12,'TL10000011','PT MELON INDONESIA','-',' Telkom Landmark Tower Lt.45,\nJl. Taman Widya Chandra,\nRT.6/RW.1,\nJakarta Selatan 12710 ','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:45','93003','2024-08-21 11:06:13',NULL,NULL),(13,'TL10000013','PT.PRIME PACIFIC GROUP','-','GD. ONE PACIFIC PLACE LT. 15 SUITE 1501, JL. JEND. SUDIRMAN KAV. 52-53 JAKARTA SELATAN ','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:45','93003','2024-08-21 11:07:09',NULL,NULL),(14,'TL10000014','PT. POWERSOFT GLOBAL ENER','-','Via Enrico Conti, 5\n50018 Scandicci (FI) – Italy','+39 055 735 0230','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:45','93003','2024-08-21 11:08:47',NULL,NULL),(15,'TL10000015','DOLFIN UNIPESSOAL LDA (CA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:45',NULL,NULL,NULL,NULL),(16,'TL10000016','PT GIESECKE & DEVRIENT IN',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:46',NULL,NULL,NULL,NULL),(17,'TL10000017','PT REIGANINDA (SPHERE COM',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:46',NULL,NULL,NULL,NULL),(18,'TL10000018','PT KIRANA SOLUSI UTAMA (K',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:46',NULL,NULL,NULL,NULL),(19,'TL10000019','PT.TELKOM INDONESIA (OPEX',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:46',NULL,NULL,NULL,NULL),(20,'TL10000020','PT.TELEKOMUNIKASI INDONES',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:46',NULL,NULL,NULL,NULL),(21,'TL10000021','PT. TELKOM AKSES','-','l. Letjen S. Parman No.Kav 8, RT.1/RW.7, Tomang,\nKec. Grogol petamburan, Kota Jakarta Barat, Daerah Khusus Ibukota Jakarta 11440','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:46','93003','2024-08-21 11:12:53',NULL,NULL),(22,'TL10000022','TELEMOR','-','Viettel Timor, Unipessoal, Lda. CBD10, Timor Plaza, Dili, Timor-Leste ','+670 76188188','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:46','93003','2024-08-21 11:22:04',NULL,NULL),(23,'TL10000023','PT TEBUIRENG TELECOM','-','JL. RAYA BOGOR KM.21 NO.17/18 ','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:46','93003','2024-08-21 11:23:50',NULL,NULL),(24,'TL10000024','CAPEX PROCUREMENT TRADE P',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:46',NULL,NULL,NULL,NULL),(25,'TL10000026','PT FINNET INDONESIA','-','Telkom Landmark Tower lt 28\nJl.Jendral Gatot Subroto kav. 52\nJakarta Selatan, 12710\nIndonesia ','0811-1445-770','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:46','93003','2024-08-21 11:24:51',NULL,NULL),(26,'TL10000027','PT. GRAHA INFORMATIKA NUS','-','GRATIKA Office\nJl. Palmerah Barat No. 48\nJakarta 11480 - Indonesia','+62 21 532 5432 / +62 21 507 1','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:46','93003','2024-08-21 11:25:39',NULL,NULL),(27,'TL10000028','TELKOM ENTERPRISE',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:47',NULL,NULL,NULL,NULL),(28,'TL10000029','TELKOM UNIVERSITY','-','Gedung Bangkit Telkom University, Telekomunikasi Street, Terusan Buah Batu Indonesia 40257, Bandung, Indonesia ','(022) 7566456','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:47','93003','2024-08-21 11:26:37',NULL,NULL),(29,'TL10000030','PT. TELKOM (DWS)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:47',NULL,NULL,NULL,NULL),(30,'TL11000001','ELECTRICIDADE DE TIMOR LE','-','1⁰ Andar Edifício de Caicoli,\nAv.Mártires da Pátria\nDili, Timor-Leste\n','8001000','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:47','93003','2024-08-21 11:32:56',NULL,NULL),(31,'TL11000002','DIRECCAO NACIONAL DE RECE',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:47',NULL,NULL,NULL,NULL),(32,'TL20000001','IMPREST FUND',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:47',NULL,NULL,NULL,NULL),(33,'TL20000002','VENDOR PENGHASILAN KARYAW',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:47',NULL,NULL,NULL,NULL),(34,'TL20000003','PT POWERSOFT GLOBAL ENERG',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:47',NULL,NULL,NULL,NULL),(35,'TL20000004','VENDOR POTONGA PAYROLL',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:47',NULL,NULL,NULL,NULL),(36,'TL20000005','VENDOR DNRD PAJAK PENGHAS',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:48',NULL,NULL,NULL,NULL),(37,'TL20000006','VENDOR DNRD PAJAK PEMOTON',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:48',NULL,NULL,NULL,NULL),(38,'TL20000007','SALARY DEDUCTION',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:48',NULL,NULL,NULL,NULL),(39,'TL20000008','IMPREST FUND',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:48',NULL,NULL,NULL,NULL),(40,'TL20000009','CAPEX-OTHERS PAYABLE',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:48',NULL,NULL,NULL,NULL),(41,'TL20000010','VENDOR DNRD PAJAK SERVICE',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:48',NULL,NULL,NULL,NULL),(42,'TL30000001','DILI DEVELOPMENT COMPANY','-','Comoro, Av. Pres. Nicolau Lobato, Díli','7752 9888','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:48','93003','2024-08-21 11:42:19',NULL,NULL),(43,'TL30000002','GARDAMOR PROTECTIVE SERVI','-','Av. Pres. Nicolau Lobato, Díli','7751 9999','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:48','93003','2024-08-21 11:41:45',NULL,NULL),(44,'TL30000003','NELCES UNIPESSOAL,LDA','-','MARTIRES DA PATRIA, DILI ','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:48','93003','2024-08-21 11:35:20',NULL,NULL),(45,'TL30000004','INSTANTSHOP (TM)','-','\nTimor Plaza Level 2 #276\n Dili, Timor-Leste ','(+670) 7729 2200','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:49','93003','2024-08-21 11:37:51',NULL,NULL),(46,'TL30000005','CONSULTADORIA DE LEI',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:49',NULL,NULL,NULL,NULL),(47,'TL30000006','ESPERANCA TIMOR OAN, LDA','-','Rua Cina Rate Taibessi, Dili Timor Leste ','7233692','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:49','93003','2024-08-21 11:41:03',NULL,NULL),(48,'TL30000007','PLUS ONE UNIPESSOAL LDA','-','LISBUTAK, MANLEU ANA-DILI ','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:49','93003','2024-08-21 11:38:37',NULL,NULL),(49,'TL30000008','G & S SANTOS LIVING, LDA.','-','Sao jose Hudilaran, bairopite. Aimutin, Dili',' 7301 0790','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:49','93003','2024-08-21 11:39:32',NULL,NULL),(50,'TL30000009','PT. ERICSSON INDONESIA (','-','Pondok Indah Mall Phase 3, Office Tower 5, JL. Sultan Iskandar Muda, V - TA, 8th floor, RT.1/RW.16, Pondok Pinang, South Jakarta City, Jakarta 12310, Indonesia','+62 21 80829000','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:49','93003','2024-08-21 11:40:17',NULL,NULL),(51,'TL30000010','CASCADIANT (CAPEX)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:49',NULL,NULL,NULL,NULL),(52,'TL30000011','ELITE COMPUTER',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:49',NULL,NULL,NULL,NULL),(53,'TL30000012','JL VILLA','-','Comoro, Aimutin Dili','331 0096','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:49','93003','2024-08-21 13:50:14',NULL,NULL),(54,'TL30000013','SELULAR MEDIA TIMOR UNIPE',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:49',NULL,NULL,NULL,NULL),(55,'TL30000014','HOTEL TIMOR','-','R. António Heitor, Díli','332 4502','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:50','93003','2024-08-21 13:51:08',NULL,NULL),(56,'TL30000015','CASCADIANT (OPEX)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:50',NULL,NULL,NULL,NULL),(57,'TL30000016','ERICSSON (OPEX)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:50',NULL,NULL,NULL,NULL),(58,'TL30000017','PT. ERICSSON AB (CAPEX)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:50',NULL,NULL,NULL,NULL),(59,'TL30000018','PT.DSB SOLUSI',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:50',NULL,NULL,NULL,NULL),(60,'TL30000019','WAHYU KARTUMASINDO INTERN',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:50',NULL,NULL,NULL,NULL),(61,'TL30000020','VIETEL','-','TImor Plaza, DIli','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:50','93003','2024-08-22 13:43:15',NULL,NULL),(62,'TL30000021','SYNIVERSE TECHNOLOGIES SA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:50',NULL,NULL,NULL,NULL),(63,'TL30000022','PT.ADHI NATA KARYA','-','l. Pulobuaran III, Jatinegara, Kec. Cakung, Jakarta, Daerah Khusus Ibukota Jakarta 13920, Indonesia','+62 21 46823690','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:50','93003','2024-08-21 11:43:55',NULL,NULL),(64,'TL30000023','TIMOR POST, LDA','-','Dom Boa Bentura, Nu 14, Díli',' 332 1696','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:50','93003','2024-08-21 11:44:28',NULL,NULL),(65,'TL30000024','PT.GRANARY REKA CIPTA','-','Jl. Parakan Asri No.35, Batununggal, Kec. Bandung Kidul, Kota Bandung, Jawa Barat 40266, Indonesia',' +62 22 7507235','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:51','93003','2024-08-21 11:44:58',NULL,NULL),(66,'TL30000025','RADIO RAKAMBIA','-','R. Mesquita Annur, Díli','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:51','93003','2024-08-21 11:45:24',NULL,NULL),(67,'TL30000026','ARU BAKERY,CAFE&VILLA,LDA','-','Colmera, Dili','331 1239','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:51','93003','2024-08-21 11:45:54',NULL,NULL),(68,'TL30000027','INTEGRA LDA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:51',NULL,NULL,NULL,NULL),(69,'TL30000028','HORAS TORPANA','-','Graha Mampang 3rd floor suite 305\nJl. Mampang Prapatan Raya Kav 100,\nJakarta Selatan 12790\n','+62 21 7945333 ','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:51','93003','2024-08-22 13:42:52',NULL,NULL),(70,'TL30000029','PT FASTINDO GLOBAL UTAMA','-','\n JL.PALEM I RT 008/RW 03 KEL.PETUKANGAN UTARA, ','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:51','93003','2024-08-21 11:47:08',NULL,NULL),(71,'TL30000030','TIMOR TELEKOM',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:51',NULL,NULL,NULL,NULL),(72,'TL30000031','TIMOR VEHICLES',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:51',NULL,NULL,NULL,NULL),(73,'TL30000032','AEROPORTO INTERNACIONAL',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:51',NULL,NULL,NULL,NULL),(74,'TL30000033','THREE STAR UNIPESSOAL LDA','-','Rua 15 October Audian Dili','7333338 ','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:52','93003','2024-08-21 11:47:44',NULL,NULL),(75,'TL30000034','D & N MOVERS UNIPESSOAL L','-','Beto Timur, Dili','7747 0203','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:52','93003','2024-08-21 11:48:20',NULL,NULL),(76,'TL30000035','GLOBE TELECOM, INC',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:52',NULL,NULL,NULL,NULL),(77,'TL30000036','PERFORMANCE, LDA','-','Landmark Plaza 2nd Floor , Dili,','7411 545 ','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:52','93003','2024-08-21 11:49:22',NULL,NULL),(78,'TL30000037','MAX AUTO',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:52',NULL,NULL,NULL,NULL),(79,'TL30000038','TIMOR SUGAR TRAVEL','-','Rua, Av. Pres. Nicolau Lobato, Díli','7713 1939','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:52','93003','2024-08-21 11:50:43',NULL,NULL),(80,'TL30000039','LEADER LDA','-','RUA PRESIDENTE NICOLAU LOBATO, COMORO, DILI,TIMOR LESTE,','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:52','93003','2024-08-21 11:51:13',NULL,NULL),(81,'TL30000040','BOA VENTURA','-','Rua Belarmino Lobo , Dili ',' 7270222','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:52','93003','2024-08-21 11:51:48',NULL,NULL),(82,'TL30000041','ANGELY SUPPLY UNIPESSOAL','-','Aimutin, Dili','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:52','93003','2024-08-21 11:52:31',NULL,NULL),(83,'TL30000042','HENRIQUE MARTINS',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:52',NULL,NULL,NULL,NULL),(84,'TL30000043','DIGICEL (TL), LDA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:53',NULL,NULL,NULL,NULL),(85,'TL30000044','PT. GRAHA INFORMATIKA NUS','-','GRATIKA Office\nJl. Palmerah Barat No. 48\nJakarta 11480 - Indonesia','+62 21 532 5432 / +62 21 507 1','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:53','93003','2024-08-21 11:53:36',NULL,NULL),(86,'TL30000045','PT.GEMANUSA SENTRA TEKNOL','-','Tangcity Business Park, Jl. Jenderal Sudirman No.1 D25, Kec. Tangerang, Kota Tangerang, Banten 15117, Indonesia','+62 21 29239669','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:53','93003','2024-08-21 11:54:02',NULL,NULL),(87,'TL30000046','CV. GLOBAL UTAMA COMMUNIC',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:53',NULL,NULL,NULL,NULL),(88,'TL30000047','TELKOMEDIKA','-','Jl. Letjen Suprapto No.17, RT.9/RW.7, Cemp. Putih Tim., Kec. Cemp. Putih, Kota Jakarta Pusat, Daerah Khusus Ibukota Jakarta 10510','+6281111500115','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:53','93003','2024-08-21 11:55:47',NULL,NULL),(89,'TL30000048','SHAH GARDEN','-','Rua Villa de Maumeta, Atauro Island, Dili, Timor - Leste.','(+670) 7748 7301 / 7758 6479 ','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:53','93003','2024-08-21 11:57:01',NULL,NULL),(90,'TL30000049','MARIA TERESA LAY LENGO',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:53',NULL,NULL,NULL,NULL),(91,'TL30000050','SAHABAT TIMOR','-','Jacinto Candido, Dili, Timor oriental','+67077234877 ','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:53','93003','2024-08-21 13:49:11',NULL,NULL),(92,'TL30000051','PT. ASURANSI JIWA SINARM',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:54',NULL,NULL,NULL,NULL),(93,'TL30000052','CASCADIANT (CAP LEASED)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:54',NULL,NULL,NULL,NULL),(94,'TL30000053','CASCADIANT (CAP LEASED)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:54',NULL,NULL,NULL,NULL),(95,'TL30000054','THAWN (AWN)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:54',NULL,NULL,NULL,NULL),(96,'TL30000055','CSL (HKGTC)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:54',NULL,NULL,NULL,NULL),(97,'TL30000056','GLOBE (PHLGT)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:54',NULL,NULL,NULL,NULL),(98,'TL30000057','CASCADIANT (CAPEX)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:54',NULL,NULL,NULL,NULL),(99,'TL30000058','CASCADIANT (CAPEX)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:54',NULL,NULL,NULL,NULL),(100,'TL30000059','CASCADIANT (CAPEX) - NON',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:54',NULL,NULL,NULL,NULL),(101,'TL30000060','UD. PALMA MTC','-','Jl. Presidente Nicolau Lobato, Dili, Timor Leste ','3321132','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:55','93003','2024-08-21 13:52:21',NULL,NULL),(102,'TL30000061','CASCADIANT (CAPEX)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:55',NULL,NULL,NULL,NULL),(103,'TL30000063','HOTEL RAMELAU',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:55',NULL,NULL,NULL,NULL),(104,'TL30000064','AIS (THAAS)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:55',NULL,NULL,NULL,NULL),(105,'TL30000065','SINGTEL (SGSPT)','-','Singapore','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:55','93003','2024-08-22 13:48:07',NULL,NULL),(106,'TL30000066','PT.TELKOM INDONESIA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:55',NULL,NULL,NULL,NULL),(107,'TL30000067','PT TRICOMINDO CIPTA MANDI','-','Jl. Kotabaru Raya No.27, Ciateul, Kec. Regol, Kota Bandung, Jawa Barat 40252, Indonesia','+62 22 5200994','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:55','93003','2024-08-21 13:53:09',NULL,NULL),(108,'TL30000068','BEACH GARDEN HOTEL','-','Dili','331 5888','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:55','93003','2024-08-21 13:53:38',NULL,NULL),(109,'TL30000069','OPTUS (AUSOP)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:55',NULL,NULL,NULL,NULL),(110,'TL30000070','VMS VIETNAM MOBILE TELECO','-','95 Cach Mang Thang Tam, Ben Thanh Ward, District 1, HCMC','84.28.39256414','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:56','93003','2024-08-21 13:54:40',NULL,NULL),(111,'TL30000071','VERTURA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:56',NULL,NULL,NULL,NULL),(112,'TL30000072','PT. TATA KELOLA KOMUNIKA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:56',NULL,NULL,NULL,NULL),(113,'TL30000073','INVEST PEOPLE','-','Rua Sebastiao no.4, Colmera (Shooping centre building 3rd floor c7 ), Dili - Timor-Leste','+670 73 49 71 81 ','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:56','93003','2024-08-22 13:49:18',NULL,NULL),(114,'TL30000074','KOPERASI KARYAWAN INTERCA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:56',NULL,NULL,NULL,NULL),(115,'TL30000075','MAXIS (MYSBC)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:56',NULL,NULL,NULL,NULL),(116,'TL30000076','LOROSAE ENGLISH LANGUAGE','-','Dili','7748 7232','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:56','93003','2024-08-22 13:49:56',NULL,NULL),(117,'TL30000077','BRIDGE MOBILE',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:56',NULL,NULL,NULL,NULL),(118,'TL30000078','ASTROCOM',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:56',NULL,NULL,NULL,NULL),(119,'TL30000079','BANDUNG TECHNO PARK','-','Jl. Telekomunikasi No.1, Sukapura, Kec. Dayeuhkolot, Kabupaten Bandung, Jawa Barat 40257, Indonesia','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:56','93003','2024-08-21 13:56:46',NULL,NULL),(120,'TL30000080','GSM ASSOCIATION',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:57',NULL,NULL,NULL,NULL),(121,'TL30000081','ASTROCOM',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:57',NULL,NULL,NULL,NULL),(122,'TL30000082','KARYA AGUNG UNIPESSOAL LD','-','RUA. MESQUITA ANNUR CAMPO ALOR, DILI ','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:57','93003','2024-08-21 13:58:30',NULL,NULL),(123,'TL30000083','KT CORPORATION (KORKF)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:57',NULL,NULL,NULL,NULL),(124,'TL30000084','PANALASA LDA (OPEX)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:57',NULL,NULL,NULL,NULL),(125,'TL30000085','PT.SARANA JANESIA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:57',NULL,NULL,NULL,NULL),(126,'TL30000086','CV. CIPTA MEDIA SOLUSINDO','-','Denpasar, Bali','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:57','93003','2024-08-22 13:55:41',NULL,NULL),(127,'TL30000087','CRA LAW FIRM',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:57',NULL,NULL,NULL,NULL),(128,'TL30000088','TAIWAN MOBILE',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:57',NULL,NULL,NULL,NULL),(129,'TL30000089','U MOBILE SDN BHD',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:57',NULL,NULL,NULL,NULL),(130,'TL30000090','SAP FRANCE S.A.',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:58',NULL,NULL,NULL,NULL),(131,'TL30000091','PT.LAPIITB','-','Gedung B ITB, Jl. Ganesa No.15-B, Lb. Siliwangi, Kecamatan Coblong, Kota Bandung, Jawa Barat 40132, Indonesia','+62 22 2534178','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:58','93003','2024-08-21 13:59:30',NULL,NULL),(132,'TL30000092','DELTA TETRAGON KONSULTAN','-','Jl. Batu Raden X No.4, Mekarjaya, Kec. Rancasari, Kota Bandung, Jawa Barat 40292, Indonesia','+62 22 7567930','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:58','93003','2024-08-21 14:00:11',NULL,NULL),(133,'TL30000093','HUTCHISION 3 (IDN89)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:58',NULL,NULL,NULL,NULL),(134,'TL30000094','SK TELECOM (KORSK)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:58',NULL,NULL,NULL,NULL),(135,'TL30000095','ADVANCED INFO SERVICE PUB',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:58',NULL,NULL,NULL,NULL),(136,'TL30000096','ADVANCED WIRELESS NETWORK',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:58',NULL,NULL,NULL,NULL),(137,'TL30000097','COMPANHIA TELECOMUNICACOE',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:58',NULL,NULL,NULL,NULL),(138,'TL30000098','ELISA EESTI AS',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:58',NULL,NULL,NULL,NULL),(139,'TL30000099','PT. HUTCHISON 3 INDONESIA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:59',NULL,NULL,NULL,NULL),(140,'TL30000100','RADIO E TELEVISAUN DE TIM',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:59',NULL,NULL,NULL,NULL),(141,'TL30000101','BARASH COMMUNICATION TECH',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:59',NULL,NULL,NULL,NULL),(142,'TL30000102','MOBILE TELESYSTEMS',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:59',NULL,NULL,NULL,NULL),(143,'TL30000103','NTT-DOCOMO,INC (JPNDO)','-','Chiyoda City, Tokyo, Japan','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:59','93003','2024-08-22 13:56:29',NULL,NULL),(144,'TL30000104','PT ASTRA GRAPHIA INFORMAT',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:59',NULL,NULL,NULL,NULL),(145,'TL30000105','NATURA CONTRUCTION UNIPES',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:59',NULL,NULL,NULL,NULL),(146,'TL30000106','ASSOCIACAO',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:59',NULL,NULL,NULL,NULL),(147,'TL30000107','KONNEKTO','-','Av. Pres. Nicolau Lobato, Díli','7361 5174','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:59','93003','2024-08-22 13:58:31',NULL,NULL),(148,'TL30000108','TOLL TIMOR LESTE',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:28:59',NULL,NULL,NULL,NULL),(149,'TL30000109','THE UNITED NATIONS FUND F',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:00',NULL,NULL,NULL,NULL),(150,'TL30000110','SEPFOPE CAICOLI (ADB PMU-','-','Caicoli, Dili','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:00','93003','2024-08-22 13:57:51',NULL,NULL),(151,'TL30000111','ICFP-BAUCAU-DIA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:00',NULL,NULL,NULL,NULL),(152,'TL30000112','DIT OECUSSE 3G CORPORATE',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:00',NULL,NULL,NULL,NULL),(153,'TL30000113','SMARTONE MOBILE COMMUNICA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:00',NULL,NULL,NULL,NULL),(154,'TL30000114','VODAFONE HUTCHISON AUSTRA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:00',NULL,NULL,NULL,NULL),(155,'TL30000115','EUSEBIO GUTERES',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:00',NULL,NULL,NULL,NULL),(156,'TL30000116','KONNEKTO LDA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:00',NULL,NULL,NULL,NULL),(157,'TL30000117','BICS',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:00',NULL,NULL,NULL,NULL),(158,'TL30000118','CV. ASA WAHANA REKSA','-','Jl. Mustang No. 4 Kota Surabaya Jawa Timur Indonesia','031-8555998','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:00','93003','2024-08-21 14:02:22',NULL,NULL),(159,'TL30000119','PT. POWERSOFT GLOBAL ( OP',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:00',NULL,NULL,NULL,NULL),(160,'TL30000120','CAPEX PROCUREMENT TRADE P',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:01',NULL,NULL,NULL,NULL),(161,'TL30000121','PT. GRAHA INFORMATIKA NUS','-','GRATIKA Office\nJl. Palmerah Barat No. 48\nJakarta 11480 - Indonesia','+62 21 532 5432 / +62 21 507 1','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:01','93003','2024-08-22 14:15:05',NULL,NULL),(162,'TL30000122','DOLFIN UNIPESSOAL LDA (OP','-',' RUA. SAU, MANATUTO ','3311225 ','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:01','93003','2024-08-21 14:03:10',NULL,NULL),(163,'TL30000123','XL AXIATA (IDNEX)','-','XL Axiata Tower, Jl. HR Rasuna Said X5. Kav.11 – 12, Kuningan Timur, Setiabudi, Jakarta Selatan','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:01','93003','2024-08-22 14:22:18',NULL,NULL),(164,'TL30000124','PT. DYNAMIC ELEMENT','-','PONDOK INDAH OFFICE TOWER 3 LANTAI 17 JLN. SULTAN ISKANDAR MUDA KAV. V-TA ','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:01','93003','2024-08-21 14:04:36',NULL,NULL),(165,'TL30000125','PT.DYNAMIC ELEMENT',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:01',NULL,NULL,NULL,NULL),(166,'TL30000126','DIARIO ANIBAL BELO',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:01',NULL,NULL,NULL,NULL),(167,'TL30000127','ARIES UNIPERSOAL, LDA','-',' RUA. BAIRRO DOS GRILOS, DILI ','- ','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:01','93003','2024-08-21 14:05:09',NULL,NULL),(168,'TL30000128','PT. WESTCON GROUP',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:02',NULL,NULL,NULL,NULL),(169,'TL30000129','CIRCLE B UNIPESOAL, LDA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:02',NULL,NULL,NULL,NULL),(170,'TL30000130','SYNIVERSE TECH. REF CHEC1',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:02',NULL,NULL,NULL,NULL),(171,'TL30000131','KPN B.V. (NLDPT)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:02',NULL,NULL,NULL,NULL),(172,'TL30000132','TDC A/S (DNKTD)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:02',NULL,NULL,NULL,NULL),(173,'TL30000133','APNIC PTY LTD',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:02',NULL,NULL,NULL,NULL),(174,'TL30000134','PT. NEURONWORKS',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:02',NULL,NULL,NULL,NULL),(175,'TL30000135','BHARTI AIRTEL LTD. ANDHRA','-','India','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:02','93003','2024-08-22 14:23:35',NULL,NULL),(176,'TL30000136','BHARTI AIRTEL LTD. CHENNA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:03',NULL,NULL,NULL,NULL),(177,'TL30000137','BHARTI AIRTEL LTD. KARNAT',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:03',NULL,NULL,NULL,NULL),(178,'TL30000138','BHARTI AIRTEL LTD. KERALA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:03',NULL,NULL,NULL,NULL),(179,'TL30000139','BHARTI AIRTEL LTD. TAMIL',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:03',NULL,NULL,NULL,NULL),(180,'TL30000140','JPNDO-TLSTC-GSM',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:03',NULL,NULL,NULL,NULL),(181,'TL30000141','DST COMMUNICATIONS BRUNEI',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:03',NULL,NULL,NULL,NULL),(182,'TL30000142','YANG 88 SHOP',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:03',NULL,NULL,NULL,NULL),(183,'TL30000143','BIAMALI INSTITUTE OF SCIE',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:04',NULL,NULL,NULL,NULL),(184,'TL30000144','PT.DATA SYSTEM COMPUTINDO',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:04',NULL,NULL,NULL,NULL),(185,'TL30000145','BHARTI AIRTEL LTD. PUNE (',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:04',NULL,NULL,NULL,NULL),(186,'TL30000146','TELECOM ITALIA S.P.A. (IT',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:04',NULL,NULL,NULL,NULL),(187,'TL30000147','VIVA BAHRAIN (BHRST)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:04',NULL,NULL,NULL,NULL),(188,'TL30000148','PT.DATASYSTEM SOLUSINDO -',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:04',NULL,NULL,NULL,NULL),(189,'TL30000149','PT. DSB SOLUSI (OPEX)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:04',NULL,NULL,NULL,NULL),(190,'TL30000150','INTEGRA LDA (OPEX)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:04',NULL,NULL,NULL,NULL),(191,'TL30000151','PT. ASIAKOMNET MULTIMEDIA','-','Jl. Kramat Raya No.140, RT.1/RW.1, Kenari, Kec. Senen, Kota Jakarta Pusat, Daerah Khusus Ibukota Jakarta 10430, Indonesia',' +62 21 31900504','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:04','93003','2024-08-21 14:07:12',NULL,NULL),(192,'TL30000152','NATIONAL INSURANCE TIMOR','-','R. Dom Aleixo Corte Real, Díli','332 3333','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:04','93003','2024-08-21 14:07:45',NULL,NULL),(193,'TL30000153','HONG KONG TELECOMMUNICATI',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:04',NULL,NULL,NULL,NULL),(194,'TL30000154','UNIDAD DE NEGOCIOS M?IL D',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:05',NULL,NULL,NULL,NULL),(195,'TL30000155','CV MATA AIR VISUAL',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:05',NULL,NULL,NULL,NULL),(196,'TL30000156','BHARTI AIRTEL LTD. DELHI',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:05',NULL,NULL,NULL,NULL),(197,'TL30000157','CUBACEL (CUB01)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:05',NULL,NULL,NULL,NULL),(198,'TL30000158','PT ASTRA GRAPHIA INFORMAT',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:05',NULL,NULL,NULL,NULL),(199,'TL30000159','PANALASA LDA (CAPEX)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:05',NULL,NULL,NULL,NULL),(200,'TL30000160','ALTYN ASYR TM CELL -2 TAD',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:05',NULL,NULL,NULL,NULL),(201,'TL30000161','AVOS DE SUARA TIMOR LOROS','-',' OSINDO I, BAIRO PITE-DILI ','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:05','93003','2024-08-21 14:09:07',NULL,NULL),(202,'TL30000162','BHARTI AIRTEL LTD. PUNJAB',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:05',NULL,NULL,NULL,NULL),(203,'TL30000163','KAP PURWANTONO, SUNGKORO','-','Jl. Jenderal Sudirman No.5, RT.5/RW.3, Senayan, Kec. Kby. Baru, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12190, Indonesia','+62 21 52895000','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:06','93003','2024-08-21 14:09:39',NULL,NULL),(204,'TL30000164','PT DINAMIKA TEKNOLOGI KAR',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:06',NULL,NULL,NULL,NULL),(205,'TL30000165','CIRCLE B UNIPESOAL, LDA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:06',NULL,NULL,NULL,NULL),(206,'TL30000166','ARIES UNIPERSOAL, LDA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:06',NULL,NULL,NULL,NULL),(207,'TL30000167','BHARTI AIRTEL LTD. KOLKAT',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:06',NULL,NULL,NULL,NULL),(208,'TL30000168','AT&T, USA (USACG)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:06',NULL,NULL,NULL,NULL),(209,'TL30000169','CTM (MACCT)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:06',NULL,NULL,NULL,NULL),(210,'TL30000170','MOBIFONE (VNMMO)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:06',NULL,NULL,NULL,NULL),(211,'TL30000171','QATAR TELECOM (OOREDOO)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:07',NULL,NULL,NULL,NULL),(212,'TL30000172','TIMOROMAN',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:07',NULL,NULL,NULL,NULL),(213,'TL30000173','TECHSONA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:07',NULL,NULL,NULL,NULL),(214,'TL30000174','CHINA MOBILE (CHNCT)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:07',NULL,NULL,NULL,NULL),(215,'TL30000175','UNITEL LLC (MNGMN)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:07',NULL,NULL,NULL,NULL),(216,'TL30000176','ELISA EESTI AS (ESTRE)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:07',NULL,NULL,NULL,NULL),(217,'TL30000177','PT.DINI NUSA KUSUMA','-','Jl. Jend. Sudirman kav 52-53 Jl. Scbd, Senayan, Kec. Kby. Baru, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12190, Indonesia','+62 21 7221181','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:07','93003','2024-08-21 14:10:50',NULL,NULL),(218,'TL30000178','BHARTI AIRTEL LTD. MUMBA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:07',NULL,NULL,NULL,NULL),(219,'TL30000179','SWISSCOM (CHEC1)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:08',NULL,NULL,NULL,NULL),(220,'TL30000180','PETTA UNIPESSOAL LDA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:08',NULL,NULL,NULL,NULL),(221,'TL30000181','ETIHAD ETISALAT COMPANY -',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:08',NULL,NULL,NULL,NULL),(222,'TL30000182','TVET',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:08',NULL,NULL,NULL,NULL),(223,'TL30000183','PT. SPEEDUP TECHNOLOGY','-','Jl. Raya No.2, RT.15/RW.8, Pejagalan, Jakarta Utara, Jkt Utara, Daerah Khusus Ibukota Jakarta 14450, Indonesia','+62 21 6618222','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:08','93003','2024-08-21 14:12:04',NULL,NULL),(224,'TL30000187','PSI (PAN SOLUSI INDODATA)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:08',NULL,NULL,NULL,NULL),(225,'TL30000188','DHL','-','Fatuhada, Dili','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:08','93003','2024-08-21 14:12:28',NULL,NULL),(226,'TL30000189','TERRA SANTA','-','Av. Pres. Nicolau Lobato, Díli','7320 2020','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:08','93003','2024-08-21 14:13:01',NULL,NULL),(227,'TL30000190','2 DEGREES (NZLNH)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:08',NULL,NULL,NULL,NULL),(228,'TL30000191','CESLINK GPS SOLUTIONS',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:09',NULL,NULL,NULL,NULL),(229,'TL30000192','LUWANSA BEACH RESORT','-','Macang Tanggar, Komodo, West Manggarai Regency, East Nusa Tenggara, Indonesia','+62 385 2443677','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:09','93003','2024-08-21 14:13:43',NULL,NULL),(230,'TL30000193','MEGA PETROLEUM','-','Fatuhada, Dili','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:09','93003','2024-08-21 14:13:56',NULL,NULL),(231,'TL30000194','MTS PJSC (RUS01)',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:09',NULL,NULL,NULL,NULL),(232,'TL30000195','AQUADIOVISUAL UNIP LDA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:09',NULL,NULL,NULL,NULL),(233,'TL30000196','NOVO TURISMO','-','Avenue Bidau, Lecidere, 670, Díli','331 0005','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:09','93003','2024-08-21 14:33:43',NULL,NULL),(234,'TL30000197','ETO TELCO','-','Sao jose Hudilaran, bairopite. Aimutin, Díli',' 7345 6789','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:09','93003','2024-08-22 14:27:53',NULL,NULL),(235,'TL30000198','DILI AVANCA STATIONERY','-','Bairopitte, Dili','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:09','93003','2024-08-22 14:29:00',NULL,NULL),(236,'TL30000199','TIMOR MEDIA SOLUTION.LDA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:10',NULL,NULL,NULL,NULL),(237,'TL30000200','PERTAMINA INTERNATIONAL T',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:10',NULL,NULL,NULL,NULL),(238,'TL30000201','JAVA CAFE & CATERING SERV',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:10',NULL,NULL,NULL,NULL),(239,'TL30000202','BHARTI AIRTEL LTD. UP WES',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:10',NULL,NULL,NULL,NULL),(240,'TL30000203','BHARTI AIRTEL LTD. HARYAN',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:10',NULL,NULL,NULL,NULL),(241,'TL30000204','MYANMAR POSTS AND TELECOM',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:10',NULL,NULL,NULL,NULL),(242,'TL30000205','LILY HARDI LUBIS',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:10',NULL,NULL,NULL,NULL),(243,'TL30000206','CV BINTANG LAUT ABADI','-','Jalan Rangkah Gang 7 No. 43 – A RT/ RW 004/ 001, Kelurahan Rangkah, Kecamatan Tambak Sari, Surabaya','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:10','93003','2024-08-21 14:35:14',NULL,NULL),(244,'TL30000207','BUSINESS LANDING LTD',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:11',NULL,NULL,NULL,NULL),(245,'TL30000208','GILANG SANGGRAHA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:11',NULL,NULL,NULL,NULL),(246,'TL30000209','PT CITRA MEDIA NUSANTARA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:11',NULL,NULL,NULL,NULL),(247,'TL30000210','POTLOT PRODUCTION UNIPESS',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:11',NULL,NULL,NULL,NULL),(248,'TL30000211','VODAFONE MOBILE SERVICES',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:11',NULL,NULL,NULL,NULL),(249,'TL30000212','JAIME DA SILVA SOARES',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:11',NULL,NULL,NULL,NULL),(250,'TL30000213','PUTI BUNGSU',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:11',NULL,NULL,NULL,NULL),(251,'TL30000214','OLE OLE RESTORANT','-','Timor Plaza, Dili','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:11','93003','2024-08-22 14:30:46',NULL,NULL),(252,'TL30000215','CORREIA BARRADAS ADVOCADO','-','Dili',' (+670) 7307-11','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:11','93003','2024-08-22 14:31:26',NULL,NULL),(253,'TL30000216','ABILIO DE DEUS DE JESUS L',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:11',NULL,NULL,NULL,NULL),(254,'TL30000217','BETA ZETA UNIP LDA.',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:11',NULL,NULL,NULL,NULL),(255,'TL30000218','ENLIGHTEN CONSULTING',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:12',NULL,NULL,NULL,NULL),(256,'TL30000219','AGUSTINHO XIMENES',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:12',NULL,NULL,NULL,NULL),(257,'TL30000220','ALEIXO ANTONIO DIAS',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:12',NULL,NULL,NULL,NULL),(258,'TL30000221','ALFREDO MARCAL',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:12',NULL,NULL,NULL,NULL),(259,'TL30000222','ALEIXO ALVES',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:12',NULL,NULL,NULL,NULL),(260,'TL30000223','THE GREEN RESTO','-','Dili','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:12','93003','2024-08-22 14:32:07',NULL,NULL),(261,'TL30000224','KUNG FOOD RESTAURANTE','-','Dili','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:12','93003','2024-08-22 14:32:54',NULL,NULL),(262,'TL30000225','ETL PUBLIC COMPANY',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:12',NULL,NULL,NULL,NULL),(263,'TL30000226','PT KINARYA SELARAS SOLUSI','-','Gedung Kinarya Selaras, Jl. TB Simatupang No.4 Lt. 3, RT.10/RW.3, Cilandak Tim., Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12430, Indonesia','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:12','93003','2024-08-22 14:33:43',NULL,NULL),(264,'TL30000227','PANALASA CONSTRUCTION','-','Dili','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:13','93003','2024-08-22 14:34:57',NULL,NULL),(265,'TL30000228','MANUEL GOMES DA COSTA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:13',NULL,NULL,NULL,NULL),(266,'TL30000229','DAPUR MAMA','-','Dili','-','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:13','93003','2024-08-22 14:35:53',NULL,NULL),(267,'TL30000230','BUSINESS LANDING LTD',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:13',NULL,NULL,NULL,NULL),(268,'TL30000231','CN ENGINEERING & CONSULTI',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:13',NULL,NULL,NULL,NULL),(269,'TL30000232','CHUNG-HSIN ELECTRIC & MAC',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:13',NULL,NULL,NULL,NULL),(270,'TL30000233','PT SRIWIJAYA AIR','-','Tangerang Indonesia','62 21 29279777','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:13','93003','2024-08-22 14:39:56',NULL,NULL),(271,'TL30000234','ARMINDO GUSMAO',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:13',NULL,NULL,NULL,NULL),(272,'TL30000235','MARIO CELETINO HORNAI BOB',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:13',NULL,NULL,NULL,NULL),(273,'TL30000236','PT.METRA-NET','-','Mulia Business Park, Jl. Letjen M.T. Haryono No.Kav. 58-60 Building J, RT.2/RW.2, Pancoran, Kec. Pancoran, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12780, Indonesia','+62 21 79187250','Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:13','93003','2024-08-21 14:36:30',NULL,NULL),(274,'TL30000237','BRIGIDA MARIA NAPAN',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:14',NULL,NULL,NULL,NULL),(275,'TL30000238','BAKSO LAPANGAN TEMBAK TIM',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:14',NULL,NULL,NULL,NULL),(276,'TL30000239','EDNA MELENA DE J.MENDONCA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:14',NULL,NULL,NULL,NULL),(277,'TL30000240','MADALENA GUSMAO',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:14',NULL,NULL,NULL,NULL),(278,'TL30000241','ABRAO DE JESUS',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:14',NULL,NULL,NULL,NULL),(279,'TL30000242','FRANCISCO SOARES DE CARVA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:14',NULL,NULL,NULL,NULL),(280,'TL30000243','AT&T COMERCIALIZACION MOV',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:14',NULL,NULL,NULL,NULL),(281,'TL30000244','BHARTI AIRTEL LTD. GUJRAT',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:14',NULL,NULL,NULL,NULL),(282,'TL30000245','NAO-HETI UNIDAS UNIPESSOA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:14',NULL,NULL,NULL,NULL),(283,'TL30000246','MEDIACOM IRMAO TIMOR UNIP',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:15',NULL,NULL,NULL,NULL),(284,'TL30000247','MARCELINO DIOGO MARQUES',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:15',NULL,NULL,NULL,NULL),(285,'TL30000248','ORQUIDEA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:15',NULL,NULL,NULL,NULL),(286,'TL30000250','LI ANG TIMOR LDA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:15',NULL,NULL,NULL,NULL),(287,'TL30000251','WILGIO MAINTENANCE LDA',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:15',NULL,NULL,NULL,NULL),(288,'TL30000252','WOODEN8',NULL,NULL,NULL,'Timor','Telco License & Equipment (new)',1,0,NULL,'82010','2024-04-24 10:29:15',NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `tbl_vendorinfo` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Temporary table structure for view `vw_approvedby` +-- + +DROP TABLE IF EXISTS `vw_approvedby`; +/*!50001 DROP VIEW IF EXISTS `vw_approvedby`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_approvedby` ( + `id` tinyint NOT NULL, + `nik` tinyint NOT NULL, + `fullname` tinyint NOT NULL, + `positionname` tinyint NOT NULL, + `bandposition` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_bast` +-- + +DROP TABLE IF EXISTS `vw_bast`; +/*!50001 DROP VIEW IF EXISTS `vw_bast`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_bast` ( + `_idx` tinyint NOT NULL, + `idxpo` tinyint NOT NULL, + `bastnumber` tinyint NOT NULL, + `bastdates` tinyint NOT NULL, + `bastdateshandover` tinyint NOT NULL, + `descriptionhandover` tinyint NOT NULL, + `description` tinyint NOT NULL, + `idxvendor` tinyint NOT NULL, + `vendorcode` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `totalpo` tinyint NOT NULL, + `totaladj` tinyint NOT NULL, + `grandtotal` tinyint NOT NULL, + `povendornumber` tinyint NOT NULL, + `ismergedoc` tinyint NOT NULL, + `mergedate` tinyint NOT NULL, + `filedoctemplate` tinyint NOT NULL, + `filedoc` tinyint NOT NULL, + `filepdf` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL, + `laststatusupdate` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_bastactivitylist` +-- + +DROP TABLE IF EXISTS `vw_bastactivitylist`; +/*!50001 DROP VIEW IF EXISTS `vw_bastactivitylist`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_bastactivitylist` ( + `idxbudget` tinyint NOT NULL, + `idxpo` tinyint NOT NULL, + `activityname` tinyint NOT NULL, + `amount` tinyint NOT NULL, + `targetrfs` tinyint NOT NULL, + `months` tinyint NOT NULL, + `years` tinyint NOT NULL, + `idxpr` tinyint NOT NULL, + `prnumber` tinyint NOT NULL, + `totalpr` tinyint NOT NULL, + `totalactivity` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_bastactivitylistdetail` +-- + +DROP TABLE IF EXISTS `vw_bastactivitylistdetail`; +/*!50001 DROP VIEW IF EXISTS `vw_bastactivitylistdetail`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_bastactivitylistdetail` ( + `idxbudget` tinyint NOT NULL, + `activityname` tinyint NOT NULL, + `amountbudget` tinyint NOT NULL, + `amount` tinyint NOT NULL, + `targetrfs` tinyint NOT NULL, + `months` tinyint NOT NULL, + `years` tinyint NOT NULL, + `idxpo` tinyint NOT NULL, + `idxpr` tinyint NOT NULL, + `idxpoboq` tinyint NOT NULL, + `ponumber` tinyint NOT NULL, + `prnumber` tinyint NOT NULL, + `idxvendor` tinyint NOT NULL, + `vendorid` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `description` tinyint NOT NULL, + `totalpo` tinyint NOT NULL, + `totaladj` tinyint NOT NULL, + `grandtotal` tinyint NOT NULL, + `sp3number` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_bastdetail` +-- + +DROP TABLE IF EXISTS `vw_bastdetail`; +/*!50001 DROP VIEW IF EXISTS `vw_bastdetail`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_bastdetail` ( + `_idx` tinyint NOT NULL, + `idxheader` tinyint NOT NULL, + `idxpoboq` tinyint NOT NULL, + `items` tinyint NOT NULL, + `qty` tinyint NOT NULL, + `units` tinyint NOT NULL, + `poamount` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_basthandoverlist` +-- + +DROP TABLE IF EXISTS `vw_basthandoverlist`; +/*!50001 DROP VIEW IF EXISTS `vw_basthandoverlist`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_basthandoverlist` ( + `_idx` tinyint NOT NULL, + `idxpo` tinyint NOT NULL, + `ponumber` tinyint NOT NULL, + `bastnumber` tinyint NOT NULL, + `bastdates` tinyint NOT NULL, + `bastdateshandover` tinyint NOT NULL, + `descriptionhandover` tinyint NOT NULL, + `filebastdoc` tinyint NOT NULL, + `filebastdocmerge` tinyint NOT NULL, + `filebastpdf` tinyint NOT NULL, + `filehandoversign` tinyint NOT NULL, + `description` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `povendornumber` tinyint NOT NULL, + `totalpo` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_bastmergedoc` +-- + +DROP TABLE IF EXISTS `vw_bastmergedoc`; +/*!50001 DROP VIEW IF EXISTS `vw_bastmergedoc`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_bastmergedoc` ( + `_idx` tinyint NOT NULL, + `idxpo` tinyint NOT NULL, + `bastnumber` tinyint NOT NULL, + `bastdates` tinyint NOT NULL, + `description` tinyint NOT NULL, + `acccode` tinyint NOT NULL, + `deskripsi` tinyint NOT NULL, + `jenisbudget` tinyint NOT NULL, + `judul` tinyint NOT NULL, + `nomorjustifikasi` tinyint NOT NULL, + `division` tinyint NOT NULL, + `nilai` tinyint NOT NULL, + `tanggalpelaksanaan` tinyint NOT NULL, + `useddate` tinyint NOT NULL, + `idxvendor` tinyint NOT NULL, + `vendorcode` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `totalpo` tinyint NOT NULL, + `povendornumber` tinyint NOT NULL, + `ismergedoc` tinyint NOT NULL, + `mergedate` tinyint NOT NULL, + `filedoctemplate` tinyint NOT NULL, + `filedoc` tinyint NOT NULL, + `filepdf` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL, + `laststatusupdate` tinyint NOT NULL, + `iby` tinyint NOT NULL, + `idt` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_budgetcapexinfo` +-- + +DROP TABLE IF EXISTS `vw_budgetcapexinfo`; +/*!50001 DROP VIEW IF EXISTS `vw_budgetcapexinfo`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_budgetcapexinfo` ( + `id` tinyint NOT NULL, + `budgettype` tinyint NOT NULL, + `budgetid` tinyint NOT NULL, + `activityname` tinyint NOT NULL, + `amount` tinyint NOT NULL, + `targetrfs` tinyint NOT NULL, + `months` tinyint NOT NULL, + `years` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_budgetlistbyrequest` +-- + +DROP TABLE IF EXISTS `vw_budgetlistbyrequest`; +/*!50001 DROP VIEW IF EXISTS `vw_budgetlistbyrequest`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_budgetlistbyrequest` ( + `_idx` tinyint NOT NULL, + `budgetid` tinyint NOT NULL, + `idxbudgettype` tinyint NOT NULL, + `budgettype` tinyint NOT NULL, + `activityname` tinyint NOT NULL, + `targetrfs` tinyint NOT NULL, + `amount` tinyint NOT NULL, + `used` tinyint NOT NULL, + `relok` tinyint NOT NULL, + `due` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_budgetrequestdue` +-- + +DROP TABLE IF EXISTS `vw_budgetrequestdue`; +/*!50001 DROP VIEW IF EXISTS `vw_budgetrequestdue`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_budgetrequestdue` ( + `idxbudgetid` tinyint NOT NULL, + `amount` tinyint NOT NULL, + `budgetid` tinyint NOT NULL, + `k` tinyint NOT NULL, + `d` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_checkedby` +-- + +DROP TABLE IF EXISTS `vw_checkedby`; +/*!50001 DROP VIEW IF EXISTS `vw_checkedby`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_checkedby` ( + `id` tinyint NOT NULL, + `nik` tinyint NOT NULL, + `fullname` tinyint NOT NULL, + `positionname` tinyint NOT NULL, + `bandposition` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_coa` +-- + +DROP TABLE IF EXISTS `vw_coa`; +/*!50001 DROP VIEW IF EXISTS `vw_coa`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_coa` ( + `id` tinyint NOT NULL, + `coacode` tinyint NOT NULL, + `coaname` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_costcenter` +-- + +DROP TABLE IF EXISTS `vw_costcenter`; +/*!50001 DROP VIEW IF EXISTS `vw_costcenter`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_costcenter` ( + `id` tinyint NOT NULL, + `costcentercode` tinyint NOT NULL, + `costcentername` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_createdby` +-- + +DROP TABLE IF EXISTS `vw_createdby`; +/*!50001 DROP VIEW IF EXISTS `vw_createdby`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_createdby` ( + `id` tinyint NOT NULL, + `nik` tinyint NOT NULL, + `fullname` tinyint NOT NULL, + `positionname` tinyint NOT NULL, + `bandposition` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_emp_accessibility` +-- + +DROP TABLE IF EXISTS `vw_emp_accessibility`; +/*!50001 DROP VIEW IF EXISTS `vw_emp_accessibility`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_emp_accessibility` ( + `_idx` tinyint NOT NULL, + `sort` tinyint NOT NULL, + `menuid` tinyint NOT NULL, + `menuheader` tinyint NOT NULL, + `menutype` tinyint NOT NULL, + `name` tinyint NOT NULL, + `i18n` tinyint NOT NULL, + `class` tinyint NOT NULL, + `icon` tinyint NOT NULL, + `slug` tinyint NOT NULL, + `url` tinyint NOT NULL, + `isactivated` tinyint NOT NULL, + `nik` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_employee` +-- + +DROP TABLE IF EXISTS `vw_employee`; +/*!50001 DROP VIEW IF EXISTS `vw_employee`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_employee` ( + `id` tinyint NOT NULL, + `nik` tinyint NOT NULL, + `fullname` tinyint NOT NULL, + `positionname` tinyint NOT NULL, + `bandposition` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_financelist` +-- + +DROP TABLE IF EXISTS `vw_financelist`; +/*!50001 DROP VIEW IF EXISTS `vw_financelist`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_financelist` ( + `idxpo` tinyint NOT NULL, + `ponumber` tinyint NOT NULL, + `idxpr` tinyint NOT NULL, + `prnumber` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `justificationnumber` tinyint NOT NULL, + `idxvendor` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `vendorid` tinyint NOT NULL, + `podate` tinyint NOT NULL, + `vper_start` tinyint NOT NULL, + `vper_end` tinyint NOT NULL, + `podescription` tinyint NOT NULL, + `units` tinyint NOT NULL, + `totalqty` tinyint NOT NULL, + `totalpo` tinyint NOT NULL, + `totaladj` tinyint NOT NULL, + `grandtotal` tinyint NOT NULL, + `totalinvoice` tinyint NOT NULL, + `remaininvoice` tinyint NOT NULL, + `payto` tinyint NOT NULL, + `idxpoboq` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_financelistdetail` +-- + +DROP TABLE IF EXISTS `vw_financelistdetail`; +/*!50001 DROP VIEW IF EXISTS `vw_financelistdetail`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_financelistdetail` ( + `idxpo` tinyint NOT NULL, + `idxfinance` tinyint NOT NULL, + `ponumber` tinyint NOT NULL, + `idxpr` tinyint NOT NULL, + `prnumber` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `justificationnumber` tinyint NOT NULL, + `idxvendor` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `vendorid` tinyint NOT NULL, + `podate` tinyint NOT NULL, + `podescription` tinyint NOT NULL, + `units` tinyint NOT NULL, + `totalqty` tinyint NOT NULL, + `totalpo` tinyint NOT NULL, + `totaladj` tinyint NOT NULL, + `grandtotal` tinyint NOT NULL, + `paymentdate` tinyint NOT NULL, + `totalinvoice` tinyint NOT NULL, + `remaininvoice` tinyint NOT NULL, + `contractnumber` tinyint NOT NULL, + `percentpay` tinyint NOT NULL, + `payperiod` tinyint NOT NULL, + `whtvalue` tinyint NOT NULL, + `costcenter` tinyint NOT NULL, + `description` tinyint NOT NULL, + `payto` tinyint NOT NULL, + `idxpoboq` tinyint NOT NULL, + `nikpreparedby` tinyint NOT NULL, + `namepreparedby` tinyint NOT NULL, + `positionpreparedby` tinyint NOT NULL, + `prepareddate` tinyint NOT NULL, + `nikreviewby` tinyint NOT NULL, + `namereviewby` tinyint NOT NULL, + `positionreviewby` tinyint NOT NULL, + `reviewdate` tinyint NOT NULL, + `nikreviewdirby` tinyint NOT NULL, + `namereviewdirby` tinyint NOT NULL, + `positionreviewdirby` tinyint NOT NULL, + `reviewdirdate` tinyint NOT NULL, + `reviewdescription` tinyint NOT NULL, + `checklistinfo` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_justification` +-- + +DROP TABLE IF EXISTS `vw_justification`; +/*!50001 DROP VIEW IF EXISTS `vw_justification`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_justification` ( + `id` tinyint NOT NULL, + `idxrequestbudget` tinyint NOT NULL, + `trxid` tinyint NOT NULL, + `nomorjustifikasi` tinyint NOT NULL, + `judul` tinyint NOT NULL, + `division` tinyint NOT NULL, + `acccode` tinyint NOT NULL, + `deskripsi` tinyint NOT NULL, + `jenisbudget` tinyint NOT NULL, + `nilai` tinyint NOT NULL, + `tanggalpelaksanaan` tinyint NOT NULL, + `useddate` tinyint NOT NULL, + `filedoc` tinyint NOT NULL, + `justificationpdf` tinyint NOT NULL, + `ismergedoc` tinyint NOT NULL, + `filepdf` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL, + `iscreatepr` tinyint NOT NULL, + `iby` tinyint NOT NULL, + `idt` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_justificationboq` +-- + +DROP TABLE IF EXISTS `vw_justificationboq`; +/*!50001 DROP VIEW IF EXISTS `vw_justificationboq`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_justificationboq` ( + `id` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `items` tinyint NOT NULL, + `qty` tinyint NOT NULL, + `unitprice` tinyint NOT NULL, + `units` tinyint NOT NULL, + `total` tinyint NOT NULL, + `actions` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_justificationdetail` +-- + +DROP TABLE IF EXISTS `vw_justificationdetail`; +/*!50001 DROP VIEW IF EXISTS `vw_justificationdetail`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_justificationdetail` ( + `id` tinyint NOT NULL, + `idxrequestbudget` tinyint NOT NULL, + `trxid` tinyint NOT NULL, + `nomorjustifikasi` tinyint NOT NULL, + `judul` tinyint NOT NULL, + `division` tinyint NOT NULL, + `acccode` tinyint NOT NULL, + `deskripsi` tinyint NOT NULL, + `jenisbudget` tinyint NOT NULL, + `nilai` tinyint NOT NULL, + `tanggalpelaksanaan` tinyint NOT NULL, + `maksudtujuan` tinyint NOT NULL, + `latarbelakang` tinyint NOT NULL, + `strategis` tinyint NOT NULL, + `bisnis` tinyint NOT NULL, + `risiko` tinyint NOT NULL, + `pembiayaan` tinyint NOT NULL, + `rekomendasi` tinyint NOT NULL, + `penjadwalan` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL, + `filedoc` tinyint NOT NULL, + `filedocurl` tinyint NOT NULL, + `iby` tinyint NOT NULL, + `idt` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_justificationttd` +-- + +DROP TABLE IF EXISTS `vw_justificationttd`; +/*!50001 DROP VIEW IF EXISTS `vw_justificationttd`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_justificationttd` ( + `id` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `idemployee` tinyint NOT NULL, + `nik` tinyint NOT NULL, + `fullname` tinyint NOT NULL, + `positionname` tinyint NOT NULL, + `category` tinyint NOT NULL, + `imgqr` tinyint NOT NULL, + `token` tinyint NOT NULL, + `imgqrurl` tinyint NOT NULL, + `issigned` tinyint NOT NULL, + `signeddate` tinyint NOT NULL, + `actions` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_menus` +-- + +DROP TABLE IF EXISTS `vw_menus`; +/*!50001 DROP VIEW IF EXISTS `vw_menus`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_menus` ( + `_idx` tinyint NOT NULL, + `menutext` tinyint NOT NULL, + `sort` tinyint NOT NULL, + `idemployee` tinyint NOT NULL, + `nik` tinyint NOT NULL, + `isactivated` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_menusaccessibility` +-- + +DROP TABLE IF EXISTS `vw_menusaccessibility`; +/*!50001 DROP VIEW IF EXISTS `vw_menusaccessibility`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_menusaccessibility` ( + `_idx` tinyint NOT NULL, + `menutext` tinyint NOT NULL, + `sort` tinyint NOT NULL, + `idemployee` tinyint NOT NULL, + `nik` tinyint NOT NULL, + `isactivated` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_po` +-- + +DROP TABLE IF EXISTS `vw_po`; +/*!50001 DROP VIEW IF EXISTS `vw_po`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_po` ( + `_idx` tinyint NOT NULL, + `trxid` tinyint NOT NULL, + `ponumber` tinyint NOT NULL, + `idxpr` tinyint NOT NULL, + `prnumber` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `justificationnumber` tinyint NOT NULL, + `idxvendor` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `vendorid` tinyint NOT NULL, + `podate` tinyint NOT NULL, + `vper_start` tinyint NOT NULL, + `vper_end` tinyint NOT NULL, + `podescription` tinyint NOT NULL, + `identifyprojectnumber` tinyint NOT NULL, + `contractdescription` tinyint NOT NULL, + `contractperiodfrom` tinyint NOT NULL, + `contractperiodto` tinyint NOT NULL, + `units` tinyint NOT NULL, + `totalpo` tinyint NOT NULL, + `totalqty` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL, + `idxapproval` tinyint NOT NULL, + `nikapproval` tinyint NOT NULL, + `filetoken` tinyint NOT NULL, + `approveddate` tinyint NOT NULL, + `isadjustment` tinyint NOT NULL, + `migo` tinyint NOT NULL, + `iby` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_poadjlist` +-- + +DROP TABLE IF EXISTS `vw_poadjlist`; +/*!50001 DROP VIEW IF EXISTS `vw_poadjlist`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_poadjlist` ( + `_idx` tinyint NOT NULL, + `idxadjustment` tinyint NOT NULL, + `trxid` tinyint NOT NULL, + `ponumber` tinyint NOT NULL, + `idxpr` tinyint NOT NULL, + `prnumber` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `justificationnumber` tinyint NOT NULL, + `idxvendor` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `vendorid` tinyint NOT NULL, + `podate` tinyint NOT NULL, + `podatettd` tinyint NOT NULL, + `vper_start` tinyint NOT NULL, + `vper_end` tinyint NOT NULL, + `podescription` tinyint NOT NULL, + `identifyprojectnumber` tinyint NOT NULL, + `contractdescription` tinyint NOT NULL, + `contractperiodfrom` tinyint NOT NULL, + `contractperiodto` tinyint NOT NULL, + `units` tinyint NOT NULL, + `totalqty` tinyint NOT NULL, + `totalpo` tinyint NOT NULL, + `adjval` tinyint NOT NULL, + `reason` tinyint NOT NULL, + `dateadjustment` tinyint NOT NULL, + `grandtotal` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL, + `filedoc` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_poboq` +-- + +DROP TABLE IF EXISTS `vw_poboq`; +/*!50001 DROP VIEW IF EXISTS `vw_poboq`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_poboq` ( + `idxpr` tinyint NOT NULL, + `idxpo` tinyint NOT NULL, + `prnumber` tinyint NOT NULL, + `totalpr` tinyint NOT NULL, + `ponumber` tinyint NOT NULL, + `identifyprojectnumber` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `idxjustificationboq` tinyint NOT NULL, + `justificationnumber` tinyint NOT NULL, + `totalbudget` tinyint NOT NULL, + `items` tinyint NOT NULL, + `qty` tinyint NOT NULL, + `unitprice` tinyint NOT NULL, + `units` tinyint NOT NULL, + `total` tinyint NOT NULL, + `idxpoboq` tinyint NOT NULL, + `idxvendor` tinyint NOT NULL, + `vendorid` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `description` tinyint NOT NULL, + `startdate` tinyint NOT NULL, + `enddate` tinyint NOT NULL, + `curr` tinyint NOT NULL, + `hs` tinyint NOT NULL, + `qtypoboq` tinyint NOT NULL, + `poamount` tinyint NOT NULL, + `ratepo` tinyint NOT NULL, + `migo` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_poboqdetail` +-- + +DROP TABLE IF EXISTS `vw_poboqdetail`; +/*!50001 DROP VIEW IF EXISTS `vw_poboqdetail`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_poboqdetail` ( + `_idx` tinyint NOT NULL, + `idxpoboq` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `unitprice` tinyint NOT NULL, + `qtypoboq` tinyint NOT NULL, + `isbulk` tinyint NOT NULL, + `qty` tinyint NOT NULL, + `description` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_poheaderdetail` +-- + +DROP TABLE IF EXISTS `vw_poheaderdetail`; +/*!50001 DROP VIEW IF EXISTS `vw_poheaderdetail`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_poheaderdetail` ( + `idxpo` tinyint NOT NULL, + `podate` tinyint NOT NULL, + `idxpoboq` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `idxjustificationboq` tinyint NOT NULL, + `items` tinyint NOT NULL, + `qty` tinyint NOT NULL, + `unitprice` tinyint NOT NULL, + `units` tinyint NOT NULL, + `total` tinyint NOT NULL, + `idxvendor` tinyint NOT NULL, + `vendorid` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `description` tinyint NOT NULL, + `enddate` tinyint NOT NULL, + `startdate` tinyint NOT NULL, + `curr` tinyint NOT NULL, + `hs` tinyint NOT NULL, + `poamount` tinyint NOT NULL, + `ratepo` tinyint NOT NULL, + `ponumber` tinyint NOT NULL, + `identifyprojectnumber` tinyint NOT NULL, + `migo` tinyint NOT NULL, + `isdeleted` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_poinventorydetail` +-- + +DROP TABLE IF EXISTS `vw_poinventorydetail`; +/*!50001 DROP VIEW IF EXISTS `vw_poinventorydetail`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_poinventorydetail` ( + `_idx` tinyint NOT NULL, + `idxheader` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `idxjustificationboq` tinyint NOT NULL, + `items` tinyint NOT NULL, + `qty` tinyint NOT NULL, + `unitprice` tinyint NOT NULL, + `units` tinyint NOT NULL, + `total` tinyint NOT NULL, + `idxvendor` tinyint NOT NULL, + `vendorid` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `description` tinyint NOT NULL, + `enddate` tinyint NOT NULL, + `startdate` tinyint NOT NULL, + `curr` tinyint NOT NULL, + `hs` tinyint NOT NULL, + `poamount` tinyint NOT NULL, + `ratepo` tinyint NOT NULL, + `ponumber` tinyint NOT NULL, + `identifyprojectnumber` tinyint NOT NULL, + `migo` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_poinventoryheader` +-- + +DROP TABLE IF EXISTS `vw_poinventoryheader`; +/*!50001 DROP VIEW IF EXISTS `vw_poinventoryheader`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_poinventoryheader` ( + `_idx` tinyint NOT NULL, + `ponumber` tinyint NOT NULL, + `identifyprojectnumber` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `totalpo` tinyint NOT NULL, + `podescription` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_popaylist` +-- + +DROP TABLE IF EXISTS `vw_popaylist`; +/*!50001 DROP VIEW IF EXISTS `vw_popaylist`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_popaylist` ( + `idxpo` tinyint NOT NULL, + `ponumber` tinyint NOT NULL, + `idxpr` tinyint NOT NULL, + `prnumber` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `justificationnumber` tinyint NOT NULL, + `sp3number` tinyint NOT NULL, + `idxvendor` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `vendorid` tinyint NOT NULL, + `podate` tinyint NOT NULL, + `vper_start` tinyint NOT NULL, + `vper_end` tinyint NOT NULL, + `podescription` tinyint NOT NULL, + `units` tinyint NOT NULL, + `totalqty` tinyint NOT NULL, + `totalpo` tinyint NOT NULL, + `totaladj` tinyint NOT NULL, + `grandtotal` tinyint NOT NULL, + `totalinvoice` tinyint NOT NULL, + `remaininvoice` tinyint NOT NULL, + `payto` tinyint NOT NULL, + `idxpoboq` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_pottd` +-- + +DROP TABLE IF EXISTS `vw_pottd`; +/*!50001 DROP VIEW IF EXISTS `vw_pottd`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_pottd` ( + `_idx` tinyint NOT NULL, + `idxpo` tinyint NOT NULL, + `idemployee` tinyint NOT NULL, + `nik` tinyint NOT NULL, + `category` tinyint NOT NULL, + `token` tinyint NOT NULL, + `imgqr` tinyint NOT NULL, + `issigned` tinyint NOT NULL, + `signeddate` tinyint NOT NULL, + `isdeleted` tinyint NOT NULL, + `remarkdeleted` tinyint NOT NULL, + `iby` tinyint NOT NULL, + `idt` tinyint NOT NULL, + `uby` tinyint NOT NULL, + `udt` tinyint NOT NULL, + `dby` tinyint NOT NULL, + `ddt` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_pr` +-- + +DROP TABLE IF EXISTS `vw_pr`; +/*!50001 DROP VIEW IF EXISTS `vw_pr`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_pr` ( + `id` tinyint NOT NULL, + `trxidpr` tinyint NOT NULL, + `prnumber` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `justificationnumber` tinyint NOT NULL, + `glaccount` tinyint NOT NULL, + `costcenter` tinyint NOT NULL, + `costcentername` tinyint NOT NULL, + `profitcenter` tinyint NOT NULL, + `profitname` tinyint NOT NULL, + `description` tinyint NOT NULL, + `qty` tinyint NOT NULL, + `unit` tinyint NOT NULL, + `netprice` tinyint NOT NULL, + `totalvalue` tinyint NOT NULL, + `curr` tinyint NOT NULL, + `prdate` tinyint NOT NULL, + `prdateYmd` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL, + `idxapproval` tinyint NOT NULL, + `nikapproval` tinyint NOT NULL, + `approvalname` tinyint NOT NULL, + `approveddate` tinyint NOT NULL, + `isused` tinyint NOT NULL, + `urltoken` tinyint NOT NULL, + `justificationdoc` tinyint NOT NULL, + `iby` tinyint NOT NULL, + `idt` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_prmanagement` +-- + +DROP TABLE IF EXISTS `vw_prmanagement`; +/*!50001 DROP VIEW IF EXISTS `vw_prmanagement`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_prmanagement` ( + `id` tinyint NOT NULL, + `trxidpr` tinyint NOT NULL, + `prnumber` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `justificationnumber` tinyint NOT NULL, + `glaccount` tinyint NOT NULL, + `costcenter` tinyint NOT NULL, + `profitcenter` tinyint NOT NULL, + `description` tinyint NOT NULL, + `qty` tinyint NOT NULL, + `unit` tinyint NOT NULL, + `netprice` tinyint NOT NULL, + `totalvalue` tinyint NOT NULL, + `curr` tinyint NOT NULL, + `prdate` tinyint NOT NULL, + `prdateYmd` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL, + `idxapproval` tinyint NOT NULL, + `nikapproval` tinyint NOT NULL, + `approveddate` tinyint NOT NULL, + `isused` tinyint NOT NULL, + `urltoken` tinyint NOT NULL, + `justificationdoc` tinyint NOT NULL, + `iby` tinyint NOT NULL, + `idt` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_procjustification` +-- + +DROP TABLE IF EXISTS `vw_procjustification`; +/*!50001 DROP VIEW IF EXISTS `vw_procjustification`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_procjustification` ( + `id` tinyint NOT NULL, + `idxpr` tinyint NOT NULL, + `prnumber` tinyint NOT NULL, + `procjustificationnumber` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `justificationnumber` tinyint NOT NULL, + `judul` tinyint NOT NULL, + `nomorjustifikasi` tinyint NOT NULL, + `divisi` tinyint NOT NULL, + `acccode` tinyint NOT NULL, + `deskripsi` tinyint NOT NULL, + `jenisbudget` tinyint NOT NULL, + `nilai` tinyint NOT NULL, + `justificationdoc` tinyint NOT NULL, + `justificationpdf` tinyint NOT NULL, + `procjustificationdoc` tinyint NOT NULL, + `procjustificationpdf` tinyint NOT NULL, + `idxcreated` tinyint NOT NULL, + `nikcreated` tinyint NOT NULL, + `idxverified` tinyint NOT NULL, + `nikverified` tinyint NOT NULL, + `idxapproval` tinyint NOT NULL, + `nikapproval` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL, + `iby` tinyint NOT NULL, + `idt` tinyint NOT NULL, + `filedoc` tinyint NOT NULL, + `ttd` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_procjustificationdoc` +-- + +DROP TABLE IF EXISTS `vw_procjustificationdoc`; +/*!50001 DROP VIEW IF EXISTS `vw_procjustificationdoc`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_procjustificationdoc` ( + `id` tinyint NOT NULL, + `idxheader` tinyint NOT NULL, + `numberoffile` tinyint NOT NULL, + `filecategory` tinyint NOT NULL, + `filename` tinyint NOT NULL, + `descriptionfile` tinyint NOT NULL, + `urldoc` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_procjustificationdocmerge` +-- + +DROP TABLE IF EXISTS `vw_procjustificationdocmerge`; +/*!50001 DROP VIEW IF EXISTS `vw_procjustificationdocmerge`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_procjustificationdocmerge` ( + `id` tinyint NOT NULL, + `idxpr` tinyint NOT NULL, + `prnumber` tinyint NOT NULL, + `procjustificationnumber` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `justificationnumber` tinyint NOT NULL, + `judul` tinyint NOT NULL, + `nomorjustifikasi` tinyint NOT NULL, + `division` tinyint NOT NULL, + `tanggalpelaksanaan` tinyint NOT NULL, + `useddate` tinyint NOT NULL, + `ismergedoc` tinyint NOT NULL, + `acccode` tinyint NOT NULL, + `deskripsi` tinyint NOT NULL, + `jenisbudget` tinyint NOT NULL, + `filedoc` tinyint NOT NULL, + `idxfiledoc` tinyint NOT NULL, + `nilai` tinyint NOT NULL, + `justificationdoc` tinyint NOT NULL, + `justificationpdf` tinyint NOT NULL, + `idxcreated` tinyint NOT NULL, + `nikcreated` tinyint NOT NULL, + `idxverified` tinyint NOT NULL, + `nikverified` tinyint NOT NULL, + `idxapproval` tinyint NOT NULL, + `nikapproval` tinyint NOT NULL, + `status` tinyint NOT NULL, + `statusdescription` tinyint NOT NULL, + `iby` tinyint NOT NULL, + `idt` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_procjustificationttd` +-- + +DROP TABLE IF EXISTS `vw_procjustificationttd`; +/*!50001 DROP VIEW IF EXISTS `vw_procjustificationttd`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_procjustificationttd` ( + `id` tinyint NOT NULL, + `idxheader` tinyint NOT NULL, + `idxjustification` tinyint NOT NULL, + `idemployee` tinyint NOT NULL, + `fullname` tinyint NOT NULL, + `positionname` tinyint NOT NULL, + `nik` tinyint NOT NULL, + `category` tinyint NOT NULL, + `imgqr` tinyint NOT NULL, + `token` tinyint NOT NULL, + `imgqrurl` tinyint NOT NULL, + `issigned` tinyint NOT NULL, + `signeddate` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_profitcenter` +-- + +DROP TABLE IF EXISTS `vw_profitcenter`; +/*!50001 DROP VIEW IF EXISTS `vw_profitcenter`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_profitcenter` ( + `id` tinyint NOT NULL, + `profitcode` tinyint NOT NULL, + `profitname` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_requestbudget` +-- + +DROP TABLE IF EXISTS `vw_requestbudget`; +/*!50001 DROP VIEW IF EXISTS `vw_requestbudget`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_requestbudget` ( + `id` tinyint NOT NULL, + `trxid` tinyint NOT NULL, + `justificationnumber` tinyint NOT NULL, + `yearstgt` tinyint NOT NULL, + `transactiondate` tinyint NOT NULL, + `budgettype` tinyint NOT NULL, + `budgetid` tinyint NOT NULL, + `activityname` tinyint NOT NULL, + `glacc` tinyint NOT NULL, + `targetrfs` tinyint NOT NULL, + `limitamount` tinyint NOT NULL, + `amount` tinyint NOT NULL, + `due` tinyint NOT NULL, + `crdb` tinyint NOT NULL, + `isused` tinyint NOT NULL, + `iby` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary table structure for view `vw_vendorinfo` +-- + +DROP TABLE IF EXISTS `vw_vendorinfo`; +/*!50001 DROP VIEW IF EXISTS `vw_vendorinfo`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vw_vendorinfo` ( + `id` tinyint NOT NULL, + `vendorid` tinyint NOT NULL, + `vendorname` tinyint NOT NULL, + `picname` tinyint NOT NULL, + `address` tinyint NOT NULL, + `telp` tinyint NOT NULL, + `location` tinyint NOT NULL, + `bussinessgroup` tinyint NOT NULL, + `isactivated` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + +-- +-- Final view structure for view `vw_approvedby` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_approvedby`*/; +/*!50001 DROP VIEW IF EXISTS `vw_approvedby`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = latin1 */; +/*!50001 SET character_set_results = latin1 */; +/*!50001 SET collation_connection = latin1_swedish_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_approvedby` AS select `dbssotcel`.`tbl_employee`.`id` AS `id`,`dbssotcel`.`tbl_employee`.`nik` AS `nik`,`dbssotcel`.`tbl_employee`.`fullname` AS `fullname`,`dbssotcel`.`tbl_employee`.`positionname` AS `positionname`,`dbssotcel`.`tbl_employee`.`bandposition` AS `bandposition` from `dbssotcel`.`tbl_employee` where ((`dbssotcel`.`tbl_employee`.`isdeleted` = 0) and (`dbssotcel`.`tbl_employee`.`bandposition` in ('I','II'))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_bast` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_bast`*/; +/*!50001 DROP VIEW IF EXISTS `vw_bast`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_bast` AS select `b`.`_idx` AS `_idx`,`b`.`idxpo` AS `idxpo`,`b`.`bastnumber` AS `bastnumber`,`b`.`bastdates` AS `bastdates`,`b`.`bastdateshandover` AS `bastdateshandover`,`b`.`descriptionhandover` AS `descriptionhandover`,`b`.`description` AS `description`,`b`.`idxvendor` AS `idxvendor`,`b`.`vendorcode` AS `vendorcode`,`b`.`vendorname` AS `vendorname`,`b`.`totalpo` AS `totalpo`,ifnull(`adj`.`adjval`,0) AS `totaladj`,(`b`.`totalpo` + ifnull(`adj`.`adjval`,0)) AS `grandtotal`,`b`.`povendornumber` AS `povendornumber`,`b`.`ismergedoc` AS `ismergedoc`,`b`.`mergedate` AS `mergedate`,`b`.`filedoctemplate` AS `filedoctemplate`,`b`.`filedoc` AS `filedoc`,`b`.`filepdf` AS `filepdf`,`b`.`status` AS `status`,`b`.`statusdescription` AS `statusdescription`,`b`.`laststatusupdate` AS `laststatusupdate` from (`tbl_bast` `b` left join `tbl_poadj` `adj` on(((`b`.`idxpo` = `adj`.`idxpo`) or isnull(`adj`.`idxpo`)))) where (`b`.`isdeleted` = 0) group by `b`.`idxpo` order by `b`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_bastactivitylist` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_bastactivitylist`*/; +/*!50001 DROP VIEW IF EXISTS `vw_bastactivitylist`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = latin1 */; +/*!50001 SET character_set_results = latin1 */; +/*!50001 SET collation_connection = latin1_swedish_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_bastactivitylist` AS select `b`.`_idx` AS `idxbudget`,0 AS `idxpo`,`b`.`activityname` AS `activityname`,`b`.`amount` AS `amount`,`b`.`targetrfs` AS `targetrfs`,`b`.`months` AS `months`,`b`.`years` AS `years`,`pr`.`_idx` AS `idxpr`,`pr`.`prnumber` AS `prnumber`,`pr`.`totalvalue` AS `totalpr`,count(`p`.`_idx`) AS `totalactivity` from ((((`tbl_budgetcapexinfo` `b` join `tbl_requestbudget` `r` on((`b`.`_idx` = `r`.`idxbudgetid`))) join `tbl_justification` `j` on((`r`.`_idx` = `j`.`idxrequestbudget`))) join `tbl_po` `p` on((`j`.`_idx` = `p`.`idxjustification`))) join `tbl_pr` `pr` on((`pr`.`prnumber` = `p`.`prnumber`))) where ((`b`.`isdeleted` = 0) and (`r`.`isdeleted` = 0) and (`j`.`isdeleted` = 0) and (`p`.`isdeleted` = 0) and (`p`.`status` in (4,6)) and (`p`.`ponumber` <> '000') and (`p`.`ponumber` <> '')) group by `b`.`_idx`,`pr`.`_idx` order by `b`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_bastactivitylistdetail` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_bastactivitylistdetail`*/; +/*!50001 DROP VIEW IF EXISTS `vw_bastactivitylistdetail`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_bastactivitylistdetail` AS select `b`.`_idx` AS `idxbudget`,`b`.`activityname` AS `activityname`,`b`.`amount` AS `amountbudget`,`pb`.`total` AS `amount`,`b`.`targetrfs` AS `targetrfs`,`b`.`months` AS `months`,`b`.`years` AS `years`,`p`.`_idx` AS `idxpo`,`pr`.`_idx` AS `idxpr`,`p`.`idxpoboq` AS `idxpoboq`,`p`.`ponumber` AS `ponumber`,`p`.`prnumber` AS `prnumber`,`p`.`idxvendor` AS `idxvendor`,`p`.`vendorid` AS `vendorid`,`p`.`vendorname` AS `vendorname`,`p`.`podescription` AS `description`,`p`.`totalpo` AS `totalpo`,ifnull(`adj`.`adjval`,0) AS `totaladj`,(ifnull(`adj`.`adjval`,0) + `p`.`totalpo`) AS `grandtotal`,`p`.`identifyprojectnumber` AS `sp3number` from ((((((`tbl_budgetcapexinfo` `b` join `tbl_requestbudget` `r` on((`b`.`_idx` = `r`.`idxbudgetid`))) join `tbl_justification` `j` on((`r`.`_idx` = `j`.`idxrequestbudget`))) join `tbl_po` `p` on((`j`.`_idx` = `p`.`idxjustification`))) join `tbl_poboq` `pb` on((`p`.`_idx` = `pb`.`idxheader`))) join `tbl_pr` `pr` on((`pr`.`prnumber` = `p`.`prnumber`))) left join `tbl_poadj` `adj` on(((`p`.`_idx` = `adj`.`idxpo`) or isnull(`adj`.`idxpo`)))) where ((`b`.`isdeleted` = 0) and (`r`.`isdeleted` = 0) and (`j`.`isdeleted` = 0) and (`p`.`isdeleted` = 0) and (`p`.`status` in (4,6)) and (`p`.`ponumber` <> '000') and (`p`.`ponumber` <> '')) group by `p`.`_idx`,((`adj`.`idxpo` <> 0) or isnull(`adj`.`idxpo`)) order by `b`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_bastdetail` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_bastdetail`*/; +/*!50001 DROP VIEW IF EXISTS `vw_bastdetail`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_bastdetail` AS select `d`.`_idx` AS `_idx`,`d`.`idxheader` AS `idxheader`,`d`.`idxpoboq` AS `idxpoboq`,`d`.`description` AS `items`,`d`.`qty` AS `qty`,`d`.`units` AS `units`,`d`.`poamount` AS `poamount` from `tbl_bastdetail` `d` where (`d`.`isdeleted` = 0) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_basthandoverlist` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_basthandoverlist`*/; +/*!50001 DROP VIEW IF EXISTS `vw_basthandoverlist`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_basthandoverlist` AS select `b`.`_idx` AS `_idx`,`b`.`idxpo` AS `idxpo`,`p`.`ponumber` AS `ponumber`,`b`.`bastnumber` AS `bastnumber`,`b`.`bastdates` AS `bastdates`,`b`.`bastdateshandover` AS `bastdateshandover`,`b`.`descriptionhandover` AS `descriptionhandover`,`b`.`filedoctemplate` AS `filebastdoc`,(case when (`b`.`ismergedoc` = 1) then concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/bastfile?route=bast:merge&name=',`b`.`filedoc`) else '' end) AS `filebastdocmerge`,(case when (`b`.`ismergedoc` = 1) then concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/bastfile?route=bast:pdf&name=',`b`.`filepdf`) else '' end) AS `filebastpdf`,(case when (`b`.`filehandoversign` is not null) then concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/bastfile?route=bast&name=',`b`.`filehandoversign`) else '' end) AS `filehandoversign`,`b`.`description` AS `description`,`b`.`vendorname` AS `vendorname`,`b`.`povendornumber` AS `povendornumber`,`b`.`totalpo` AS `totalpo`,`b`.`status` AS `status`,`b`.`statusdescription` AS `statusdescription` from (`tbl_po` `p` join `tbl_bast` `b` on((`p`.`_idx` = `b`.`idxpo`))) where ((`b`.`isdeleted` = 0) and (`b`.`status` in (0,1,2))) order by `b`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_bastmergedoc` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_bastmergedoc`*/; +/*!50001 DROP VIEW IF EXISTS `vw_bastmergedoc`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_bastmergedoc` AS select `b`.`_idx` AS `_idx`,`b`.`idxpo` AS `idxpo`,`b`.`bastnumber` AS `bastnumber`,date_format(`b`.`bastdates`,'%Y-%m-%d') AS `bastdates`,`b`.`description` AS `description`,`j`.`glacc` AS `acccode`,`j`.`description` AS `deskripsi`,`j`.`budgettype` AS `jenisbudget`,`j`.`title` AS `judul`,`j`.`justificationnumber` AS `nomorjustifikasi`,`j`.`division` AS `division`,`j`.`amount` AS `nilai`,date_format(`j`.`useddate`,'%Y-%m-%d') AS `tanggalpelaksanaan`,date_format(`j`.`useddate`,'%M %Y') AS `useddate`,`b`.`idxvendor` AS `idxvendor`,`b`.`vendorcode` AS `vendorcode`,`b`.`vendorname` AS `vendorname`,`b`.`totalpo` AS `totalpo`,`b`.`povendornumber` AS `povendornumber`,`b`.`ismergedoc` AS `ismergedoc`,`b`.`mergedate` AS `mergedate`,`b`.`filedoctemplate` AS `filedoctemplate`,`b`.`filedoc` AS `filedoc`,`b`.`filepdf` AS `filepdf`,`b`.`status` AS `status`,`b`.`statusdescription` AS `statusdescription`,`b`.`laststatusupdate` AS `laststatusupdate`,`b`.`iby` AS `iby`,date_format(`b`.`idt`,'%Y-%m-%d') AS `idt` from ((`tbl_po` `p` join `tbl_bast` `b` on((`p`.`_idx` = `b`.`idxpo`))) join `tbl_justification` `j` on((`j`.`_idx` = `p`.`idxjustification`))) where (`b`.`isdeleted` = 0) order by `b`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_budgetcapexinfo` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_budgetcapexinfo`*/; +/*!50001 DROP VIEW IF EXISTS `vw_budgetcapexinfo`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = latin1 */; +/*!50001 SET character_set_results = latin1 */; +/*!50001 SET collation_connection = latin1_swedish_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_budgetcapexinfo` AS select `b`.`_idx` AS `id`,`t`.`budgettype` AS `budgettype`,trim(`b`.`budgetid`) AS `budgetid`,trim(`b`.`activityname`) AS `activityname`,`b`.`amount` AS `amount`,`b`.`targetrfs` AS `targetrfs`,`b`.`months` AS `months`,`b`.`years` AS `years` from (`tbl_budgettype` `t` join `tbl_budgetcapexinfo` `b` on((`t`.`_idx` = `b`.`idxbudgettype`))) where ((`t`.`isdeleted` = 0) and (`b`.`isdeleted` = 0)) order by `b`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_budgetlistbyrequest` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_budgetlistbyrequest`*/; +/*!50001 DROP VIEW IF EXISTS `vw_budgetlistbyrequest`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_budgetlistbyrequest` AS select `b`.`_idx` AS `_idx`,`b`.`budgetid` AS `budgetid`,`b`.`idxbudgettype` AS `idxbudgettype`,(case when (`b`.`idxbudgettype` = 1) then 'CAPEX' else 'OPEX' end) AS `budgettype`,`b`.`activityname` AS `activityname`,`b`.`targetrfs` AS `targetrfs`,`b`.`amount` AS `amount`,ifnull(sum(`r`.`k`),0) AS `used`,ifnull(sum(`r`.`d`),0) AS `relok`,((`b`.`amount` - ifnull(sum(`r`.`k`),0)) + ifnull(sum(`r`.`d`),0)) AS `due` from (`tbl_budgetcapexinfo` `b` left join `vw_budgetrequestdue` `r` on(((`b`.`_idx` = `r`.`idxbudgetid`) or isnull(`r`.`idxbudgetid`)))) where (`b`.`isdeleted` = 0) group by `b`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_budgetrequestdue` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_budgetrequestdue`*/; +/*!50001 DROP VIEW IF EXISTS `vw_budgetrequestdue`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_budgetrequestdue` AS select `r`.`idxbudgetid` AS `idxbudgetid`,`r`.`amount` AS `amount`,`r`.`budgetid` AS `budgetid`,(case when (`r`.`crdb` = 'K') then sum(`r`.`amount`) else 0 end) AS `k`,(case when (`r`.`crdb` = 'D') then sum(`r`.`amount`) else 0 end) AS `d` from `tbl_requestbudget` `r` where (`r`.`isdeleted` = 0) group by `r`.`crdb`,`r`.`idxbudgetid` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_checkedby` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_checkedby`*/; +/*!50001 DROP VIEW IF EXISTS `vw_checkedby`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = latin1 */; +/*!50001 SET character_set_results = latin1 */; +/*!50001 SET collation_connection = latin1_swedish_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_checkedby` AS select `dbssotcel`.`tbl_employee`.`id` AS `id`,`dbssotcel`.`tbl_employee`.`nik` AS `nik`,`dbssotcel`.`tbl_employee`.`fullname` AS `fullname`,`dbssotcel`.`tbl_employee`.`positionname` AS `positionname`,`dbssotcel`.`tbl_employee`.`bandposition` AS `bandposition` from `dbssotcel`.`tbl_employee` where ((`dbssotcel`.`tbl_employee`.`isdeleted` = 0) and (`dbssotcel`.`tbl_employee`.`bandposition` in ('III','II'))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_coa` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_coa`*/; +/*!50001 DROP VIEW IF EXISTS `vw_coa`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = latin1 */; +/*!50001 SET character_set_results = latin1 */; +/*!50001 SET collation_connection = latin1_swedish_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_coa` AS select `tbl_coa`.`_idx` AS `id`,`tbl_coa`.`glacc` AS `coacode`,`tbl_coa`.`glaccname` AS `coaname` from `tbl_coa` where (`tbl_coa`.`isdeleted` = 0) order by `tbl_coa`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_costcenter` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_costcenter`*/; +/*!50001 DROP VIEW IF EXISTS `vw_costcenter`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_costcenter` AS select `c`.`id` AS `id`,`c`.`costcentercode` AS `costcentercode`,`c`.`costcentername` AS `costcentername` from `tbl_costcenter` `c` where (`c`.`isdeleted` = 0) order by `c`.`id` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_createdby` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_createdby`*/; +/*!50001 DROP VIEW IF EXISTS `vw_createdby`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = latin1 */; +/*!50001 SET character_set_results = latin1 */; +/*!50001 SET collation_connection = latin1_swedish_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_createdby` AS select `dbssotcel`.`tbl_employee`.`id` AS `id`,`dbssotcel`.`tbl_employee`.`nik` AS `nik`,`dbssotcel`.`tbl_employee`.`fullname` AS `fullname`,`dbssotcel`.`tbl_employee`.`positionname` AS `positionname`,`dbssotcel`.`tbl_employee`.`bandposition` AS `bandposition` from `dbssotcel`.`tbl_employee` where ((`dbssotcel`.`tbl_employee`.`isdeleted` = 0) and (`dbssotcel`.`tbl_employee`.`bandposition` = 'III')) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_emp_accessibility` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_emp_accessibility`*/; +/*!50001 DROP VIEW IF EXISTS `vw_emp_accessibility`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = latin1 */; +/*!50001 SET character_set_results = latin1 */; +/*!50001 SET collation_connection = latin1_swedish_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_emp_accessibility` AS select `m`.`_idx` AS `_idx`,`m`.`sort` AS `sort`,`m`.`menuid` AS `menuid`,`m`.`menuheader` AS `menuheader`,`m`.`menutype` AS `menutype`,`m`.`menutext` AS `name`,`m`.`i18n` AS `i18n`,`m`.`classname` AS `class`,`m`.`icon` AS `icon`,`m`.`slug` AS `slug`,`m`.`url` AS `url`,`m`.`isactivated` AS `isactivated`,`e`.`nik` AS `nik` from (`tbl_menus` `m` join `tbl_employee_accessibility` `e` on((`m`.`_idx` = `e`.`idxmenu`))) where ((`m`.`isdeleted` = 0) and (`e`.`isdeleted` = 0) and (`e`.`isactivated` = 1) and (`m`.`isactivated` = 1)) order by `m`.`sort` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_employee` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_employee`*/; +/*!50001 DROP VIEW IF EXISTS `vw_employee`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_employee` AS select `dbssotcel`.`tbl_employee`.`id` AS `id`,`dbssotcel`.`tbl_employee`.`nik` AS `nik`,`dbssotcel`.`tbl_employee`.`fullname` AS `fullname`,`dbssotcel`.`tbl_employee`.`positionname` AS `positionname`,`dbssotcel`.`tbl_employee`.`bandposition` AS `bandposition` from `dbssotcel`.`tbl_employee` where (`dbssotcel`.`tbl_employee`.`isdeleted` = 0) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_financelist` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_financelist`*/; +/*!50001 DROP VIEW IF EXISTS `vw_financelist`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_financelist` AS select `p`.`_idx` AS `idxpo`,`p`.`ponumber` AS `ponumber`,`p`.`idxpr` AS `idxpr`,`p`.`prnumber` AS `prnumber`,`p`.`idxjustification` AS `idxjustification`,`p`.`justificationnumber` AS `justificationnumber`,`p`.`idxvendor` AS `idxvendor`,`p`.`vendorname` AS `vendorname`,`p`.`vendorid` AS `vendorid`,`p`.`podate` AS `podate`,`p`.`vper_start` AS `vper_start`,`p`.`vper_end` AS `vper_end`,`p`.`podescription` AS `podescription`,`p`.`units` AS `units`,`p`.`totalqty` AS `totalqty`,`p`.`totalpo` AS `totalpo`,ifnull(`adj`.`adjval`,0) AS `totaladj`,(`p`.`totalpo` + ifnull(`adj`.`adjval`,0)) AS `grandtotal`,ifnull(sum(`f`.`totalinvoice`),0) AS `totalinvoice`,(`adj`.`grandtotal` - ifnull(sum(`f`.`totalinvoice`),0)) AS `remaininvoice`,ifnull(`f`.`payto`,0) AS `payto`,`p`.`idxpoboq` AS `idxpoboq` from ((`tbl_po` `p` join `tbl_finance` `f` on((`p`.`_idx` = `f`.`idxpo`))) left join `tbl_poadj` `adj` on(((`p`.`_idx` = `adj`.`idxpo`) or isnull(`adj`.`idxpo`)))) where ((`p`.`isdeleted` = 0) and (`f`.`isdeleted` = 0)) group by `p`.`_idx` order by `p`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_financelistdetail` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_financelistdetail`*/; +/*!50001 DROP VIEW IF EXISTS `vw_financelistdetail`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_financelistdetail` AS select `p`.`_idx` AS `idxpo`,`f`.`_idx` AS `idxfinance`,`p`.`ponumber` AS `ponumber`,`p`.`idxpr` AS `idxpr`,`p`.`prnumber` AS `prnumber`,`p`.`idxjustification` AS `idxjustification`,`p`.`justificationnumber` AS `justificationnumber`,`p`.`idxvendor` AS `idxvendor`,`p`.`vendorname` AS `vendorname`,`p`.`vendorid` AS `vendorid`,`p`.`podate` AS `podate`,`p`.`podescription` AS `podescription`,`p`.`units` AS `units`,`p`.`totalqty` AS `totalqty`,`p`.`totalpo` AS `totalpo`,ifnull(`adj`.`adjval`,0) AS `totaladj`,(`p`.`totalpo` + ifnull(`adj`.`adjval`,0)) AS `grandtotal`,ifnull(`f`.`paymentdate`,'-') AS `paymentdate`,`f`.`totalinvoice` AS `totalinvoice`,(`adj`.`grandtotal` - ifnull(`f`.`totalinvoice`,0)) AS `remaininvoice`,`f`.`contractnumber` AS `contractnumber`,`f`.`percentpay` AS `percentpay`,`f`.`payperiod` AS `payperiod`,`f`.`whtvalue` AS `whtvalue`,`f`.`costcenter` AS `costcenter`,`f`.`description` AS `description`,ifnull(`f`.`payto`,0) AS `payto`,`p`.`idxpoboq` AS `idxpoboq`,`f`.`nikpreparedby` AS `nikpreparedby`,`f`.`namepreparedby` AS `namepreparedby`,`f`.`positionpreparedby` AS `positionpreparedby`,`f`.`prepareddate` AS `prepareddate`,`f`.`nikreviewby` AS `nikreviewby`,`f`.`namereviewby` AS `namereviewby`,`f`.`positionreviewby` AS `positionreviewby`,`f`.`reviewdate` AS `reviewdate`,`f`.`nikreviewdirby` AS `nikreviewdirby`,`f`.`namereviewdirby` AS `namereviewdirby`,`f`.`positionreviewdirby` AS `positionreviewdirby`,`f`.`reviewdirdate` AS `reviewdirdate`,`f`.`reviewdescription` AS `reviewdescription`,'' AS `checklistinfo` from ((`tbl_po` `p` join `tbl_finance` `f` on((`p`.`_idx` = `f`.`idxpo`))) left join `tbl_poadj` `adj` on(((`p`.`_idx` = `adj`.`idxpo`) or isnull(`adj`.`idxpo`)))) where ((`p`.`isdeleted` = 0) and (`f`.`isdeleted` = 0)) order by `f`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_justification` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_justification`*/; +/*!50001 DROP VIEW IF EXISTS `vw_justification`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_justification` AS select `j`.`_idx` AS `id`,`j`.`idxrequestbudget` AS `idxrequestbudget`,`j`.`trxid` AS `trxid`,`j`.`justificationnumber` AS `nomorjustifikasi`,`j`.`title` AS `judul`,`j`.`division` AS `division`,`j`.`glacc` AS `acccode`,`j`.`description` AS `deskripsi`,`j`.`budgettype` AS `jenisbudget`,`j`.`amount` AS `nilai`,date_format(`j`.`useddate`,'%Y-%m-%d') AS `tanggalpelaksanaan`,date_format(`j`.`useddate`,'%M %Y') AS `useddate`,`j`.`filedoc` AS `filedoc`,(case when (`j`.`status` = 2) then concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/filejustification?route=justification:pdf&name=',`j`.`filepdf`) else '' end) AS `justificationpdf`,`j`.`ismergedoc` AS `ismergedoc`,`j`.`filepdf` AS `filepdf`,`j`.`status` AS `status`,`j`.`statusdescription` AS `statusdescription`,`j`.`iscreatepr` AS `iscreatepr`,`j`.`iby` AS `iby`,date_format(`j`.`idt`,'%Y-%m-%d %H:%i:%s') AS `idt` from `tbl_justification` `j` where (`j`.`isdeleted` = 0) order by `j`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_justificationboq` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_justificationboq`*/; +/*!50001 DROP VIEW IF EXISTS `vw_justificationboq`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = latin1 */; +/*!50001 SET character_set_results = latin1 */; +/*!50001 SET collation_connection = latin1_swedish_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_justificationboq` AS select `tbl_justificationboq`.`_idx` AS `id`,`tbl_justificationboq`.`idxjustification` AS `idxjustification`,`tbl_justificationboq`.`items` AS `items`,`tbl_justificationboq`.`qty` AS `qty`,`tbl_justificationboq`.`unitprice` AS `unitprice`,`tbl_justificationboq`.`units` AS `units`,`tbl_justificationboq`.`total` AS `total`,'' AS `actions` from `tbl_justificationboq` where (`tbl_justificationboq`.`isdeleted` = 0) order by `tbl_justificationboq`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_justificationdetail` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_justificationdetail`*/; +/*!50001 DROP VIEW IF EXISTS `vw_justificationdetail`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_justificationdetail` AS select `j`.`_idx` AS `id`,`j`.`idxrequestbudget` AS `idxrequestbudget`,`j`.`trxid` AS `trxid`,`j`.`justificationnumber` AS `nomorjustifikasi`,`j`.`title` AS `judul`,`j`.`division` AS `division`,`j`.`glacc` AS `acccode`,`j`.`description` AS `deskripsi`,`j`.`budgettype` AS `jenisbudget`,`j`.`amount` AS `nilai`,`j`.`useddate` AS `tanggalpelaksanaan`,`j`.`textpurpose` AS `maksudtujuan`,`j`.`textintroduce` AS `latarbelakang`,`j`.`textstrategic` AS `strategis`,`j`.`textbussiness` AS `bisnis`,`j`.`textrisk` AS `risiko`,`j`.`textfund` AS `pembiayaan`,`j`.`textrecomendation` AS `rekomendasi`,`j`.`textschedule` AS `penjadwalan`,`j`.`status` AS `status`,`j`.`statusdescription` AS `statusdescription`,`j`.`filedoc` AS `filedoc`,concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/filejustification?route=justification&name=',`j`.`filedoc`) AS `filedocurl`,`j`.`iby` AS `iby`,date_format(`j`.`idt`,'%Y-%m-%d %H:%i:%s') AS `idt` from `tbl_justification` `j` where (`j`.`isdeleted` = 0) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_justificationttd` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_justificationttd`*/; +/*!50001 DROP VIEW IF EXISTS `vw_justificationttd`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_justificationttd` AS select `t`.`_idx` AS `id`,`t`.`idxjustification` AS `idxjustification`,`t`.`idemployee` AS `idemployee`,`t`.`nik` AS `nik`,`e`.`fullname` AS `fullname`,`e`.`positionname` AS `positionname`,`t`.`category` AS `category`,`t`.`imgqr` AS `imgqr`,(case when (`t`.`imgqr` <> '') then concat(left(substring_index(`t`.`imgqr`,'.',1),1),'xxxxx') else '' end) AS `token`,concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/getimageinfo?route=png&name=',`t`.`imgqr`) AS `imgqrurl`,`t`.`issigned` AS `issigned`,date_format(`t`.`signeddate`,'%d/%m/%Y') AS `signeddate`,'' AS `actions` from (`dbproc`.`tbl_justificationttd` `t` join `dbssotcel`.`tbl_employee` `e` on((`e`.`id` = `t`.`idemployee`))) where ((`t`.`isdeleted` = 0) and (`e`.`isdeleted` = 0)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_menus` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_menus`*/; +/*!50001 DROP VIEW IF EXISTS `vw_menus`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_menus` AS select `m`.`_idx` AS `_idx`,`m`.`menutext` AS `menutext`,`m`.`sort` AS `sort`,`e`.`id` AS `idemployee`,`e`.`nik` AS `nik`,ifnull(`a`.`isactivated`,0) AS `isactivated` from ((`dbssotcel`.`tbl_employee` `e` left join `dbproc`.`tbl_employee_accessibility` `a` on(((`e`.`id` = `a`.`idemployee`) or isnull(`a`.`idemployee`)))) left join `dbproc`.`tbl_menus` `m` on(((`m`.`_idx` = `a`.`idxmenu`) or isnull(`a`.`idxmenu`)))) where (`e`.`nik` = 86002) order by `m`.`sort` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_menusaccessibility` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_menusaccessibility`*/; +/*!50001 DROP VIEW IF EXISTS `vw_menusaccessibility`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_menusaccessibility` AS select `m`.`_idx` AS `_idx`,`m`.`menutext` AS `menutext`,`m`.`sort` AS `sort`,`e`.`id` AS `idemployee`,`e`.`nik` AS `nik`,ifnull(`a`.`isactivated`,0) AS `isactivated` from ((`dbssotcel`.`tbl_employee` `e` left join `dbproc`.`tbl_employee_accessibility` `a` on(((`e`.`id` = `a`.`idemployee`) or isnull(`a`.`idemployee`)))) left join `dbproc`.`tbl_menus` `m` on(((`m`.`_idx` = `a`.`idxmenu`) or isnull(`a`.`idxmenu`) or isnull(`a`.`idxmenu`)))) where ((`e`.`isdeleted` = 0) or isnull(`a`.`isdeleted`) or isnull(`e`.`isdeleted`)) order by `m`.`sort` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_po` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_po`*/; +/*!50001 DROP VIEW IF EXISTS `vw_po`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_po` AS select `p`.`_idx` AS `_idx`,`p`.`trxid` AS `trxid`,ifnull(`p`.`ponumber`,'000') AS `ponumber`,`p`.`idxpr` AS `idxpr`,`pr`.`prnumber` AS `prnumber`,`p`.`idxjustification` AS `idxjustification`,`p`.`justificationnumber` AS `justificationnumber`,`p`.`idxvendor` AS `idxvendor`,`p`.`vendorname` AS `vendorname`,`p`.`vendorid` AS `vendorid`,date_format(`p`.`podate`,'%Y%m%d') AS `podate`,date_format(`p`.`vper_start`,'%Y%m%d') AS `vper_start`,date_format(`p`.`vper_end`,'%Y%m%d') AS `vper_end`,`p`.`podescription` AS `podescription`,trim(`p`.`identifyprojectnumber`) AS `identifyprojectnumber`,`p`.`contractdescription` AS `contractdescription`,`p`.`contractperiodfrom` AS `contractperiodfrom`,`p`.`contractperiodto` AS `contractperiodto`,`p`.`units` AS `units`,`p`.`totalpo` AS `totalpo`,round((ifnull(`p`.`totalpo`,0) / `pr`.`totalvalue`),3) AS `totalqty`,`p`.`status` AS `status`,`p`.`statusdescription` AS `statusdescription`,`p`.`idxapproval` AS `idxapproval`,`p`.`nikapproval` AS `nikapproval`,concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/getimageinfo?route=png&name=',`p`.`filepng`) AS `filetoken`,`p`.`approveddate` AS `approveddate`,`p`.`isadjustment` AS `isadjustment`,`p`.`migo` AS `migo`,`p`.`iby` AS `iby` from (`tbl_pr` `pr` left join `tbl_po` `p` on(((`pr`.`_idx` = `p`.`idxpr`) or isnull(`p`.`idxpr`)))) where ((`p`.`isdeleted` = 0) or isnull(`p`.`isdeleted`)) order by `p`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_poadjlist` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_poadjlist`*/; +/*!50001 DROP VIEW IF EXISTS `vw_poadjlist`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_poadjlist` AS select `p`.`_idx` AS `_idx`,`a`.`_idx` AS `idxadjustment`,`p`.`trxid` AS `trxid`,`p`.`ponumber` AS `ponumber`,`p`.`idxpr` AS `idxpr`,`p`.`prnumber` AS `prnumber`,`p`.`idxjustification` AS `idxjustification`,`p`.`justificationnumber` AS `justificationnumber`,`p`.`idxvendor` AS `idxvendor`,`p`.`vendorname` AS `vendorname`,`p`.`vendorid` AS `vendorid`,`p`.`podate` AS `podate`,`p`.`podatettd` AS `podatettd`,`p`.`vper_start` AS `vper_start`,`p`.`vper_end` AS `vper_end`,`p`.`podescription` AS `podescription`,`p`.`identifyprojectnumber` AS `identifyprojectnumber`,`p`.`contractdescription` AS `contractdescription`,`p`.`contractperiodfrom` AS `contractperiodfrom`,`p`.`contractperiodto` AS `contractperiodto`,`p`.`units` AS `units`,`p`.`totalqty` AS `totalqty`,`p`.`totalpo` AS `totalpo`,`a`.`adjval` AS `adjval`,`a`.`reason` AS `reason`,`a`.`dates` AS `dateadjustment`,`a`.`grandtotal` AS `grandtotal`,`a`.`status` AS `status`,`a`.`statusdescription` AS `statusdescription`,concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/getimageinfo?route=po&name=',`a`.`filedoc`) AS `filedoc` from (`tbl_po` `p` join `tbl_poadj` `a` on((`p`.`_idx` = `a`.`idxpo`))) where ((`p`.`isdeleted` = 0) and (`a`.`isdeleted` = 0)) order by `p`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_poboq` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_poboq`*/; +/*!50001 DROP VIEW IF EXISTS `vw_poboq`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_poboq` AS select `p`.`_idx` AS `idxpr`,ifnull(`po`.`idxpo`,0) AS `idxpo`,`p`.`prnumber` AS `prnumber`,`p`.`totalvalue` AS `totalpr`,ifnull(`po`.`ponumber`,'') AS `ponumber`,ifnull(`po`.`identifyprojectnumber`,'') AS `identifyprojectnumber`,`p`.`idxjustification` AS `idxjustification`,`b`.`_idx` AS `idxjustificationboq`,`p`.`justificationnumber` AS `justificationnumber`,`cp`.`amount` AS `totalbudget`,`b`.`items` AS `items`,`b`.`qty` AS `qty`,`b`.`unitprice` AS `unitprice`,`b`.`units` AS `units`,`b`.`total` AS `total`,ifnull(`po`.`idxpoboq`,0) AS `idxpoboq`,ifnull(`po`.`idxvendor`,0) AS `idxvendor`,ifnull(`po`.`vendorid`,'') AS `vendorid`,ifnull(`po`.`vendorname`,'') AS `vendorname`,ifnull(`po`.`description`,'') AS `description`,ifnull(`po`.`startdate`,'') AS `startdate`,ifnull(`po`.`enddate`,'') AS `enddate`,ifnull(`po`.`curr`,0) AS `curr`,ifnull(`po`.`hs`,0) AS `hs`,ifnull(`po`.`qty`,0) AS `qtypoboq`,ifnull(`po`.`poamount`,0) AS `poamount`,ifnull(`po`.`ratepo`,0) AS `ratepo`,ifnull(`po`.`migo`,'') AS `migo`,`po`.`status` AS `status`,`po`.`statusdescription` AS `statusdescription` from (((((`tbl_pr` `p` join `tbl_justification` `j` on((`j`.`_idx` = `p`.`idxjustification`))) join `tbl_requestbudget` `r` on((`r`.`_idx` = `j`.`idxrequestbudget`))) join `tbl_budgetcapexinfo` `cp` on((`cp`.`_idx` = `r`.`idxbudgetid`))) join `tbl_justificationboq` `b` on((`j`.`_idx` = `b`.`idxjustification`))) left join `vw_poheaderdetail` `po` on(((`b`.`_idx` = `po`.`idxjustificationboq`) or isnull(`po`.`idxjustificationboq`)))) where ((`p`.`isdeleted` = 0) and (`p`.`status` in (2,6)) and (`j`.`isdeleted` = 0) and (`b`.`isdeleted` = 0) and ((`po`.`isdeleted` = 0) or isnull(`po`.`isdeleted`))) order by `b`.`_idx`,`p`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_poboqdetail` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_poboqdetail`*/; +/*!50001 DROP VIEW IF EXISTS `vw_poboqdetail`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_poboqdetail` AS select `d`.`_idx` AS `_idx`,`d`.`idxpoboq` AS `idxpoboq`,`poboq`.`vendorname` AS `vendorname`,`poboq`.`unitprice` AS `unitprice`,`poboq`.`qty` AS `qtypoboq`,`d`.`isbulk` AS `isbulk`,`d`.`qty` AS `qty`,`d`.`description` AS `description` from (`tbl_poboq` `poboq` join `tbl_poboqdetail` `d` on((`poboq`.`_idx` = `d`.`idxpoboq`))) where (`d`.`isdeleted` = 0) order by `d`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_poheaderdetail` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_poheaderdetail`*/; +/*!50001 DROP VIEW IF EXISTS `vw_poheaderdetail`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_poheaderdetail` AS select `p`.`_idx` AS `idxpo`,`p`.`podate` AS `podate`,`poboq`.`_idx` AS `idxpoboq`,`poboq`.`idxjustification` AS `idxjustification`,`poboq`.`idxjustificationboq` AS `idxjustificationboq`,`poboq`.`items` AS `items`,`poboq`.`qty` AS `qty`,`poboq`.`unitprice` AS `unitprice`,`poboq`.`units` AS `units`,`poboq`.`total` AS `total`,`poboq`.`idxvendor` AS `idxvendor`,`poboq`.`vendorid` AS `vendorid`,`poboq`.`vendorname` AS `vendorname`,`poboq`.`description` AS `description`,`poboq`.`enddate` AS `enddate`,`poboq`.`startdate` AS `startdate`,`poboq`.`curr` AS `curr`,`poboq`.`hs` AS `hs`,`poboq`.`poamount` AS `poamount`,`poboq`.`ratepo` AS `ratepo`,`poboq`.`ponumber` AS `ponumber`,`poboq`.`identifyprojectnumber` AS `identifyprojectnumber`,`poboq`.`migo` AS `migo`,`poboq`.`isdeleted` AS `isdeleted`,`poboq`.`status` AS `status`,`poboq`.`statusdescription` AS `statusdescription` from (`tbl_po` `p` join `tbl_poboq` `poboq` on((`p`.`_idx` = `poboq`.`idxheader`))) where ((`p`.`isdeleted` = 0) and (`poboq`.`isdeleted` = 0)) order by `p`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_poinventorydetail` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_poinventorydetail`*/; +/*!50001 DROP VIEW IF EXISTS `vw_poinventorydetail`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_poinventorydetail` AS select `pb`.`_idx` AS `_idx`,`pb`.`idxheader` AS `idxheader`,`pb`.`idxjustification` AS `idxjustification`,`pb`.`idxjustificationboq` AS `idxjustificationboq`,`pb`.`items` AS `items`,`pb`.`qty` AS `qty`,`pb`.`unitprice` AS `unitprice`,`pb`.`units` AS `units`,`pb`.`total` AS `total`,`pb`.`idxvendor` AS `idxvendor`,`pb`.`vendorid` AS `vendorid`,`pb`.`vendorname` AS `vendorname`,`pb`.`description` AS `description`,date_format(`pb`.`enddate`,'%Y-%m-%d') AS `enddate`,date_format(`pb`.`startdate`,'%Y-%m-%d') AS `startdate`,`pb`.`curr` AS `curr`,`pb`.`hs` AS `hs`,`pb`.`poamount` AS `poamount`,`pb`.`ratepo` AS `ratepo`,`pb`.`ponumber` AS `ponumber`,`pb`.`identifyprojectnumber` AS `identifyprojectnumber`,`pb`.`migo` AS `migo`,`pb`.`status` AS `status`,`pb`.`statusdescription` AS `statusdescription` from `tbl_poboq` `pb` where (`pb`.`isdeleted` = 0) order by `pb`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_poinventoryheader` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_poinventoryheader`*/; +/*!50001 DROP VIEW IF EXISTS `vw_poinventoryheader`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_poinventoryheader` AS select `p`.`_idx` AS `_idx`,`p`.`ponumber` AS `ponumber`,`p`.`identifyprojectnumber` AS `identifyprojectnumber`,`p`.`vendorname` AS `vendorname`,sum(`b`.`poamount`) AS `totalpo`,`p`.`podescription` AS `podescription` from (`tbl_po` `p` join `tbl_poboq` `b` on((`p`.`_idx` = `b`.`idxheader`))) where ((`p`.`ponumber` <> '000') and (`p`.`ponumber` is not null) and (`p`.`isdeleted` = 0)) group by `p`.`_idx` order by `p`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_popaylist` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_popaylist`*/; +/*!50001 DROP VIEW IF EXISTS `vw_popaylist`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_popaylist` AS select `p`.`_idx` AS `idxpo`,`p`.`ponumber` AS `ponumber`,`p`.`idxpr` AS `idxpr`,`p`.`prnumber` AS `prnumber`,`p`.`idxjustification` AS `idxjustification`,`p`.`justificationnumber` AS `justificationnumber`,`p`.`identifyprojectnumber` AS `sp3number`,`p`.`idxvendor` AS `idxvendor`,`p`.`vendorname` AS `vendorname`,`p`.`vendorid` AS `vendorid`,`p`.`podate` AS `podate`,`p`.`vper_start` AS `vper_start`,`p`.`vper_end` AS `vper_end`,`p`.`podescription` AS `podescription`,`p`.`units` AS `units`,`p`.`totalqty` AS `totalqty`,`p`.`totalpo` AS `totalpo`,ifnull(`adj`.`adjval`,0) AS `totaladj`,(`p`.`totalpo` + ifnull(`adj`.`adjval`,0)) AS `grandtotal`,ifnull(sum(`f`.`totalinvoice`),0) AS `totalinvoice`,((`p`.`totalpo` + ifnull(`adj`.`adjval`,0)) - ifnull(sum(`f`.`totalinvoice`),0)) AS `remaininvoice`,count(`f`.`payto`) AS `payto`,`p`.`idxpoboq` AS `idxpoboq`,`p`.`status` AS `status`,`p`.`statusdescription` AS `statusdescription` from ((`tbl_po` `p` left join `tbl_finance` `f` on(((`p`.`_idx` = `f`.`idxpo`) or isnull(`f`.`idxpo`)))) left join `tbl_poadj` `adj` on(((`p`.`_idx` = `adj`.`idxpo`) or isnull(`adj`.`idxpo`)))) where (`p`.`isdeleted` = 0) group by `p`.`_idx`,`f`.`idxpo` order by `p`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_pottd` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_pottd`*/; +/*!50001 DROP VIEW IF EXISTS `vw_pottd`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_pottd` AS select `p`.`_idx` AS `_idx`,`p`.`idxpo` AS `idxpo`,`p`.`idemployee` AS `idemployee`,`p`.`nik` AS `nik`,`p`.`category` AS `category`,`p`.`token` AS `token`,`p`.`imgqr` AS `imgqr`,`p`.`issigned` AS `issigned`,`p`.`signeddate` AS `signeddate`,`p`.`isdeleted` AS `isdeleted`,`p`.`remarkdeleted` AS `remarkdeleted`,`p`.`iby` AS `iby`,`p`.`idt` AS `idt`,`p`.`uby` AS `uby`,`p`.`udt` AS `udt`,`p`.`dby` AS `dby`,`p`.`ddt` AS `ddt` from `tbl_pottd` `p` where (`p`.`isdeleted` = 0) order by `p`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_pr` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_pr`*/; +/*!50001 DROP VIEW IF EXISTS `vw_pr`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_pr` AS select `p`.`_idx` AS `id`,`p`.`trxidpr` AS `trxidpr`,`p`.`prnumber` AS `prnumber`,`p`.`idxjustification` AS `idxjustification`,`p`.`justificationnumber` AS `justificationnumber`,`j`.`glacc` AS `glaccount`,`p`.`costcenter` AS `costcenter`,`c`.`costcentername` AS `costcentername`,`p`.`profitcenter` AS `profitcenter`,`pc`.`profitname` AS `profitname`,`p`.`description` AS `description`,`p`.`qty` AS `qty`,`p`.`unit` AS `unit`,`p`.`netprice` AS `netprice`,`p`.`totalvalue` AS `totalvalue`,`p`.`curr` AS `curr`,`p`.`prdate` AS `prdate`,date_format(`p`.`prdate`,'%Y%m%d') AS `prdateYmd`,`p`.`status` AS `status`,`p`.`statusdescription` AS `statusdescription`,`p`.`idxapproval` AS `idxapproval`,`p`.`nikapproval` AS `nikapproval`,`e`.`fullname` AS `approvalname`,`p`.`approveddate` AS `approveddate`,`p`.`isused` AS `isused`,concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/getimageinfo?route=png&name=',`p`.`filepng`) AS `urltoken`,concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/getfilejustification?route=justification&name=',`j`.`filedoc`) AS `justificationdoc`,`p`.`iby` AS `iby`,`p`.`idt` AS `idt` from ((((`dbproc`.`tbl_pr` `p` left join `dbproc`.`tbl_justification` `j` on(((`j`.`_idx` = `p`.`idxjustification`) or isnull(`j`.`_idx`)))) join `dbproc`.`tbl_costcenter` `c` on((`p`.`costcenter` = `c`.`costcentercode`))) join `dbproc`.`tbl_profitcenter` `pc` on((`p`.`profitcenter` = `pc`.`profitcode`))) left join `dbssotcel`.`tbl_employee` `e` on(((`e`.`nik` = convert(`p`.`nikapproval` using utf8)) or isnull(`e`.`nik`)))) where ((`p`.`isdeleted` = 0) and (`e`.`isdeleted` = 0)) order by `p`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_prmanagement` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_prmanagement`*/; +/*!50001 DROP VIEW IF EXISTS `vw_prmanagement`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_prmanagement` AS select `p`.`_idx` AS `id`,`p`.`trxidpr` AS `trxidpr`,`p`.`prnumber` AS `prnumber`,`p`.`idxjustification` AS `idxjustification`,`p`.`justificationnumber` AS `justificationnumber`,`j`.`glacc` AS `glaccount`,`p`.`costcenter` AS `costcenter`,`p`.`profitcenter` AS `profitcenter`,`p`.`description` AS `description`,`p`.`qty` AS `qty`,`p`.`unit` AS `unit`,`p`.`netprice` AS `netprice`,`p`.`totalvalue` AS `totalvalue`,`p`.`curr` AS `curr`,`p`.`prdate` AS `prdate`,date_format(`p`.`prdate`,'%Y%m%d') AS `prdateYmd`,`p`.`status` AS `status`,`p`.`statusdescription` AS `statusdescription`,`p`.`idxapproval` AS `idxapproval`,`p`.`nikapproval` AS `nikapproval`,`p`.`approveddate` AS `approveddate`,`p`.`isused` AS `isused`,concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/getimageinfo?route=png&name=',`p`.`filepng`) AS `urltoken`,concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/getfilejustification?route=justification&name=',`j`.`filedoc`) AS `justificationdoc`,`p`.`iby` AS `iby`,`p`.`idt` AS `idt` from (`tbl_pr` `p` join `tbl_justification` `j` on((`j`.`_idx` = `p`.`idxjustification`))) where (`p`.`isdeleted` = 0) order by `p`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_procjustification` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_procjustification`*/; +/*!50001 DROP VIEW IF EXISTS `vw_procjustification`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_procjustification` AS select `t`.`_idx` AS `id`,`t`.`idxpr` AS `idxpr`,`t`.`prnumber` AS `prnumber`,`t`.`procjustificationnumber` AS `procjustificationnumber`,`t`.`idxjustification` AS `idxjustification`,`t`.`justificationnumber` AS `justificationnumber`,`j`.`title` AS `judul`,`j`.`justificationnumber` AS `nomorjustifikasi`,`j`.`division` AS `divisi`,`j`.`glacc` AS `acccode`,`j`.`description` AS `deskripsi`,`j`.`budgettype` AS `jenisbudget`,`j`.`amount` AS `nilai`,(case when (`j`.`status` = 2) then concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/filejustification?route=justification:merge&name=',`j`.`filedocmerge`) else concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/filejustification?route=justification&name=',`j`.`filedoc`) end) AS `justificationdoc`,(case when (`j`.`status` = 2) then concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/filejustification?route=justification:pdf&name=',`j`.`filepdf`) else '' end) AS `justificationpdf`,(case when (`j`.`status` = 2) then concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/filejustification?route=procjustification:merge&name=',`pd`.`filedocmerge`) else concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/filejustification?route=procjustification&name=',`pd`.`filename`) end) AS `procjustificationdoc`,(case when (`j`.`status` = 2) then concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/filejustification?route=procjustification:pdf&name=',`pd`.`pdffile`) else '' end) AS `procjustificationpdf`,`t`.`idxcreated` AS `idxcreated`,`t`.`nikcreated` AS `nikcreated`,`t`.`idxverified` AS `idxverified`,`t`.`nikverified` AS `nikverified`,`t`.`idxapproval` AS `idxapproval`,`t`.`nikapproval` AS `nikapproval`,`t`.`status` AS `status`,`t`.`statusdescription` AS `statusdescription`,`t`.`iby` AS `iby`,`t`.`idt` AS `idt`,'' AS `filedoc`,'' AS `ttd` from ((`tbl_justification` `j` join `tbl_procjustification` `t` on((`j`.`_idx` = `t`.`idxjustification`))) left join `tbl_procjustificationdoc` `pd` on((((`t`.`_idx` = `pd`.`idxheader`) or isnull(`pd`.`idxheader`)) and ((`pd`.`filecategory` = 'justifikasi') or isnull(`pd`.`filecategory`))))) where (`t`.`isdeleted` = 0) order by `t`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_procjustificationdoc` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_procjustificationdoc`*/; +/*!50001 DROP VIEW IF EXISTS `vw_procjustificationdoc`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_procjustificationdoc` AS select `tbl_procjustificationdoc`.`_idx` AS `id`,`tbl_procjustificationdoc`.`idxheader` AS `idxheader`,`tbl_procjustificationdoc`.`numberoffile` AS `numberoffile`,`tbl_procjustificationdoc`.`filecategory` AS `filecategory`,`tbl_procjustificationdoc`.`filename` AS `filename`,`tbl_procjustificationdoc`.`descriptionfile` AS `descriptionfile`,concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/getimageinfo?route=procjustification&name=',`tbl_procjustificationdoc`.`filename`) AS `urldoc` from `tbl_procjustificationdoc` where (`tbl_procjustificationdoc`.`isdeleted` = 0) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_procjustificationdocmerge` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_procjustificationdocmerge`*/; +/*!50001 DROP VIEW IF EXISTS `vw_procjustificationdocmerge`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_procjustificationdocmerge` AS select `t`.`_idx` AS `id`,`t`.`idxpr` AS `idxpr`,`t`.`prnumber` AS `prnumber`,`t`.`procjustificationnumber` AS `procjustificationnumber`,`t`.`idxjustification` AS `idxjustification`,`t`.`justificationnumber` AS `justificationnumber`,`j`.`title` AS `judul`,`j`.`justificationnumber` AS `nomorjustifikasi`,`j`.`division` AS `division`,date_format(`j`.`useddate`,'%Y-%m-%d') AS `tanggalpelaksanaan`,date_format(`j`.`useddate`,'%M %Y') AS `useddate`,`d`.`ismergedoc` AS `ismergedoc`,`j`.`glacc` AS `acccode`,`j`.`description` AS `deskripsi`,`j`.`budgettype` AS `jenisbudget`,`d`.`filename` AS `filedoc`,`d`.`_idx` AS `idxfiledoc`,`j`.`amount` AS `nilai`,(case when (`d`.`ismergedoc` = 1) then concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/filejustification?route=procjustification:merge&name=',`d`.`filedocmerge`) else concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/filejustification?route=procjustification&name=',`d`.`filename`) end) AS `justificationdoc`,(case when (`d`.`ismergedoc` = 1) then concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/filejustification?route=procjustification:pdf&name=',`d`.`pdffile`) else '' end) AS `justificationpdf`,`t`.`idxcreated` AS `idxcreated`,`t`.`nikcreated` AS `nikcreated`,`t`.`idxverified` AS `idxverified`,`t`.`nikverified` AS `nikverified`,`t`.`idxapproval` AS `idxapproval`,`t`.`nikapproval` AS `nikapproval`,`t`.`status` AS `status`,`t`.`statusdescription` AS `statusdescription`,`t`.`iby` AS `iby`,`t`.`idt` AS `idt` from ((`tbl_procjustification` `t` join `tbl_justification` `j` on((`j`.`_idx` = `t`.`idxjustification`))) join `tbl_procjustificationdoc` `d` on((`t`.`_idx` = `d`.`idxheader`))) where ((`t`.`isdeleted` = 0) and (`d`.`filecategory` = 'justifikasi')) order by `t`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_procjustificationttd` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_procjustificationttd`*/; +/*!50001 DROP VIEW IF EXISTS `vw_procjustificationttd`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_procjustificationttd` AS select `t`.`_idx` AS `id`,`p`.`_idx` AS `idxheader`,`p`.`idxjustification` AS `idxjustification`,`t`.`idemployee` AS `idemployee`,`e`.`fullname` AS `fullname`,`e`.`positionname` AS `positionname`,`t`.`nik` AS `nik`,`t`.`category` AS `category`,`t`.`imgqr` AS `imgqr`,(case when (`t`.`imgqr` <> '') then concat(left(substring_index(`t`.`imgqr`,'.',1),1),'xxxxx') else '' end) AS `token`,(case when (`t`.`imgqr` <> '') then concat('https://e-portal.telkomcel.tl/app/ext/be/eproc/main/getimageinfo?route=pngproc&name=',`t`.`imgqr`) else '' end) AS `imgqrurl`,`t`.`issigned` AS `issigned`,`t`.`signeddate` AS `signeddate` from ((`dbproc`.`tbl_procjustification` `p` join `dbproc`.`tbl_procjustificationttd` `t` on((`p`.`_idx` = `t`.`idxjustification`))) join `dbssotcel`.`tbl_employee` `e` on((`e`.`id` = `t`.`idemployee`))) where (`t`.`isdeleted` = 0) order by `t`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_profitcenter` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_profitcenter`*/; +/*!50001 DROP VIEW IF EXISTS `vw_profitcenter`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_profitcenter` AS select `p`.`id` AS `id`,`p`.`profitcode` AS `profitcode`,`p`.`profitname` AS `profitname` from `tbl_profitcenter` `p` where (`p`.`isdeleted` = 0) order by `p`.`id` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_requestbudget` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_requestbudget`*/; +/*!50001 DROP VIEW IF EXISTS `vw_requestbudget`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = latin1 */; +/*!50001 SET character_set_results = latin1 */; +/*!50001 SET collation_connection = latin1_swedish_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_requestbudget` AS select `r`.`_idx` AS `id`,`r`.`trxid` AS `trxid`,`r`.`justificationnumber` AS `justificationnumber`,`r`.`yearstgt` AS `yearstgt`,date_format(`r`.`transactiondate`,'%Y-%m-%d') AS `transactiondate`,`r`.`budgettype` AS `budgettype`,`r`.`budgetid` AS `budgetid`,`r`.`activityname` AS `activityname`,`r`.`glacc` AS `glacc`,`r`.`targetrfs` AS `targetrfs`,`c`.`amount` AS `limitamount`,`r`.`amount` AS `amount`,((`c`.`amount` - `d`.`k`) + `d`.`d`) AS `due`,`r`.`crdb` AS `crdb`,`r`.`isused` AS `isused`,`r`.`iby` AS `iby` from ((`tbl_budgetcapexinfo` `c` join `tbl_requestbudget` `r` on((`c`.`_idx` = `r`.`idxbudgetid`))) left join `vw_budgetrequestdue` `d` on((`c`.`_idx` = `d`.`idxbudgetid`))) where ((`c`.`isdeleted` = 0) and (`r`.`isdeleted` = 0) and (`r`.`isused` = 0)) order by `r`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vw_vendorinfo` +-- + +/*!50001 DROP TABLE IF EXISTS `vw_vendorinfo`*/; +/*!50001 DROP VIEW IF EXISTS `vw_vendorinfo`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = latin1 */; +/*!50001 SET character_set_results = latin1 */; +/*!50001 SET collation_connection = latin1_swedish_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`ssotcel`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vw_vendorinfo` AS select `tbl_vendorinfo`.`_idx` AS `id`,`tbl_vendorinfo`.`vendorid` AS `vendorid`,`tbl_vendorinfo`.`vendorname` AS `vendorname`,`tbl_vendorinfo`.`picname` AS `picname`,`tbl_vendorinfo`.`address` AS `address`,`tbl_vendorinfo`.`telp` AS `telp`,`tbl_vendorinfo`.`location` AS `location`,`tbl_vendorinfo`.`bussinessgroup` AS `bussinessgroup`,`tbl_vendorinfo`.`isactivated` AS `isactivated` from `tbl_vendorinfo` where (`tbl_vendorinfo`.`isdeleted` = 0) order by `tbl_vendorinfo`.`_idx` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2025-03-20 15:47:14 diff --git a/middlewares/auth.js b/middlewares/auth.js new file mode 100644 index 0000000..0cd8df1 --- /dev/null +++ b/middlewares/auth.js @@ -0,0 +1,36 @@ +const jwt = require('jsonwebtoken'); + + + +module.exports = (req, res, next) => { + // console.log(req); + const authheader = req.get("Authorization"); + // console.log(authheader); + if(!authheader){ + const error = new Error("Not Authenticated"); + error.statusCode = 401; + throw error; + } + + const token = authheader.split(" ")[1]; + // console.log(token); + let decodedtoken; + try { + // decodedtoken = jwt.verify(token, process.env.SECRET_KEY); + decodedtoken = jwt.verify(token, "Pr0C#2022oct"); + req.nik = decodedtoken.nik; + // console.log(decodedtoken); + } catch (error) { + // console.log("fdfdf "+error); + error.message = error.message; + error.statusCode = 500; + throw error; + } + + if(!decodedtoken){ + const error = new Error("Not Authenticated"); + error.statusCode = 401; + throw error; + } + next(); +} \ No newline at end of file diff --git a/middlewares/logging.js b/middlewares/logging.js new file mode 100644 index 0000000..fe77583 --- /dev/null +++ b/middlewares/logging.js @@ -0,0 +1,96 @@ + +const colllogging = require('../models/colllogging'); + +// const getLoggerForStatusCode = (statusCode) => { +// // console.log(statusCode); +// if (statusCode >= 500) { +// return console.error.bind(console) +// } +// if (statusCode >= 400) { +// return console.warn.bind(console) +// } + +// return console.log.bind(console) +// } + +module.exports = (req, res, next) => { + // console.info(`${req.method} ${req.originalUrl}`) + const cleanup = () => { + res.removeListener('finish', logFn) + res.removeListener('close', abortFn) + res.removeListener('error', errorFn) + } + + const logFn = () => { + try { + cleanup() + // console.log(req['headers']['content-type']) + let nz_date_string = new Date().toLocaleString("en-US", { timeZone: "Asia/Jakarta" }); + // console.log(nz_date_string); + // const secretkey = req.body.secretkey + const iprequest = req.headers['x-forwarded-for'] + const timestamp = nz_date_string//new Date().toISOString() + const useragent = req.headers['user-agent'] + const contenttype = req.headers['content-type']==undefined ? "none" : req.headers['content-type'] + const originalurl = req.originalUrl + const requestbody = JSON.stringify(req.body) + const requestheader = JSON.stringify(req.headers) + const statuscode = res.statusCode + const response = res.get('responseData') + + var savelogging = new colllogging( + { + // secretkey : secretkey, + iprequest : iprequest, + timestamp : timestamp, + useragent : useragent, + contenttype : contenttype, + originalurl : originalurl, + requestbody : requestbody, + requestheader : requestheader, + statuscode : statuscode, + response : response + } + ); + savelogging.save(function(err,data){ + + if(err) + { + const error = new Error("Logging failed"); + error.statusCode = 401; + error.message = err.toString(); + throw error; + } + else{ + //console.log(data); + } + }); + } catch (err) { + const error = new Error("Logging failed"); + error.statusCode = 401; + error.message = err.toString(); + throw error; + + } + + + } + + + const abortFn = () => { + cleanup() + console.warn('Request aborted by the client') + } + + const errorFn = err => { + cleanup() + console.error(`Request pipeline error: ${err}`) + } + + // successful pipeline (regardless of its response) + res.on('finish', logFn) // successful pipeline (regardless of its response) + res.on('close', abortFn) // aborted pipeline + res.on('error', errorFn) // pipeline internal error + next() +} + diff --git a/middlewares/multer.js b/middlewares/multer.js new file mode 100644 index 0000000..1c0fe08 --- /dev/null +++ b/middlewares/multer.js @@ -0,0 +1,61 @@ +const multer = require('multer'); +const path = require('path'); + +const imageStorage = multer.diskStorage({ + // Destination to store image + destination: 'assets/images', + filename: (req, file, cb) => { + // let filename=file.originalname.split(".")[0]; + // cb(null, filename + '_' + Date.now() + path.extname(file.originalname)) + cb(null, file.originalname) + // file.fieldname is name of the field (image) + // path.extname get the uploaded file extension + } +}); +const imageUpload = multer({ + storage: imageStorage, + limits: { + fileSize: 1500000 // 1000000 Bytes = 1 MB + }, + fileFilter(req, file, cb) { + if (!file.originalname.match(/\.(png|jpg)$/)) { + // upload only png and jpg format + return cb(new Error('Please upload a Image')) + } + // cb(undefined, true) + cb(null, true) + } +}).single("attendancefile"); + +module.exports = (req, res, next) => { + try { + // console.log(req); + imageUpload(req,res,next, function(err){ + try { + if (err){ + console.log(err); + res.status(400).send({ + "success":false, + "message" : JSON.stringify(err), + "data" :[] + }); + } else { + console.log('The filename is ' + res.req.file.filename); + // req.append("filename",res.req.file.filename); + // req.body.attendancefile=res.req.file.filename; + } + next(); + } catch (error) { + console.log("error "+error); + } + }); + + } catch (error) { + console.log(error); + error.message = error.message; + error.statusCode = 500; + throw error; + } + + +} \ No newline at end of file diff --git a/middlewares/multer/po-doc.js b/middlewares/multer/po-doc.js new file mode 100644 index 0000000..e50db79 --- /dev/null +++ b/middlewares/multer/po-doc.js @@ -0,0 +1,79 @@ +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/po/") + // cb(null, "assets/words/" + pathdir + "/") + }, + filename : (req, file, cb) => { + // let filename=file.originalname.split(".")[0]; + // console.log("body :"+req.body); + let nik = req.nik; + // let category = req.body.filecategory; + // let filedoc = category+'_'+nik+'_' + Date.now() + path.extname(file.originalname); + let filedoc = nik+'_' + Date.now() + path.extname(file.originalname); + // req.body.filedoc = filedoc; + // cb(null, filedoc); + // console.log(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: '5mb' // 1000000 Bytes = 5 MB + }, + fileFilter(req, file, cb) { + // if (!file.originalname.match(/\.(png|jpg|pdf)$/)) { + // console.log(file.originalname.match); + if (!file.originalname.match(/\.(docx|pdf|PDF)$/)) { + // upload only png and jpg format + req.fileValidationError = "Please upload a word document in ( docx / pdf ) max 5 mb"; + cb(new Error('Please upload a word document in ( docx / pdf ) max 5 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/middlewares/multer/poboq-csv.js b/middlewares/multer/poboq-csv.js new file mode 100644 index 0000000..bf636cb --- /dev/null +++ b/middlewares/multer/poboq-csv.js @@ -0,0 +1,79 @@ +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/po/boq") + // cb(null, "assets/words/" + pathdir + "/") + }, + filename : (req, file, cb) => { + // let filename=file.originalname.split(".")[0]; + // console.log("body :"+req.body); + let nik = req.nik; + // let category = req.body.filecategory; + // let filedoc = category+'_'+nik+'_' + Date.now() + path.extname(file.originalname); + let filedoc = nik+'_boq' + path.extname(file.originalname); + // req.body.filedoc = filedoc; + // cb(null, filedoc); + // console.log(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: '5mb' // 1000000 Bytes = 5 MB + }, + fileFilter(req, file, cb) { + // if (!file.originalname.match(/\.(png|jpg|pdf)$/)) { + // console.log(file.originalname.match); + if (!file.originalname.match(/\.(csv)$/)) { + // upload only png and jpg format + req.fileValidationError = "Please upload a word document in ( csv ) max 5 mb"; + cb(new Error('Please upload a csv file format max 5 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/middlewares/multer/proc-doc.js b/middlewares/multer/proc-doc.js new file mode 100644 index 0000000..4912739 --- /dev/null +++ b/middlewares/multer/proc-doc.js @@ -0,0 +1,77 @@ +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/procjustification/") + // cb(null, "assets/words/" + pathdir + "/") + }, + filename : (req, file, cb) => { + // let filename=file.originalname.split(".")[0]; + // console.log("body :"+req.body); + let nik = req.nik; + // let category = req.body.filecategory; + // let filedoc = category+'_'+nik+'_' + Date.now() + path.extname(file.originalname); + let filedoc = 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: '5mb' // 1000000 Bytes = 5 MB + }, + fileFilter(req, file, cb) { + // if (!file.originalname.match(/\.(png|jpg|pdf)$/)) { + if (!file.originalname.match(/\.(docx|pdf)$/)) { + // upload only png and jpg format + req.fileValidationError = "Please upload a word document in ( docx / pdf ) max 5 mb"; + cb(new Error('Please upload a word document in ( docx / pdf ) max 5 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/middlewares/multer/single.js b/middlewares/multer/single.js new file mode 100644 index 0000000..47e9df0 --- /dev/null +++ b/middlewares/multer/single.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/words/") + // cb(null, "assets/words/" + pathdir + "/") + }, + filename : (req, file, cb) => { + // let filename=file.originalname.split(".")[0]; + let nik = req.nik; + let filedoc = 'justifikasi_'+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: '5mb' // 1000000 Bytes = 5 MB + }, + fileFilter(req, file, cb) { + // if (!file.originalname.match(/\.(png|jpg|pdf)$/)) { + if (!file.originalname.match(/\.(docx)$/)) { + // upload only png and jpg format + req.fileValidationError = "Please upload a word document in ( docx ) max 5 mb"; + cb(new Error('Please upload a word document in ( docx ) max 5 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/middlewares/multer/singlebast.js b/middlewares/multer/singlebast.js new file mode 100644 index 0000000..57d8c69 --- /dev/null +++ b/middlewares/multer/singlebast.js @@ -0,0 +1,75 @@ +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/bast/pdf/") + // cb(null, "assets/words/" + pathdir + "/") + }, + filename : (req, file, cb) => { + // let filename=file.originalname.split(".")[0]; + let nik = req.nik; + let filedoc = 'bast_'+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: '5mb' // 1000000 Bytes = 5 MB + }, + fileFilter(req, file, cb) { + // if (!file.originalname.match(/\.(png|jpg|pdf)$/)) { + // if (!file.originalname.match(/\.(docx|pdf)$/)) { + if (!file.originalname.match(/\.(pdf)$/)) { + // upload only png and jpg format + req.fileValidationError = "Please upload a word document in ( docx ) max 5 mb"; + cb(new Error('Please upload a word document in ( docx ) max 5 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/middlewares/multer/singlefinance.js b/middlewares/multer/singlefinance.js new file mode 100644 index 0000000..be2cfb0 --- /dev/null +++ b/middlewares/multer/singlefinance.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/finance/") + // cb(null, "assets/words/" + pathdir + "/") + }, + filename : (req, file, cb) => { + // let filename=file.originalname.split(".")[0]; + let nik = req.nik; + let filedoc = 'fin_'+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: '5mb' // 1000000 Bytes = 5 MB + }, + fileFilter(req, file, cb) { + // if (!file.originalname.match(/\.(png|jpg|pdf)$/)) { + if (!file.originalname.match(/\.(docx|pdf)$/)) { + // upload only png and jpg format + req.fileValidationError = "Please upload a word document in ( docx / pdf ) max 5 mb"; + cb(new Error('Please upload a word document in ( docx / pdf ) max 5 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/middlewares/multer/singlehandover.js b/middlewares/multer/singlehandover.js new file mode 100644 index 0000000..88463f5 --- /dev/null +++ b/middlewares/multer/singlehandover.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/bast/") + // cb(null, "assets/words/" + pathdir + "/") + }, + filename : (req, file, cb) => { + // let filename=file.originalname.split(".")[0]; + let nik = req.nik; + let filedoc = 'basthandover_'+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: '5mb' // 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 5 mb"; + cb(new Error('Please upload a word document in ( docx ) / pdf file max 5 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/middlewares/multer/singlehandoversign.js b/middlewares/multer/singlehandoversign.js new file mode 100644 index 0000000..38ce597 --- /dev/null +++ b/middlewares/multer/singlehandoversign.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/bast/") + // cb(null, "assets/words/" + pathdir + "/") + }, + filename : (req, file, cb) => { + // let filename=file.originalname.split(".")[0]; + let nik = req.nik; + let filedoc = 'basthandoversign_'+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: '5mb' // 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 5 mb"; + cb(new Error('Please upload a word document in ( docx ) / pdf file max 5 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/middlewares/multer/singlejustification.js b/middlewares/multer/singlejustification.js new file mode 100644 index 0000000..0e3ea11 --- /dev/null +++ b/middlewares/multer/singlejustification.js @@ -0,0 +1,76 @@ +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('d'); + // console.log(req.get("path")); + // let pathdir = req.get("path"); + cb(null, "assets/justification/") + // cb(null, "assets/words/" + pathdir + "/") + }, + filename : (req, file, cb) => { + // let filename=file.originalname.split(".")[0]; + console.log('filed'); + let nik = req.nik; + let filedoc = 'justifikasi_'+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: '5mb' // 1000000 Bytes = 5 MB + }, + fileFilter(req, file, cb) { + // if (!file.originalname.match(/\.(png|jpg|pdf)$/)) { + if (!file.originalname.match(/\.(docx)$/)) { + // upload only png and jpg format + req.fileValidationError = "Please upload a word document in ( docx ) max 5 mb"; + cb(new Error('Please upload a word document in ( docx ) max 5 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/models/colllogging.js b/models/colllogging.js new file mode 100644 index 0000000..1db5cd2 --- /dev/null +++ b/models/colllogging.js @@ -0,0 +1,50 @@ +const dbkebengkel=require('../config/collections/dbkebengkel'); +const Schema = dbkebengkel.Schema; + +const moment = require('moment-timezone'); +const OTLtime = moment.tz(Date.now(), "Asia/Tokyo"); +// console.log(OTLtime); + +const collschema = Schema({ + iprequest : { + type : String, + required : true + }, + timestamp : { + type : String, + required : true + }, + useragent : { + type : String, + required : true + }, + contenttype : { + type : String, + required : true + }, + originalurl :{ + type : String, + required : true + }, + requestbody :{ + type : String, + required : true, + }, + requestheader :{ + type : String, + required : true, + }, + statuscode : { + type : String, + required : true + }, + response : { + type : String, + required : true, + } +// },{collection:"colllogging", timestamps : true}); +},{collection:"colllogging", timestamps : { + currentTime : () => OTLtime +}}); + +module.exports = dbkebengkel.model('colllogging', collschema); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..6da2fce --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3871 @@ +{ + "name": "wsproc", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "wsproc", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "body-parser": "^1.20.1", + "cors": "^2.8.5", + "csv": "^6.3.8", + "dotenv": "^16.0.3", + "express": "^4.18.2", + "express-validator": "^6.14.2", + "jsonwebtoken": "^9.0.2", + "libreoffice-convert": "^1.4.1", + "moment-timezone": "^0.5.39", + "mongoose": "^6.8.0", + "multer": "^1.4.5-lts.1", + "mysql": "^2.18.1", + "nodemailer": "^6.8.0", + "nodemon": "^3.1.0", + "path": "^0.12.7", + "qrcode": "^1.5.1", + "request": "^2.88.2", + "slashes": "^3.0.10", + "util": "^0.12.5" + } + }, + "node_modules/@aws-crypto/crc32": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", + "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", + "optional": true, + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/crc32/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-crypto/ie11-detection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", + "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "optional": true, + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", + "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "optional": true, + "dependencies": { + "@aws-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/sha256-js": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "optional": true, + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", + "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "optional": true, + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-sdk/client-cognito-identity": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.525.0.tgz", + "integrity": "sha512-LxI9rfn6Vy/EX6I7as14PAKqAhUwVQviaMV/xCLQIubgdVj1xfexVURdiSk7GQshpcwtrs+GQWV21yP+3AX/7A==", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.525.0", + "@aws-sdk/core": "3.525.0", + "@aws-sdk/credential-provider-node": "3.525.0", + "@aws-sdk/middleware-host-header": "3.523.0", + "@aws-sdk/middleware-logger": "3.523.0", + "@aws-sdk/middleware-recursion-detection": "3.523.0", + "@aws-sdk/middleware-user-agent": "3.525.0", + "@aws-sdk/region-config-resolver": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.525.0", + "@aws-sdk/util-user-agent-browser": "3.523.0", + "@aws-sdk/util-user-agent-node": "3.525.0", + "@smithy/config-resolver": "^2.1.4", + "@smithy/core": "^1.3.5", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/hash-node": "^2.1.3", + "@smithy/invalid-dependency": "^2.1.3", + "@smithy/middleware-content-length": "^2.1.3", + "@smithy/middleware-endpoint": "^2.4.4", + "@smithy/middleware-retry": "^2.1.4", + "@smithy/middleware-serde": "^2.1.3", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.4", + "@smithy/util-defaults-mode-node": "^2.2.3", + "@smithy/util-endpoints": "^1.1.4", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.525.0.tgz", + "integrity": "sha512-6KwGQWFoNLH1UupdWPFdKPfTgjSz1kN8/r8aCzuvvXBe4Pz+iDUZ6FEJzGWNc9AapjvZDNO1hs23slomM9rTaA==", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.525.0", + "@aws-sdk/middleware-host-header": "3.523.0", + "@aws-sdk/middleware-logger": "3.523.0", + "@aws-sdk/middleware-recursion-detection": "3.523.0", + "@aws-sdk/middleware-user-agent": "3.525.0", + "@aws-sdk/region-config-resolver": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.525.0", + "@aws-sdk/util-user-agent-browser": "3.523.0", + "@aws-sdk/util-user-agent-node": "3.525.0", + "@smithy/config-resolver": "^2.1.4", + "@smithy/core": "^1.3.5", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/hash-node": "^2.1.3", + "@smithy/invalid-dependency": "^2.1.3", + "@smithy/middleware-content-length": "^2.1.3", + "@smithy/middleware-endpoint": "^2.4.4", + "@smithy/middleware-retry": "^2.1.4", + "@smithy/middleware-serde": "^2.1.3", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.4", + "@smithy/util-defaults-mode-node": "^2.2.3", + "@smithy/util-endpoints": "^1.1.4", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.525.0.tgz", + "integrity": "sha512-zz13k/6RkjPSLmReSeGxd8wzGiiZa4Odr2Tv3wTcxClM4wOjD+zOgGv4Fe32b9AMqaueiCdjbvdu7AKcYxFA4A==", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.525.0", + "@aws-sdk/core": "3.525.0", + "@aws-sdk/middleware-host-header": "3.523.0", + "@aws-sdk/middleware-logger": "3.523.0", + "@aws-sdk/middleware-recursion-detection": "3.523.0", + "@aws-sdk/middleware-user-agent": "3.525.0", + "@aws-sdk/region-config-resolver": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.525.0", + "@aws-sdk/util-user-agent-browser": "3.523.0", + "@aws-sdk/util-user-agent-node": "3.525.0", + "@smithy/config-resolver": "^2.1.4", + "@smithy/core": "^1.3.5", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/hash-node": "^2.1.3", + "@smithy/invalid-dependency": "^2.1.3", + "@smithy/middleware-content-length": "^2.1.3", + "@smithy/middleware-endpoint": "^2.4.4", + "@smithy/middleware-retry": "^2.1.4", + "@smithy/middleware-serde": "^2.1.3", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.4", + "@smithy/util-defaults-mode-node": "^2.2.3", + "@smithy/util-endpoints": "^1.1.4", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.525.0" + } + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.525.0.tgz", + "integrity": "sha512-a8NUGRvO6rkfTZCbMaCsjDjLbERCwIUU9dIywFYcRgbFhkupJ7fSaZz3Het98U51M9ZbTEpaTa3fz0HaJv8VJw==", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.525.0", + "@aws-sdk/middleware-host-header": "3.523.0", + "@aws-sdk/middleware-logger": "3.523.0", + "@aws-sdk/middleware-recursion-detection": "3.523.0", + "@aws-sdk/middleware-user-agent": "3.525.0", + "@aws-sdk/region-config-resolver": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.525.0", + "@aws-sdk/util-user-agent-browser": "3.523.0", + "@aws-sdk/util-user-agent-node": "3.525.0", + "@smithy/config-resolver": "^2.1.4", + "@smithy/core": "^1.3.5", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/hash-node": "^2.1.3", + "@smithy/invalid-dependency": "^2.1.3", + "@smithy/middleware-content-length": "^2.1.3", + "@smithy/middleware-endpoint": "^2.4.4", + "@smithy/middleware-retry": "^2.1.4", + "@smithy/middleware-serde": "^2.1.3", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.4", + "@smithy/util-defaults-mode-node": "^2.2.3", + "@smithy/util-endpoints": "^1.1.4", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "@smithy/util-utf8": "^2.1.1", + "fast-xml-parser": "4.2.5", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.525.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.525.0.tgz", + "integrity": "sha512-E3LtEtMWCriQOFZpVKpLYzbdw/v2PAOEAMhn2VRRZ1g0/g1TXzQrfhEU2yd8l/vQEJaCJ82ooGGg7YECviBUxA==", + "optional": true, + "dependencies": { + "@smithy/core": "^1.3.5", + "@smithy/protocol-http": "^3.2.1", + "@smithy/signature-v4": "^2.1.3", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-cognito-identity": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.525.0.tgz", + "integrity": "sha512-0djjCN/zN6QFQt1xU64VBOSRP4wJckU6U7FjLPrGpL6w03hF0dUmVUXjhQZe5WKNPCicVc2S3BYPohl/PzCx1w==", + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.523.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.523.0.tgz", + "integrity": "sha512-Y6DWdH6/OuMDoNKVzZlNeBc6f1Yjk1lYMjANKpIhMbkRCvLJw/PYZKOZa8WpXbTYdgg9XLjKybnLIb3ww3uuzA==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.525.0.tgz", + "integrity": "sha512-RNWQGuSBQZhl3iqklOslUEfQ4br1V3DCPboMpeqFtddUWJV3m2u2extFur9/4Uy+1EHVF120IwZUKtd8dF+ibw==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/property-provider": "^2.1.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/util-stream": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.525.0.tgz", + "integrity": "sha512-JDnccfK5JRb9jcgpc9lirL9PyCwGIqY0nKdw3LlX5WL5vTpTG4E1q7rLAlpNh7/tFD1n66Itarfv2tsyHMIqCw==", + "optional": true, + "dependencies": { + "@aws-sdk/client-sts": "3.525.0", + "@aws-sdk/credential-provider-env": "3.523.0", + "@aws-sdk/credential-provider-process": "3.523.0", + "@aws-sdk/credential-provider-sso": "3.525.0", + "@aws-sdk/credential-provider-web-identity": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@smithy/credential-provider-imds": "^2.2.3", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.525.0.tgz", + "integrity": "sha512-RJXlO8goGXpnoHQAyrCcJ0QtWEOFa34LSbfdqBIjQX/fwnjUuEmiGdXTV3AZmwYQ7juk49tfBneHbtOP3AGqsQ==", + "optional": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.523.0", + "@aws-sdk/credential-provider-http": "3.525.0", + "@aws-sdk/credential-provider-ini": "3.525.0", + "@aws-sdk/credential-provider-process": "3.523.0", + "@aws-sdk/credential-provider-sso": "3.525.0", + "@aws-sdk/credential-provider-web-identity": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@smithy/credential-provider-imds": "^2.2.3", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.523.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.523.0.tgz", + "integrity": "sha512-f0LP9KlFmMvPWdKeUKYlZ6FkQAECUeZMmISsv6NKtvPCI9e4O4cLTeR09telwDK8P0HrgcRuZfXM7E30m8re0Q==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.525.0.tgz", + "integrity": "sha512-7V7ybtufxdD3plxeIeB6aqHZeFIUlAyPphXIUgXrGY10iNcosL970rQPBeggsohe4gCM6UvY2TfMeEcr+ZE8FA==", + "optional": true, + "dependencies": { + "@aws-sdk/client-sso": "3.525.0", + "@aws-sdk/token-providers": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.525.0.tgz", + "integrity": "sha512-sAukOjR1oKb2JXG4nPpuBFpSwGUhrrY17PG/xbTy8NAoLLhrqRwnErcLfdTfmj6tH+3094k6ws/Sh8a35ae7fA==", + "optional": true, + "dependencies": { + "@aws-sdk/client-sts": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.525.0.tgz", + "integrity": "sha512-zj439Ok1s44nahIJKpBM4jhAxnSw20flXQpMD2aeGdvUuKm2xmzZP0lX5z9a+XQWFtNh251ZcSt2p+RwtLKtiw==", + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.525.0", + "@aws-sdk/client-sso": "3.525.0", + "@aws-sdk/client-sts": "3.525.0", + "@aws-sdk/credential-provider-cognito-identity": "3.525.0", + "@aws-sdk/credential-provider-env": "3.523.0", + "@aws-sdk/credential-provider-http": "3.525.0", + "@aws-sdk/credential-provider-ini": "3.525.0", + "@aws-sdk/credential-provider-node": "3.525.0", + "@aws-sdk/credential-provider-process": "3.523.0", + "@aws-sdk/credential-provider-sso": "3.525.0", + "@aws-sdk/credential-provider-web-identity": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@smithy/credential-provider-imds": "^2.2.3", + "@smithy/property-provider": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.523.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.523.0.tgz", + "integrity": "sha512-4g3q7Ta9sdD9TMUuohBAkbx/e3I/juTqfKi7TPgP+8jxcYX72MOsgemAMHuP6CX27eyj4dpvjH+w4SIVDiDSmg==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.523.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.523.0.tgz", + "integrity": "sha512-PeDNJNhfiaZx54LBaLTXzUaJ9LXFwDFFIksipjqjvxMafnoVcQwKbkoPUWLe5ytT4nnL1LogD3s55mERFUsnwg==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.523.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.523.0.tgz", + "integrity": "sha512-nZ3Vt7ehfSDYnrcg/aAfjjvpdE+61B3Zk68i6/hSUIegT3IH9H1vSW67NDKVp+50hcEfzWwM2HMPXxlzuyFyrw==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.525.0.tgz", + "integrity": "sha512-4al/6uO+t/QIYXK2OgqzDKQzzLAYJza1vWFS+S0lJ3jLNGyLB5BMU5KqWjDzevYZ4eCnz2Nn7z0FveUTNz8YdQ==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.525.0", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.525.0.tgz", + "integrity": "sha512-8kFqXk6UyKgTMi7N7QlhA6qM4pGPWbiUXqEY2RgUWngtxqNFGeM9JTexZeuavQI+qLLe09VPShPNX71fEDcM6w==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/types": "^2.10.1", + "@smithy/util-config-provider": "^2.2.1", + "@smithy/util-middleware": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.525.0.tgz", + "integrity": "sha512-puVjbxuK0Dq7PTQ2HdddHy2eQjOH8GZbump74yWJa6JVpRW84LlOcNmP+79x4Kscvz2ldWB8XDFw/pcCiSDe5A==", + "optional": true, + "dependencies": { + "@aws-sdk/client-sso-oidc": "3.525.0", + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.523.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.523.0.tgz", + "integrity": "sha512-AqGIu4u+SxPiUuNBp2acCVcq80KDUFjxe6e3cMTvKWTzCbrVk1AXv0dAaJnCmdkWIha6zJDWxpIk/aL4EGhZ9A==", + "optional": true, + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.525.0.tgz", + "integrity": "sha512-DIW7WWU5tIGkeeKX6NJUyrEIdWMiqjLQG3XBzaUj+ufIENwNjdAHhlD8l2vX7Yr3JZRT6yN/84wBCj7Tw1xd1g==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/types": "^2.10.1", + "@smithy/util-endpoints": "^1.1.4", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.495.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.495.0.tgz", + "integrity": "sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==", + "optional": true, + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.523.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.523.0.tgz", + "integrity": "sha512-6ZRNdGHX6+HQFqTbIA5+i8RWzxFyxsZv8D3soRfpdyWIKkzhSz8IyRKXRciwKBJDaC7OX2jzGE90wxRQft27nA==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/types": "^2.10.1", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.525.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.525.0.tgz", + "integrity": "sha512-88Wjt4efyUSBGcyIuh1dvoMqY1k15jpJc5A/3yi67clBQEFsu9QCodQCQPqmRjV3VRcMtBOk+jeCTiUzTY5dRQ==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz", + "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, + "node_modules/@smithy/abort-controller": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.1.3.tgz", + "integrity": "sha512-c2aYH2Wu1RVE3rLlVgg2kQOBJGM0WbjReQi5DnPTm2Zb7F0gk7J2aeQeaX2u/lQZoHl6gv8Oac7mt9alU3+f4A==", + "optional": true, + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.1.4.tgz", + "integrity": "sha512-AW2WUZmBAzgO3V3ovKtsUbI3aBNMeQKFDumoqkNxaVDWF/xfnxAWqBKDr/NuG7c06N2Rm4xeZLPiJH/d+na0HA==", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^2.2.4", + "@smithy/types": "^2.10.1", + "@smithy/util-config-provider": "^2.2.1", + "@smithy/util-middleware": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.3.5.tgz", + "integrity": "sha512-Rrc+e2Jj6Gu7Xbn0jvrzZlSiP2CZocIOfZ9aNUA82+1sa6GBnxqL9+iZ9EKHeD9aqD1nU8EK4+oN2EiFpSv7Yw==", + "optional": true, + "dependencies": { + "@smithy/middleware-endpoint": "^2.4.4", + "@smithy/middleware-retry": "^2.1.4", + "@smithy/middleware-serde": "^2.1.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/util-middleware": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.2.4.tgz", + "integrity": "sha512-DdatjmBZQnhGe1FhI8gO98f7NmvQFSDiZTwC3WMvLTCKQUY+Y1SVkhJqIuLu50Eb7pTheoXQmK+hKYUgpUWsNA==", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^2.2.4", + "@smithy/property-provider": "^2.1.3", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.1.3.tgz", + "integrity": "sha512-rGlCVuwSDv6qfKH4/lRxFjcZQnIE0LZ3D4lkMHg7ZSltK9rA74r0VuGSvWVQ4N/d70VZPaniFhp4Z14QYZsa+A==", + "optional": true, + "dependencies": { + "@aws-crypto/crc32": "3.0.0", + "@smithy/types": "^2.10.1", + "@smithy/util-hex-encoding": "^2.1.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.4.3.tgz", + "integrity": "sha512-Fn/KYJFo6L5I4YPG8WQb2hOmExgRmNpVH5IK2zU3JKrY5FKW7y9ar5e0BexiIC9DhSKqKX+HeWq/Y18fq7Dkpw==", + "optional": true, + "dependencies": { + "@smithy/protocol-http": "^3.2.1", + "@smithy/querystring-builder": "^2.1.3", + "@smithy/types": "^2.10.1", + "@smithy/util-base64": "^2.1.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.1.3.tgz", + "integrity": "sha512-FsAPCUj7VNJIdHbSxMd5uiZiF20G2zdSDgrgrDrHqIs/VMxK85Vqk5kMVNNDMCZmMezp6UKnac0B4nAyx7HJ9g==", + "optional": true, + "dependencies": { + "@smithy/types": "^2.10.1", + "@smithy/util-buffer-from": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.1.3.tgz", + "integrity": "sha512-wkra7d/G4CbngV4xsjYyAYOvdAhahQje/WymuQdVEnXFExJopEu7fbL5AEAlBPgWHXwu94VnCSG00gVzRfExyg==", + "optional": true, + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.1.1.tgz", + "integrity": "sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==", + "optional": true, + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.1.3.tgz", + "integrity": "sha512-aJduhkC+dcXxdnv5ZpM3uMmtGmVFKx412R1gbeykS5HXDmRU6oSsyy2SoHENCkfOGKAQOjVE2WVqDJibC0d21g==", + "optional": true, + "dependencies": { + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.4.4.tgz", + "integrity": "sha512-4yjHyHK2Jul4JUDBo2sTsWY9UshYUnXeb/TAK/MTaPEb8XQvDmpwSFnfIRDU45RY1a6iC9LCnmJNg/yHyfxqkw==", + "optional": true, + "dependencies": { + "@smithy/middleware-serde": "^2.1.3", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/shared-ini-file-loader": "^2.3.4", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-middleware": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.1.4.tgz", + "integrity": "sha512-Cyolv9YckZTPli1EkkaS39UklonxMd08VskiuMhURDjC0HHa/AD6aK/YoD21CHv9s0QLg0WMLvk9YeLTKkXaFQ==", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^2.2.4", + "@smithy/protocol-http": "^3.2.1", + "@smithy/service-error-classification": "^2.1.3", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "tslib": "^2.5.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.1.3.tgz", + "integrity": "sha512-s76LId+TwASrHhUa9QS4k/zeXDUAuNuddKklQzRgumbzge5BftVXHXIqL4wQxKGLocPwfgAOXWx+HdWhQk9hTg==", + "optional": true, + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.1.3.tgz", + "integrity": "sha512-opMFufVQgvBSld/b7mD7OOEBxF6STyraVr1xel1j0abVILM8ALJvRoFbqSWHGmaDlRGIiV9Q5cGbWi0sdiEaLQ==", + "optional": true, + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.2.4.tgz", + "integrity": "sha512-nqazHCp8r4KHSFhRQ+T0VEkeqvA0U+RhehBSr1gunUuNW3X7j0uDrWBxB2gE9eutzy6kE3Y7L+Dov/UXT871vg==", + "optional": true, + "dependencies": { + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.4", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.4.1.tgz", + "integrity": "sha512-HCkb94soYhJMxPCa61wGKgmeKpJ3Gftx1XD6bcWEB2wMV1L9/SkQu/6/ysKBnbOzWRE01FGzwrTxucHypZ8rdg==", + "optional": true, + "dependencies": { + "@smithy/abort-controller": "^2.1.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/querystring-builder": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.1.3.tgz", + "integrity": "sha512-bMz3se+ySKWNrgm7eIiQMa2HO/0fl2D0HvLAdg9pTMcpgp4SqOAh6bz7Ik6y7uQqSrk4rLjIKgbQ6yzYgGehCQ==", + "optional": true, + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.2.1.tgz", + "integrity": "sha512-KLrQkEw4yJCeAmAH7hctE8g9KwA7+H2nSJwxgwIxchbp/L0B5exTdOQi9D5HinPLlothoervGmhpYKelZ6AxIA==", + "optional": true, + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.1.3.tgz", + "integrity": "sha512-kFD3PnNqKELe6m9GRHQw/ftFFSZpnSeQD4qvgDB6BQN6hREHELSosVFUMPN4M3MDKN2jAwk35vXHLoDrNfKu0A==", + "optional": true, + "dependencies": { + "@smithy/types": "^2.10.1", + "@smithy/util-uri-escape": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.1.3.tgz", + "integrity": "sha512-3+CWJoAqcBMR+yvz6D+Fc5VdoGFtfenW6wqSWATWajrRMGVwJGPT3Vy2eb2bnMktJc4HU4bpjeovFa566P3knQ==", + "optional": true, + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.3.tgz", + "integrity": "sha512-iUrpSsem97bbXHHT/v3s7vaq8IIeMo6P6cXdeYHrx0wOJpMeBGQF7CB0mbJSiTm3//iq3L55JiEm8rA7CTVI8A==", + "optional": true, + "dependencies": { + "@smithy/types": "^2.10.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.3.4.tgz", + "integrity": "sha512-CiZmPg9GeDKbKmJGEFvJBsJcFnh0AQRzOtQAzj1XEa8N/0/uSN/v1LYzgO7ry8hhO8+9KB7+DhSW0weqBra4Aw==", + "optional": true, + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.1.3.tgz", + "integrity": "sha512-Jq4iPPdCmJojZTsPePn4r1ULShh6ONkokLuxp1Lnk4Sq7r7rJp4HlA1LbPBq4bD64TIzQezIpr1X+eh5NYkNxw==", + "optional": true, + "dependencies": { + "@smithy/eventstream-codec": "^2.1.3", + "@smithy/is-array-buffer": "^2.1.1", + "@smithy/types": "^2.10.1", + "@smithy/util-hex-encoding": "^2.1.1", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-uri-escape": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.4.2.tgz", + "integrity": "sha512-ntAFYN51zu3N3mCd95YFcFi/8rmvm//uX+HnK24CRbI6k5Rjackn0JhgKz5zOx/tbNvOpgQIwhSX+1EvEsBLbA==", + "optional": true, + "dependencies": { + "@smithy/middleware-endpoint": "^2.4.4", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "@smithy/util-stream": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.10.1.tgz", + "integrity": "sha512-hjQO+4ru4cQ58FluQvKKiyMsFg0A6iRpGm2kqdH8fniyNd2WyanoOsYJfMX/IFLuLxEoW6gnRkNZy1y6fUUhtA==", + "optional": true, + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.1.3.tgz", + "integrity": "sha512-X1NRA4WzK/ihgyzTpeGvI9Wn45y8HmqF4AZ/FazwAv8V203Ex+4lXqcYI70naX9ETqbqKVzFk88W6WJJzCggTQ==", + "optional": true, + "dependencies": { + "@smithy/querystring-parser": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.1.1.tgz", + "integrity": "sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==", + "optional": true, + "dependencies": { + "@smithy/util-buffer-from": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.1.1.tgz", + "integrity": "sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==", + "optional": true, + "dependencies": { + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.2.1.tgz", + "integrity": "sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==", + "optional": true, + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.1.1.tgz", + "integrity": "sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==", + "optional": true, + "dependencies": { + "@smithy/is-array-buffer": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.2.1.tgz", + "integrity": "sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==", + "optional": true, + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.1.4.tgz", + "integrity": "sha512-J6XAVY+/g7jf03QMnvqPyU+8jqGrrtXoKWFVOS+n1sz0Lg8HjHJ1ANqaDN+KTTKZRZlvG8nU5ZrJOUL6VdwgcQ==", + "optional": true, + "dependencies": { + "@smithy/property-provider": "^2.1.3", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.2.3.tgz", + "integrity": "sha512-ttUISrv1uVOjTlDa3nznX33f0pthoUlP+4grhTvOzcLhzArx8qHB94/untGACOG3nlf8vU20nI2iWImfzoLkYA==", + "optional": true, + "dependencies": { + "@smithy/config-resolver": "^2.1.4", + "@smithy/credential-provider-imds": "^2.2.4", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/property-provider": "^2.1.3", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.1.4.tgz", + "integrity": "sha512-/qAeHmK5l4yQ4/bCIJ9p49wDe9rwWtOzhPHblu386fwPNT3pxmodgcs9jDCV52yK9b4rB8o9Sj31P/7Vzka1cg==", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^2.2.4", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz", + "integrity": "sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==", + "optional": true, + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.1.3.tgz", + "integrity": "sha512-/+2fm7AZ2ozl5h8wM++ZP0ovE9/tiUUAHIbCfGfb3Zd3+Dyk17WODPKXBeJ/TnK5U+x743QmA0xHzlSm8I/qhw==", + "optional": true, + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.1.3.tgz", + "integrity": "sha512-Kbvd+GEMuozbNUU3B89mb99tbufwREcyx2BOX0X2+qHjq6Gvsah8xSDDgxISDwcOHoDqUWO425F0Uc/QIRhYkg==", + "optional": true, + "dependencies": { + "@smithy/service-error-classification": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.1.3.tgz", + "integrity": "sha512-HvpEQbP8raTy9n86ZfXiAkf3ezp1c3qeeO//zGqwZdrfaoOpGKQgF2Sv1IqZp7wjhna7pvczWaGUHjcOPuQwKw==", + "optional": true, + "dependencies": { + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/types": "^2.10.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-buffer-from": "^2.1.1", + "@smithy/util-hex-encoding": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.1.1.tgz", + "integrity": "sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==", + "optional": true, + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.1.tgz", + "integrity": "sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==", + "optional": true, + "dependencies": { + "@smithy/util-buffer-from": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@types/node": { + "version": "20.11.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", + "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bignumber.js": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "optional": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bson": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", + "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/csv": { + "version": "6.3.8", + "resolved": "https://registry.npmjs.org/csv/-/csv-6.3.8.tgz", + "integrity": "sha512-gRh3yiT9bHBA5ka2yOpyFqAVu/ZpwWzajMUR/es0ljevAE88WyHBuMUy7jzd2o5j6LYQesEO/AyhbQ9BhbDXUA==", + "dependencies": { + "csv-generate": "^4.4.0", + "csv-parse": "^5.5.5", + "csv-stringify": "^6.4.6", + "stream-transform": "^3.3.1" + }, + "engines": { + "node": ">= 0.1.90" + } + }, + "node_modules/csv-generate": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-4.4.0.tgz", + "integrity": "sha512-geM01acNPZ0wr4/9sKev5fCzFG/tsc/NbuFWrhLc47M1zQyUdEJH65+cxTLIVafEwhBjIYwQ7fdOL9roBqVltQ==" + }, + "node_modules/csv-parse": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.5.5.tgz", + "integrity": "sha512-erCk7tyU3yLWAhk6wvKxnyPtftuy/6Ak622gOO7BCJ05+TYffnPCJF905wmOQm+BpkX54OdAl8pveJwUdpnCXQ==" + }, + "node_modules/csv-stringify": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.4.6.tgz", + "integrity": "sha512-h2V2XZ3uOTLilF5dPIptgUfN/o2ia/80Ie0Lly18LAnw5s8Eb7kt8rfxSUy24AztJZas9f6DPZpVlzDUtFt/ag==" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dijkstrajs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" + }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-validator": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-6.14.2.tgz", + "integrity": "sha512-8XfAUrQ6Y7dIIuy9KcUPCfG/uCbvREctrxf5EeeME+ulanJ4iiW71lWmm9r4YcKKYOCBMan0WpVg7FtHu4Z4Wg==", + "dependencies": { + "lodash": "^4.17.21", + "validator": "^13.7.0" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-xml-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "funding": [ + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + }, + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "optional": true, + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/kareem": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", + "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/libreoffice-convert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/libreoffice-convert/-/libreoffice-convert-1.4.1.tgz", + "integrity": "sha512-ojTK0P0tSuqYhjP5f7lXpVe6FWq6HzxxWOiBC+i78vO0T+OWPO1bG3bhPI1VTyaJeSYGx9MTbJ3Dvfcx6rL2rA==", + "dependencies": { + "async": "^3.2.3", + "tmp": "^0.2.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.39", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.39.tgz", + "integrity": "sha512-hoB6suq4ISDj7BDgctiOy6zljBsdYT0++0ZzZm9rtxIvJhIbQ3nmbgSWe7dNFGurl6/7b1OUkHlmN9JWgXVz7w==", + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mongodb": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.2.tgz", + "integrity": "sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==", + "dependencies": { + "bson": "^4.7.2", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" + }, + "engines": { + "node": ">=12.9.0" + }, + "optionalDependencies": { + "@aws-sdk/credential-providers": "^3.186.0", + "@mongodb-js/saslprep": "^1.1.0" + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongoose": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.12.6.tgz", + "integrity": "sha512-VFxDnWj8esgswwplmpQYMT+lYcvuIhl76WDLz/vgp41/FOhBPM/n3GjyztK8R3r2ljsM6kudvKgqLhfcZEih1Q==", + "dependencies": { + "bson": "^4.7.2", + "kareem": "2.5.1", + "mongodb": "4.17.2", + "mpath": "0.9.0", + "mquery": "4.0.3", + "ms": "2.1.3", + "sift": "16.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/mquery/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mquery/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/mysql": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", + "dependencies": { + "bignumber.js": "9.0.0", + "readable-stream": "2.3.7", + "safe-buffer": "5.1.2", + "sqlstring": "2.3.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mysql/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nodemailer": { + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.11.tgz", + "integrity": "sha512-UiAkgiERuG94kl/3bKfE8o10epvDnl0vokNEtZDPTq9BWzIl6EFT9336SbIT4oaTBD8NmmUTLsQyXHV82eXSWg==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/nodemon": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz", + "integrity": "sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/path/node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", + "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sift": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", + "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/slashes": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.10.tgz", + "integrity": "sha512-3UL3fZySa2o85n5p9Q8Lmt3b4iqfJz557rL8ftPE65F48fXXqm7t0/Jge1oWUAmOdXo29m8WkzBSq6lMAc10ig==" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, + "node_modules/sqlstring": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", + "integrity": "sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stream-transform": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-3.3.1.tgz", + "integrity": "sha512-BL8pv9QL8Ikd11oZwlRDp1qYMhGR0i50zI9ltoijKGc4ubQWal/Rc4p6SYJp1TBOGpE0uAGchwbxOZ1ycwTuqQ==" + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "optional": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..2be2b9c --- /dev/null +++ b/package.json @@ -0,0 +1,32 @@ +{ + "name": "wsproc", + "version": "1.0.0", + "description": "Procurement Web Services", + "main": "app.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "itnsr09@gmail.com", + "license": "ISC", + "dependencies": { + "body-parser": "^1.20.1", + "cors": "^2.8.5", + "csv": "^6.3.8", + "dotenv": "^16.0.3", + "express": "^4.18.2", + "express-validator": "^6.14.2", + "jsonwebtoken": "^9.0.2", + "libreoffice-convert": "^1.4.1", + "moment-timezone": "^0.5.39", + "mongoose": "^6.8.0", + "multer": "^1.4.5-lts.1", + "mysql": "^2.18.1", + "nodemailer": "^6.8.0", + "nodemon": "^3.1.0", + "path": "^0.12.7", + "qrcode": "^1.5.1", + "request": "^2.88.2", + "slashes": "^3.0.10", + "util": "^0.12.5" + } +} diff --git a/routes/bast.js b/routes/bast.js new file mode 100644 index 0000000..06b14c0 --- /dev/null +++ b/routes/bast.js @@ -0,0 +1,19 @@ +const express = require('express'); +const { body } = require('express-validator'); +const bastcontroller = require('../controllers/bast'); +const jwtauth = require('../middlewares/auth.js'); +const uploadfile = require('../middlewares/multer/singlebast.js'); +const uploadfilehandover = require('../middlewares/multer/singlehandover.js'); +const uploadfilehandoversign = require('../middlewares/multer/singlehandoversign.js'); +const router=express.Router(); + +router.get('/getbastactivitylist',[jwtauth], bastcontroller.getBastActivityList); +router.get('/getbasthandoverlist',[jwtauth], bastcontroller.getBastHandoverList); +router.get('/getbastactivitylistdetail',[jwtauth], bastcontroller.getBastActivityListDetail); +router.post('/createbast',[jwtauth, uploadfile], bastcontroller.createBast); +router.post('/updatehandover',[jwtauth, uploadfilehandover], bastcontroller.setUpdateHandOver); +router.post('/updatehandoversign',[jwtauth, uploadfilehandoversign], bastcontroller.uploadHandOverSign); +router.get('/getbastlist',[jwtauth], bastcontroller.getBastList); +router.get('/getbastdetaillist',[jwtauth], bastcontroller.getBastDetailList); + +module.exports = router; \ No newline at end of file diff --git a/routes/budget.js b/routes/budget.js new file mode 100644 index 0000000..638cfab --- /dev/null +++ b/routes/budget.js @@ -0,0 +1,23 @@ +const express = require('express'); +// const { body } = require('express-validator'); +const budgetcontroller = require('../controllers/budget'); +const jwtauth = require('../middlewares/auth.js'); +const router=express.Router(); + +//=== POST METHOD +router.post('/getbudgetlist',[jwtauth], budgetcontroller.getListBudget); +router.post('/setnewbudget',[jwtauth], budgetcontroller.setNewBudget); +router.get('/getbudgettype',[jwtauth], budgetcontroller.getBudgetType); +router.get('/getbudgetdetail',[jwtauth], budgetcontroller.getBudgetDetail); +router.post('/deletebudget',[jwtauth], budgetcontroller.deleteBudget); +router.post('/updatebudget',[jwtauth], budgetcontroller.updateBudget); +// ==== REquest budget +router.post('/reqbudget',[jwtauth], budgetcontroller.setReqBudget); +router.post('/updatereqbudget',[jwtauth], budgetcontroller.updateReqBudget); +router.post('/deletereqbudget',[jwtauth], budgetcontroller.deleteReqBudget); +router.post('/getreqbudgetlist',[jwtauth], budgetcontroller.getListReqBudget); +router.get('/getbudgetlistbyreq',[jwtauth], budgetcontroller.getBudgetListByRequest); +router.get('/getreqbudgetdetail',[jwtauth], budgetcontroller.getReqBudgetDetail); +router.get('/gettrxidreqbudget',[jwtauth], budgetcontroller.getTrxIdReqBudget); + +module.exports = router; diff --git a/routes/coa.js b/routes/coa.js new file mode 100644 index 0000000..300343b --- /dev/null +++ b/routes/coa.js @@ -0,0 +1,16 @@ +const express = require('express'); +// const { body } = require('express-validator'); +const coacontroller = require('../controllers/coa'); +const jwtauth = require('../middlewares/auth.js'); +const router=express.Router(); + +//=== POST METHOD +router.post('/getcoalist',[jwtauth], coacontroller.getListCoa); +router.post('/setnewcoa',[jwtauth], coacontroller.setNewCoa); +router.get('/getcoadetail',[jwtauth], coacontroller.getCoaDetail); +router.post('/deletecoa',[jwtauth], coacontroller.deleteCoa); +router.post('/updatecoa',[jwtauth], coacontroller.updateCoa); +router.get('/getcostcenter',[jwtauth], coacontroller.getCostCenter); +router.get('/getprofitcenter',[jwtauth], coacontroller.getProfitCenter); + +module.exports = router; \ No newline at end of file diff --git a/routes/employee.js b/routes/employee.js new file mode 100644 index 0000000..7f7bc7d --- /dev/null +++ b/routes/employee.js @@ -0,0 +1,19 @@ +const express = require('express'); +// const { body } = require('express-validator'); +const employeecontroller = require('../controllers/employee'); +const jwtauth = require('../middlewares/auth.js'); +const upload = require('../middlewares/multer.js'); +// const logging = require('../middleware/logging.js'); +const router=express.Router(); + +//=== POST METHOD +router.post('/auth',[], employeecontroller.getEmployeeAuth); +router.post('/withoutauth',[], employeecontroller.getEmployeeWithoutAuth); +router.post('/getmenus',[jwtauth], employeecontroller.getEmployeeMenus); +router.post('/getmenusaccess',[jwtauth], employeecontroller.getEmployeeMenusAccessibility); +router.post('/setmenusaccess',[jwtauth], employeecontroller.setEmployeeMenusAccessibility); +//=== GET METHOD +// router.get('/getimageinfo',[], employeecontroller.getimageinfo ); +router.get('/getlistemp',[], employeecontroller.getListEmployee ); + +module.exports = router; \ No newline at end of file diff --git a/routes/finance.js b/routes/finance.js new file mode 100644 index 0000000..649734f --- /dev/null +++ b/routes/finance.js @@ -0,0 +1,18 @@ +const express = require('express'); +const { body } = require('express-validator'); +const financecontroller = require('../controllers/finance'); +const jwtauth = require('../middlewares/auth.js'); +const uploadfilefin= require('../middlewares/multer/singlefinance.js'); +const router=express.Router(); + +router.get('/getpopaylist',[jwtauth], financecontroller.getPoPayList); +router.get('/getpopaylistdetail',[jwtauth], financecontroller.getPoPayListDetail); +router.get('/getpaychecklist',[jwtauth], financecontroller.getPayCheckList); +router.post('/submitpaypo',[jwtauth], financecontroller.submitPayPo); +router.get('/getfinancelist',[jwtauth], financecontroller.getFinanceList); +router.get('/getcurrencylist',[jwtauth], financecontroller.getCurrencyList); +router.get('/getfinancelistdetail',[jwtauth], financecontroller.getFinanceListDetail); +router.get('/getfinancedetailupload',[jwtauth], financecontroller.getFinanceDetailUpload); +router.post('/uploaddocfinance',[jwtauth, uploadfilefin], financecontroller.UploadDocFin); + +module.exports = router; \ No newline at end of file diff --git a/routes/inventory.js b/routes/inventory.js new file mode 100644 index 0000000..8e26267 --- /dev/null +++ b/routes/inventory.js @@ -0,0 +1,15 @@ +const express = require('express'); +// const { body } = require('express-validator'); +const inventorycontroller = require('../controllers/inventory'); +const jwtauth = require('../middlewares/auth.js'); +const router=express.Router(); + +//=== POST METHOD +router.post('/newinventory',[jwtauth], inventorycontroller.newInventory); +router.post('/updinventory',[jwtauth], inventorycontroller.updInventory); +router.get('/getinventorylist',[jwtauth], inventorycontroller.getListInventory); +router.get('/getheaderpolist',[jwtauth], inventorycontroller.getHeaderListPO); +router.get('/getdetailpolist',[jwtauth], inventorycontroller.getDetailListPO); +router.post('/delinventory',[jwtauth], inventorycontroller.delInventory); + +module.exports = router; diff --git a/routes/justification.js b/routes/justification.js new file mode 100644 index 0000000..c39e3dc --- /dev/null +++ b/routes/justification.js @@ -0,0 +1,23 @@ +const express = require('express'); +// const { body } = require('express-validator'); +const justificationcontroller = require('../controllers/justification'); +const jwtauth = require('../middlewares/auth.js'); +const uploadfile = require('../middlewares/multer/singlejustification.js'); +const router=express.Router(); + +//=== POST& get METHOD +router.get('/getlistbudgetrequest',[jwtauth], justificationcontroller.getListBudgetRequest); +router.get('/getlistcreatedby',[jwtauth], justificationcontroller.getListCreatedBy); +router.get('/getlistcheckedby',[jwtauth], justificationcontroller.getListCheckedBy); +router.get('/getlistapprovedby',[jwtauth], justificationcontroller.getListApprovedBy); +router.post('/setnewjustification',[jwtauth, uploadfile], justificationcontroller.newJustification); +router.post('/deletejustification',[jwtauth], justificationcontroller.deleteJustification); +router.post('/updatejustification',[jwtauth, uploadfile], justificationcontroller.updateJustification); +router.post('/updatestatusjustification',[jwtauth], justificationcontroller.updateStatusJustification); +router.get('/getdetailjustification',[jwtauth], justificationcontroller.detailJustification); +router.post('/justificationlist',[jwtauth], justificationcontroller.getListJustification); +router.post('/signedjustfication',[jwtauth, uploadfile], justificationcontroller.setSignedJustification); +router.post('/convertdocxtopdf',[jwtauth], justificationcontroller.convertDocxToPdf); +router.post('/mergedocx',[jwtauth], justificationcontroller.mergedocx); + +module.exports = router; diff --git a/routes/main.js b/routes/main.js new file mode 100644 index 0000000..7022ffe --- /dev/null +++ b/routes/main.js @@ -0,0 +1,23 @@ +const express = require('express'); +// const { body } = require('express-validator'); +const maincontroller = require('../controllers/main'); +const jwtauth = require('../middlewares/auth.js'); +// const logging = require('../middleware/logging.js'); +const router=express.Router(); + +//=== POST METHOD +router.post('/getappinfo',[], maincontroller.getappInfo ); +router.get('/gettoken',[], maincontroller.getTokenauth ); +// router.post('/sendotpclient',jwtauth, maincontroller.sendOTPClient ); +// router.post('/gethomeemployeeinfo',jwtauth, maincontroller.getHomeEmployeeInfo ); +// router.post('/getemployeeofficeinfo',jwtauth, maincontroller.getEmployeeOfficeInfo ); +//=== GET METHOD +router.get('/getimageinfo',[], maincontroller.getimageinfo ); +router.get('/getjustifikasitemplate',[], maincontroller.getjustifikasitemplate ); +router.get('/filejustification',[], maincontroller.filejustification ); +router.get('/getfilejustification',[], maincontroller.filejustification ); +router.get('/getbasttemplate',[], maincontroller.getbasttemplate ); +router.get('/bastfile',[], maincontroller.getbastfile ); +// router.post('/getimageinfo',[], maincontroller.getimageinfo ); + +module.exports = router; \ No newline at end of file diff --git a/routes/po.js b/routes/po.js new file mode 100644 index 0000000..1e6d366 --- /dev/null +++ b/routes/po.js @@ -0,0 +1,44 @@ +const express = require('express'); +const { body } = require('express-validator'); +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 router=express.Router(); + +router.get('/getlistvendor',[jwtauth], pocontroller.getListVendor); +router.get('/getpoboqlist',[jwtauth], pocontroller.getPoBoqList); +router.post('/savepoboq',[jwtauth], pocontroller.savePoboq); +router.get('/getidxpoheader',[jwtauth], pocontroller.getidxpoheader); + +router.post('/deletepoboq',[jwtauth], pocontroller.deletePoBoq); +router.post('/getlastsignedpo',[jwtauth], pocontroller.getLastSignedPo); +router.get('/getpomanagementlist',[jwtauth], pocontroller.getPOManagementList); +router.get('/getpomanagementlistdetail',[jwtauth], pocontroller.getPOManagementListDetail); +router.get('/getpoinventorylist',[jwtauth], pocontroller.getPOInventorylist); +router.get('/getpoinventorydetaillist',[jwtauth], pocontroller.getPOInventoryDetaillist); +router.get('/getpottdlist',[jwtauth], pocontroller.getPOttdList); +router.get('/getpottddetaillist',[jwtauth], pocontroller.getPOttdDetailList); +router.post('/setsignedpo',[jwtauth], pocontroller.setSignedPO); +router.get('/getpomigolist',[jwtauth], pocontroller.getPOMigoList); +router.get('/getpomigodetaillist',[jwtauth], pocontroller.getPOMigoDetailList); + +// === SAP Enpoint +router.post('/createposap',[jwtauth], pocontroller.createPOSAP); +router.post('/createmigosap',[jwtauth], pocontroller.createMIGOPOSAP); +router.post('/changeposap',[jwtauth], pocontroller.changePOSAP); +router.post('/releaseposap',[jwtauth], pocontroller.releasePOSAP); +router.post('/unreleaseposap',[jwtauth], pocontroller.unreleasePOSAP); +router.post('/createheaderposap',[jwtauth], pocontroller.createHeaderPOSAP); + + +// === PO Adjustment +router.post('/newpoadj',[jwtauth, uploadfile], pocontroller.newpoadjustment); +router.post('/updpoadj',[jwtauth, uploadfile], pocontroller.updpoadjustment); +router.post('/updpoboq',[jwtauth, uploadfileBoq], pocontroller.updpoboq); +router.get('/poadjlist',[jwtauth], pocontroller.getpoadjlist); +router.get('/poadjlistdetail',[jwtauth], pocontroller.getpoadjlistdetail); +router.get('/poapprovedlist',[jwtauth], pocontroller.getpoapprovedlist); +router.post('/deleteadjpo',[jwtauth], pocontroller.deletepoadj); +router.post('/submitadjpo',[jwtauth], pocontroller.submitpoadj); +module.exports = router; \ No newline at end of file diff --git a/routes/pr.js b/routes/pr.js new file mode 100644 index 0000000..9dd87ab --- /dev/null +++ b/routes/pr.js @@ -0,0 +1,25 @@ +const express = require('express'); +const { body } = require('express-validator'); +const prcontroller = require('../controllers/pr'); +const jwtauth = require('../middlewares/auth.js'); +const uploadfile = require('../middlewares/multer/single.js'); +const router=express.Router(); + +router.get('/getlistjustification',[jwtauth], prcontroller.getListJustification); +router.get('/gettrxidpr',[jwtauth], prcontroller.gettrxid); +router.get('/getdetailpr',[jwtauth], prcontroller.getDetailPr); +router.get('/getprmanagementlist',[jwtauth], prcontroller.getprmanagementlist); +router.get('/getprmanagementlistdetail',[jwtauth], prcontroller.getprmanagementlistdetail); +router.post('/prlist',[jwtauth], prcontroller.getListPr); +router.post('/setnewpr',[jwtauth], prcontroller.setNewPr); +router.post('/updatepr',[jwtauth], prcontroller.setUpdatePr); +router.post('/approvedpr',[jwtauth], prcontroller.approvedPR); +router.post('/updatestatuspr',[jwtauth], prcontroller.setUpdateStatusPr); +router.post('/deletepr',[jwtauth], prcontroller.deletePR); +// ==== SAP Part +router.post('/releaseprsap',[jwtauth], prcontroller.releasePRSAP); +router.post('/unreleaseprsap',[jwtauth], prcontroller.unreleasePRSAP); +router.post('/changeprsap',[jwtauth], prcontroller.changePRSAP); +router.post('/deleteprsap',[jwtauth], prcontroller.deletePRSAP); + +module.exports = router; \ No newline at end of file diff --git a/routes/procjustification.js b/routes/procjustification.js new file mode 100644 index 0000000..3635d69 --- /dev/null +++ b/routes/procjustification.js @@ -0,0 +1,19 @@ +const express = require('express'); +const { body } = require('express-validator'); +const procjustificationcontroller = require('../controllers/procjustification'); +const jwtauth = require('../middlewares/auth.js'); +// const uploadfile = require('../middlewares/multer/single.js'); +const uploadfileDoc = require('../middlewares/multer/proc-doc.js'); +const router=express.Router(); + +router.get('/getlistpr',[jwtauth], procjustificationcontroller.getListPr); +router.post('/setnewprocjustification',[jwtauth], procjustificationcontroller.setNewProcJustification); +router.post('/updateprocjustification',[jwtauth, uploadfileDoc], procjustificationcontroller.updateProcJustification); +router.post('/inquiryprocjustification',[jwtauth, uploadfileDoc], procjustificationcontroller.InquiryProcJustification); +router.post('/deleteprocjustification',[jwtauth], procjustificationcontroller.deleteProcJustification); +router.get('/detailprocjustification',[jwtauth], procjustificationcontroller.detailProcJustification); +router.post('/procjustificationlist',[jwtauth], procjustificationcontroller.procJustificationList); +router.post('/updatestatusprocjustification',[jwtauth], procjustificationcontroller.updateStatusProcJustification); +router.post('/signprocjustification',[jwtauth], procjustificationcontroller.SignedProcJustification); + +module.exports = router; \ No newline at end of file diff --git a/routes/vendor.js b/routes/vendor.js new file mode 100644 index 0000000..8f8ed5a --- /dev/null +++ b/routes/vendor.js @@ -0,0 +1,14 @@ +const express = require('express'); +// const { body } = require('express-validator'); +const vendorcontroller = require('../controllers/vendor'); +const jwtauth = require('../middlewares/auth.js'); +const router=express.Router(); + +//=== POST METHOD +router.post('/getvendorlist',[jwtauth], vendorcontroller.getListVendor); +router.post('/setnewvendor',[jwtauth], vendorcontroller.setNewVendor); +router.get('/getvendordetail',[jwtauth], vendorcontroller.getVendorDetail); +router.post('/deletevendor',[jwtauth], vendorcontroller.deleteVendor); +router.post('/updatevendor',[jwtauth], vendorcontroller.updateVendor); + +module.exports = router; \ No newline at end of file diff --git a/services/bastmergedocx.sh b/services/bastmergedocx.sh new file mode 100644 index 0000000..11cf010 --- /dev/null +++ b/services/bastmergedocx.sh @@ -0,0 +1,59 @@ +#res=$(curl -i -X POST -H "Content-Type: application/json" -H 'x-username:proc' -H 'x-password:pr0c2022#tc3l' http://localhost:8083/PoiWord82/authentification/sync.sh 2>/dev/null) +cd /home/nodejs/wsproc/services/ +p=/home/nodejs/wsproc/services/processbast.txt +if [ -f $p ]; +then + echo "another process detected, Exiting.." + exit 1; +fi +echo "Starting Time : "`date` > $p +# printf "\n" >> $p +# ==== GET TOken +rm -rf r.json +curl -s -X POST -H "Content-Type: application/json" -H 'x-username:proc' -H 'x-password:pr0c2022#tc3l' http://localhost:8083/PoiWord82/authentification/sync.sh > r.json +token=$(cat r.json | jq -r '.response.token') >> $p +# echo $token + +# ==== Merge Docx +# curl -s -X POST -H "Content-Type: application/" -H 'x-token:'$token -d '{"idxjustification":"0"}' http://localhost:8083/PoiWord82/main/sync.sh/mergedoc > m.json +# idxjustification=$(echo "SELECT _idx FROM dbproc.tbl_justification where ismergedoc=0 order by _idx asc limit 1" | mysql -h172.17.12.71 -ussotcel -pssotcel#20i7) +idxbast=`mysql -h172.17.12.71 -ussotcel -pssotcel#20i7 -s -N -e "SELECT _idx FROM dbproc.vw_bast where ismergedoc=0 order by _idx asc limit 1"` + +if [ -z "$idxbast" ] +then + echo "\$idxbast is empty" +else + curl -s --location --request POST "http://localhost:8083/PoiWord82/main/sync.sh/mergedocbast" \ + --header "x-token: "$token \ + --header "Content-Type: application/x-www-form-urlencoded" \ + --data-urlencode "idx="""$idxbast > mbast.json + # cat mbast.json + filedocmerge=$(cat mbast.json | jq -r '.response.filedocmerge[0]') + + # echo $filedocmerge + + statuscode=$(cat mbast.json | jq -r '.metadata.code') + if [ "$statuscode" == 200 ] + then + mysql -h172.17.12.71 -ussotcel -pssotcel#20i7 -e "update dbproc.tbl_bast set ismergedoc=1,mergedate=now(),filedoc='$filedocmerge' where _idx='$idxbast'" + fi + + # # === Create Docx to PDF + curl -s --location --request POST "http://localhost:8083/PoiWord82/main/sync.sh/docxtopdfbast" \ + --header "x-token: "$token \ + --header "Content-Type: application/x-www-form-urlencoded" \ + --data-urlencode "docxfilename=$filedocmerge" > mbast.json + + # cat mbast.json + filedocxpdf=$(cat mbast.json | jq -r '.response.filepdf[0]') + mysql -h172.17.12.71 -ussotcel -pssotcel#20i7 -e "update dbproc.tbl_bast set filepdf='$filedocxpdf' where _idx='$idxbast'" + + cat mbast.json >> $p + printf "\n" >> $p + echo "End Time : "`date` >> $p + cat $p > lastprocessbast.txt + +fi + +rm -rf $p +rm -rf mbast.json \ No newline at end of file diff --git a/services/docxtopdf.sh b/services/docxtopdf.sh new file mode 100644 index 0000000..fb8e8b9 --- /dev/null +++ b/services/docxtopdf.sh @@ -0,0 +1,12 @@ +# ==== GET TOken +rm -rf r.json +curl -s -X POST -H "Content-Type: application/json" -H 'x-username:proc' -H 'x-password:pr0c2022#tc3l' http://localhost:8083/PoiWord/authentification/sync.sh > r.json +token=$(cat r.json | jq -r '.response.token') + +# === Create Docx to PDF +curl -s --location --request POST "http://localhost:8083/PoiWord/main/sync.sh/docxtopdf" \ +--header "x-token: "$token \ +--header "Content-Type: application/x-www-form-urlencoded" \ +--data-urlencode "docxfilename=justifikasi_999999_131248.docx" > m.json + +cat m.json diff --git a/services/lastprocess.txt b/services/lastprocess.txt new file mode 100644 index 0000000..2f01ef2 --- /dev/null +++ b/services/lastprocess.txt @@ -0,0 +1,3 @@ +Starting Time : Thu Dec 4 11:19:31 JST 2025 +{"metadata":{"code":200,"message":"OK"},"response":{"filepdf":["justifikasi_00001_1764814771305.pdf"]}} +End Time : Thu Dec 4 11:19:44 JST 2025 diff --git a/services/lastprocessbast.txt b/services/lastprocessbast.txt new file mode 100644 index 0000000..2f19e2f --- /dev/null +++ b/services/lastprocessbast.txt @@ -0,0 +1,3 @@ +Starting Time : Tue Jan 23 13:48:11 JST 2024 +{"metadata":{"code":200,"message":"OK"},"response":{"filepdf":["bast_999999_1705985291504.pdf"]}} +End Time : Tue Jan 23 13:48:13 JST 2024 diff --git a/services/lastprocessproc.txt b/services/lastprocessproc.txt new file mode 100644 index 0000000..3f2b5b5 --- /dev/null +++ b/services/lastprocessproc.txt @@ -0,0 +1,3 @@ +Starting Time : Wed Jul 3 13:39:21 JST 2024 +{"metadata":{"code":200,"message":"OK"},"response":{"filepdf":["procjustifikasi_999999_1719981561245.pdf"]}} +End Time : Wed Jul 3 13:39:23 JST 2024 diff --git a/services/mergedocx.sh b/services/mergedocx.sh new file mode 100644 index 0000000..0b0d002 --- /dev/null +++ b/services/mergedocx.sh @@ -0,0 +1,58 @@ +#res=$(curl -i -X POST -H "Content-Type: application/json" -H 'x-username:proc' -H 'x-password:pr0c2022#tc3l' http://localhost:8083/PoiWord/authentification/sync.sh 2>/dev/null) +cd /home/nodejs/wsproc/services/ +p=/home/nodejs/wsproc/services/process.txt +if [ -f $p ]; +then + echo "another process detected, Exiting.." + exit 1; +fi +echo "Starting Time : "`date` > $p +# printf "\n" >> $p +# ==== GET TOken +rm -rf r.json +curl -s -X POST -H "Content-Type: application/json" -H 'x-username:proc' -H 'x-password:pr0c2022#tc3l' http://localhost:8083/PoiWord82/authentification/sync.sh > r.json +token=$(cat r.json | jq -r '.response.token') +# echo $token + +# ==== Merge Docx +# curl -s -X POST -H "Content-Type: application/" -H 'x-token:'$token -d '{"idxjustification":"0"}' http://localhost:8083/PoiWord/main/sync.sh/mergedoc > m.json +# idxjustification=$(echo "SELECT _idx FROM dbproc.tbl_justification where ismergedoc=0 order by _idx asc limit 1" | mysql -h172.17.12.71 -ussotcel -pssotcel#20i7) +idxjustification=`mysql -h172.17.12.71 -ussotcel -pssotcel#20i7 -s -N -e "SELECT _idx FROM dbproc.tbl_justification where ismergedoc=0 and status=2 order by _idx asc limit 1"` + +if [ -z "$idxjustification" ] +then + echo "\$idxjustification is empty" +else + # == Merge Doc Original to dbproc + curl -s --location --request POST "http://localhost:8083/PoiWord82/main/sync.sh/mergedoc" \ + --header "x-token: "$token \ + --header "Content-Type: application/x-www-form-urlencoded" \ + --data-urlencode "idxjustification=$idxjustification" > m.json + # cat m.json + filedocmerge=$(cat m.json | jq -r '.response.filedocmerge[0]') + + mysql -h172.17.12.71 -ussotcel -pssotcel#20i7 -e "update dbproc.tbl_justification set ismergedoc=1,filedocmerge='$filedocmerge' where _idx=$idxjustification" + + # === Create Docx to PDF + curl -s --location --request POST "http://localhost:8083/PoiWord82/main/sync.sh/docxtopdf" \ + --header "x-token: "$token \ + --header "Content-Type: application/x-www-form-urlencoded" \ + --data-urlencode "docxfilename=$filedocmerge" > m.json + + filedocxpdf=$(cat m.json | jq -r '.response.filepdf[0]') + mysql -h172.17.12.71 -ussotcel -pssotcel#20i7 -e "update dbproc.tbl_justification set filepdf='$filedocxpdf' where _idx=$idxjustification" + + cat m.json >> $p + printf "\n" >> $p + echo "End Time : "`date` >> $p + cat $p > lastprocess.txt + +fi + +rm -rf $p +rm -rf *.json + +# === check proc justification +sh procmergedocx.sh +# === check Bast +sh bastmergedocx.sh \ No newline at end of file diff --git a/services/procmergedocx.sh b/services/procmergedocx.sh new file mode 100644 index 0000000..2d840d5 --- /dev/null +++ b/services/procmergedocx.sh @@ -0,0 +1,71 @@ +#res=$(curl -i -X POST -H "Content-Type: application/json" -H 'x-username:proc' -H 'x-password:pr0c2022#tc3l' http://localhost:8083/PoiWord82/authentification/sync.sh 2>/dev/null) +cd /home/nodejs/wsproc/services/ +p=/home/nodejs/wsproc/services/processproc.txt +if [ -f $p ]; +then + echo "another process detected, Exiting.." + exit 1; +fi +echo "Starting Time : "`date` > $p +# printf "\n" >> $p +# ==== GET TOken +rm -rf r.json +curl -s -X POST -H "Content-Type: application/json" -H 'x-username:proc' -H 'x-password:pr0c2022#tc3l' http://localhost:8083/PoiWord82/authentification/sync.sh > r.json +token=$(cat r.json | jq -r '.response.token') >> $p +# echo $token + +# ==== Merge Docx +# curl -s -X POST -H "Content-Type: application/" -H 'x-token:'$token -d '{"idxjustification":"0"}' http://localhost:8083/PoiWord82/main/sync.sh/mergedoc > m.json +# idxjustification=$(echo "SELECT _idx FROM dbproc.tbl_justification where ismergedoc=0 order by _idx asc limit 1" | mysql -h172.17.12.71 -ussotcel -pssotcel#20i7) +idxsplit=`mysql -h172.17.12.71 -ussotcel -pssotcel#20i7 -s -N -e "SELECT concat(id,'|',idxfiledoc) idxcolumn FROM dbproc.vw_procjustificationdocmerge where status=2 and ismergedoc=0 order by id asc limit 1"` +# idxjustification=`mysql -h172.17.12.71 -ussotcel -pssotcel#20i7 -s -N -e "SELECT idxjustification FROM dbproc.vw_procjustificationdocmerge where ismergedoc=0 and status=2 order by _idx asc limit 1"` + +# $idx=$(printf %s "$idxsplit" | awk -F '|' '/1/ {print $1}') +# $idxfiledoc=`echo $idxsplit | awk -F '|' '/1/ {print $2}'` + +IFS='|' read -r -a array <<< $idxsplit +# echo ${array[0]} == id +# echo ${array[1]} == idfiledoc + + +# echo $idx +if [ -z "${array[0]}" ] +then + echo "\$idx is empty" +else + # == Merge Doc Original to dbproc + curl -s --location --request POST "http://localhost:8083/PoiWord82/main/sync.sh/mergedocproc" \ + --header "x-token: "$token \ + --header "Content-Type: application/x-www-form-urlencoded" \ + --data-urlencode "idx="""${array[0]} > mproc.json + # cat mproc.json + filedocmerge=$(cat mproc.json | jq -r '.response.filedocmerge[0]') + + # echo $filedocmerge + + statuscode=$(cat mproc.json | jq -r '.metadata.code') + if [ "$statuscode" == 200 ] + then + mysql -h172.17.12.71 -ussotcel -pssotcel#20i7 -e "update dbproc.tbl_procjustificationdoc set ismergedoc=1,filedocmerge='$filedocmerge' where _idx=${array[1]}" + + fi + + # # === Create Docx to PDF + curl -s --location --request POST "http://localhost:8083/PoiWord82/main/sync.sh/docxtopdfproc" \ + --header "x-token: "$token \ + --header "Content-Type: application/x-www-form-urlencoded" \ + --data-urlencode "docxfilename=$filedocmerge" > mproc.json + + # cat mproc.json + filedocxpdf=$(cat mproc.json | jq -r '.response.filepdf[0]') + mysql -h172.17.12.71 -ussotcel -pssotcel#20i7 -e "update dbproc.tbl_procjustificationdoc set isconvertpdf=1,pdffile='$filedocxpdf' where _idx=${array[1]}" + + cat mproc.json >> $p + printf "\n" >> $p + echo "End Time : "`date` >> $p + cat $p > lastprocessproc.txt + +fi + +rm -rf $p +rm -rf mproc.json \ No newline at end of file diff --git a/services/r.json b/services/r.json new file mode 100644 index 0000000..01baa56 --- /dev/null +++ b/services/r.json @@ -0,0 +1 @@ +{"metadata":{"code":200,"message":""},"response":{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJpdG5zcjA5QGdtYWlsLmNvbSIsImF1ZCI6WyJwcm9jIiwicHIwYzIwMjIjdGMzbCJdLCJpc3MiOiJ0ZWxrb21jZWwudGwiLCJleHAiOjE3NjQ4NTk4NjEsImlhdCI6MTc2NDg1NjI2MSwianRpIjoiYjBmMGEyYzUtMTc0NS00OTAyLWE0YTQtMzYxYTI2OGY4N2E3In0.ROj8NlWd4-2VuNQvfTdK9v1ct597mxoWLAP-QU_8KTM"}} \ No newline at end of file diff --git a/services/testdocx.sh b/services/testdocx.sh new file mode 100644 index 0000000..1458873 --- /dev/null +++ b/services/testdocx.sh @@ -0,0 +1,4 @@ +curl -s --location --request POST "http://localhost:8083/PoiWord82/main/sync.sh/mergedoc" \ + --header "x-token: "$token \ + --header "Content-Type: application/x-www-form-urlencoded" \ + --data-urlencode "idxjustification=20" \ No newline at end of file