This commit is contained in:
root
2026-01-07 14:03:34 +09:00
commit 4e93d0a49c
149 changed files with 20897 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
.env
node_modules/

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;

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;

81
app.js Normal file
View File

@ -0,0 +1,81 @@
const express = require('express');
const bodyparser = require('body-parser');
const fs = require('fs');
const app = express();
const cors = require('cors');
const dotenv = require('dotenv');
dotenv.config({path: __dirname + '/.env'});
const port = process.env.PORT || 9000;
const Controllers = require('./controllers/controller.js');
const controllers = new Controllers();
var apireshandler = controllers.getApiResultDefined();
app.use(bodyparser.urlencoded({ extended: false })); //for x-www-urlencoded <form>
app.use(express.urlencoded({ limit: '100mb', extended: true, parameterLimit: 50000 })); //===>for application json
// app.use(bodyparser.json('application/json'));
app.use(bodyparser.json({ limit: '100mb' }));
app.use(cors());
// app.use((req, res, next) => {
// // res.setHeader('Access-Allow-Control-Origin','https://cdpn.io'); hiii
// res.setHeader('Access-Control-Allow-Origin', '*'); //== Allow all request client
// res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE');
// res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
// // res.setHeader('Access-Control-Allow-Credentials', true);
// next();
// });
app.set('trust proxy', false);
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
// === DYNAMICALLY INCLUDE ROUTES ( CONTROLLER )
fs.readdirSync('./routes').forEach(function (file) {
var rf = false;
if (file.substr(-3) == '.js') {
var fl = (file.substr(0, file.length - 3));
var router = require('./routes/' + fl);
// console.log('./routes/' + fl);
app.use('/' + fl, router);
rf = true;
}
if (!rf) { res.send("File not found."); }
});
//app.use('/users', userRoutes);
app.use(function (error, req, res, next) {
//console.log(error.statusCode);
// res.status(401).send('401: '+error);
// if(error.statusCode==401){
// }
// console.log(error);
res.append("responseData","{statusCode : "+error.statusCode+",message : "+error.message+"}");
apireshandler.meta.code = error.statusCode;
apireshandler.meta.message = error.message;
res.status(error.statusCode).json(apireshandler);
//next();
});
// // // Handle 404
// app.use(function (req, res) {
// res.status(404).send('404: Route not Found, please contact your administrator');
// });
// // // Handle 500
// app.use(function (error, req, res, next) {
// console.log(error);
// res.status(200).send('500: Internal Server Error, err : '+error);
// });
// // Handle 502
// app.use(function (error, req, res, next) {
// res.status(502).send('502: Bad gateway');
// });
app.listen(port,function(){
console.log("Starting "+process.env.APPNAME+" running on 8080");
});

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/images/user.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Binary file not shown.

BIN
assets/png/020184.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 802 B

BIN
assets/png/047172pr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 806 B

BIN
assets/png/060658.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 803 B

BIN
assets/png/067125.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 800 B

BIN
assets/png/280361.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 767 B

BIN
assets/png/313188.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 764 B

BIN
assets/png/317762.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 B

BIN
assets/png/332642pr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 741 B

BIN
assets/png/337056.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 B

BIN
assets/png/370718.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 803 B

BIN
assets/png/408467.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 B

BIN
assets/png/508702.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 B

BIN
assets/png/508846.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

BIN
assets/png/522516.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 822 B

BIN
assets/png/538778.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 743 B

BIN
assets/png/561705.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 777 B

BIN
assets/png/667586pr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 B

BIN
assets/png/762507.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 741 B

BIN
assets/png/776335.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 745 B

BIN
assets/pngproc/054238.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 792 B

BIN
assets/pngproc/365454.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 B

BIN
assets/pngproc/613760.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 795 B

BIN
assets/pngproc/670728.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 B

BIN
assets/pngproc/753115.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 801 B

BIN
assets/pngproc/776618.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B

View File

@ -0,0 +1,2 @@
idxpo,sp3_number,items,idxpoboq,vendorid_sap,description,po_number,start_date,end_date,curr,unit_price,qty,po_amount,rate_po,migo
1,,transmisi radio,1,TL10000002,transmisi,123,,,USD,100,12,1200,0,
1 idxpo sp3_number items idxpoboq vendorid_sap description po_number start_date end_date curr unit_price qty po_amount rate_po migo
2 1 transmisi radio 1 TL10000002 transmisi 123 USD 100 12 1200 0

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/words/basttemplate.docx Executable file

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,15 @@
const mongoose = require('mongoose');
// const dburl='mongodb://root:s4lasan2016@150.242.110.114:27017/dbmidtpay?authSource=admin';
const dburl='mongodb://root:s4lasan2016@103.84.192.250:27017/dbkebengkel?authSource=admin';
mongoose.Promise = global.Promise;
mongoose.connect(dburl,{ useNewUrlParser: true, useUnifiedTopology: true },function(err) {
if (err) {
console.error('Error connecting: ' + err.stack);
return;
}
console.log('Collection established');
//db.close();
});
module.exports = mongoose;

20
config/dbproc.js Normal file
View File

