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;