first commit

This commit is contained in:
2025-12-05 06:21:42 +07:00
commit a3c945a60a
119 changed files with 21757 additions and 0 deletions

419
adapter/bastadapter.js Normal file
View File

@ -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;

570
adapter/budgetadapter.js Normal file
View File

@ -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;

345
adapter/coaadapter.js Normal file
View File

@ -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;

68
adapter/dbadapter.js Normal file
View File

@ -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;

414
adapter/employeeadapter.js Normal file
View File

@ -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;

533
adapter/financeadapter.js Normal file
View File

@ -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;

221
adapter/invadapter.js Normal file
View File

@ -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;

358
adapter/inventoryadapter.js Normal file
View File

@ -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;

View File

@ -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;

View File

@ -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;

89
adapter/mainadapter.js Normal file
View File

@ -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;

2135
adapter/poadapter.js Normal file

File diff suppressed because it is too large Load Diff

592
adapter/pradapter.js Normal file
View File

@ -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;

View File

@ -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;

239
adapter/vendoradapter.js Normal file
View File

@ -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;