@ -0,0 +1,20 @@
// console.log(libinit.gethost);
const mysql = require('mysql');
const dbcon = mysql.createConnection({
host : process.env.HOSTDB,
user : process.env.USERDB,
password : "ssotcel#20i7",
database : process.env.DBHOST,
acquireTimeout: 30000,
insecureAuth: true,
timezone: 'utc'
});
dbcon.connect(function(err) {
if (err) {
console.error('Error connecting: '+process.env.PASSDB+' ' + err.stack);
return;
}
console.log('WS Ver 1.0.0 Proc connected');
});
module.exports = dbcon;

226
controllers/bast.js Normal file
View File

@ -0,0 +1,226 @@
const BastAdapter=require('../adapter/bastadapter.js');
const bastadapter = new BastAdapter();
const Controllers = require('./controller.js');
const controllers = new Controllers();
var apireshandler = controllers.getApiResultDefined();
const baseurlsap="http://"+process.env.HOSTSAP+"/sapapi/index.php/api";
const apikeysap = "befea63a-7c47-4323-afea-968a3168fe0a";
const request = require('request');
exports.getBastActivityList = ( req, res ) => {
try{
bastadapter.queryBastActivityList(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
bastadapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [20] : Bast controller, " + err.toString();
bastadapter.sendResponse(502, apireshandler, res);
}
}
exports.getBastHandoverList = ( req, res ) => {
try{
bastadapter.queryBastHandoverList(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
bastadapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [20] : Bast controller, " + err.toString();
bastadapter.sendResponse(502, apireshandler, res);
}
}
exports.getBastActivityListDetail = ( req, res ) => {
try{
bastadapter.queryBastActivityListDetail(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
bastadapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [35] : Bast controller, " + err.toString();
bastadapter.sendResponse(502, apireshandler, res);
}
}
exports.createBastold = ( req, res, next ) => {
try{
let filedoctemplate='';
if(req.body.filename === undefined){
filedoctemplate="";//req.file.originalname;
bastadapter.queryCreateBAST(filedoctemplate, req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
bastadapter.sendResponse(statusCode,data, res);
});
}
else{
// filedoctemplate=req.file.originalname;
let ext=req.body.filename.split(".")[1];
let filename = 'BAST_'+req.nik+'_' + Date.now() + "."+ ext;
filedoctemplate=req.body.filename;
fs.rename(process.env.BASEPATH+'/assets/procjustification/'+req.body.filename, process.env.BASEPATH+'/assets/procjustification/'+filename, function(err) {
if ( err ) {
bastadapter.sendResponse(500,err, res);
}
else{
bastadapter.queryCreateBAST(filedoctemplate, req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
bastadapter.sendResponse(statusCode,data, res);
});
}
});
}
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [182] : Justification controller, " + err.toString();
justificationadapter.sendResponse(502, apireshandler, res);
}
}
exports.createBast = ( req, res, next ) => {
try{
let filedoctemplate='';
if(req.file === undefined){
filedoctemplate="";//req.file.originalname;
}
else{
// filedoctemplate=req.file.originalname;
filedoctemplate=req.body.filename;
}
bastadapter.queryCreateBAST(filedoctemplate, req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
bastadapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [182] : Justification controller, " + err.toString();
justificationadapter.sendResponse(502, apireshandler, res);
}
}
exports.uploadHandOverSign = ( req, res, next ) => {
try{
let filehandoversign='';
if(req.file === undefined){
filehandoversign="";//req.file.originalname;
}
else{
// filedoctemplate=req.file.originalname;
filehandoversign=req.body.filename;
}
bastadapter.queryUploadHandoverSign(filehandoversign, req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
bastadapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [138] : bast controller, " + err.toString();
justificationadapter.sendResponse(502, apireshandler, res);
}
}
exports.getBastList = ( req, res ) => {
try{
bastadapter.queryBastList(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
bastadapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [74] : Bast controller, " + err.toString();
bastadapter.sendResponse(502, apireshandler, res);
}
}
exports.getBastDetailList = ( req, res ) => {
try{
bastadapter.queryBastDetailList(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
bastadapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [74] : Bast controller, " + err.toString();
bastadapter.sendResponse(502, apireshandler, res);
}
}
exports.setUpdateHandOverold = ( req, res ) => {
try{
let ext=req.body.filename.split(".")[1];
let filename = 'basthandover_'+req.nik+'_' + Date.now() + "."+ ext;
filedoctemplate=req.body.filename;
fs.rename(process.env.BASEPATH+'/assets/bast/'+req.body.filename, process.env.BASEPATH+'/assets/bast/'+filename, function(err) {
if ( err ) {
bastadapter.sendResponse(500,err, res);
}
else{
bastadapter.queryCreateBAST(filedoctemplate, req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
bastadapter.sendResponse(statusCode,data, res);
});
}
});
bastadapter.queryUpdateHandover(req, filename, function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
bastadapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [112] : Bast controller, " + err.toString();
bastadapter.sendResponse(502, apireshandler, res);
}
}
exports.setUpdateHandOver = ( req, res ) => {
try{
let filename='';
if(req.file === undefined){
filename="";//req.file.originalname;
}
else{
filename=req.body.filename;//req.file.originalname;
}
bastadapter.queryUpdateHandover(req, filename, function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
bastadapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [112] : Bast controller, " + err.toString();
bastadapter.sendResponse(502, apireshandler, res);
}
}

Some files were not shown because too many files have changed in this diff Show More