init
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.env
|
||||||
|
node_modules/
|
||||||
419
adapter/bastadapter.js
Normal 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
@ -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
@ -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
@ -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
@ -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
@ -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
@ -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
@ -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;
|
||||||
864
adapter/justificationadapter.js
Normal 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
@ -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
592
adapter/pradapter.js
Normal 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;
|
||||||
731
adapter/procjustificationadapter.js
Normal 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
@ -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
@ -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");
|
||||||
|
});
|
||||||
BIN
assets/bast/basthandoversign_00001_1764923325927.pdf
Normal file
BIN
assets/bast/basthandoversign_999999_1706086740310.PDF
Normal file
BIN
assets/bast/basthandoversign_999999_1719983170545.pdf
Normal file
BIN
assets/bast/basthandoversign_999999_1764923182300.pdf
Normal file
BIN
assets/bast/pdf/bast_999999_1719982918934.pdf
Normal file
BIN
assets/bast/pdf/bast_999999_1764923095076.pdf
Normal file
BIN
assets/bast/pdf/bast_999999_1764923252437.pdf
Normal file
BIN
assets/finance/fin_00001_1764924220881.pdf
Normal file
BIN
assets/images/user.png
Executable file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
assets/justification/justifikasi_00001.docx
Normal file
BIN
assets/justification/justifikasi_00001_1764809633844.docx
Normal file
BIN
assets/justification/justifikasi_00002_1764811346034.docx
Normal file
BIN
assets/justification/justifikasi_24024_1761037105318.docx
Normal file
BIN
assets/justification/justifikasi_24024_1761703684476.docx
Normal file
BIN
assets/justification/justifikasi_93003_1727860830921.docx
Normal file
BIN
assets/justification/justifikasi_93003_1730251674421.docx
Normal file
BIN
assets/justification/justifikasi_93003_1742435649899.docx
Normal file
BIN
assets/justification/justifikasi_93003_1750379348197.docx
Normal file
BIN
assets/justification/justifikasi_93003_1750379909152.docx
Normal file
BIN
assets/justification/justifikasi_93003_1750643632840.docx
Normal file
BIN
assets/justification/justifikasi_999999.docx
Normal file
BIN
assets/justification/justifikasi_999999_1715128605400.docx
Normal file
BIN
assets/justification/justifikasi_999999_1715652628646.docx
Normal file
BIN
assets/justification/justifikasi_999999_1719979817969.docx
Normal file
BIN
assets/justification/justifikasi_999999_1727860642953.docx
Normal file
BIN
assets/justification/justifikasi_999999_1764735829437.docx
Normal file
BIN
assets/justification/justifikasi_999999_1764737315371.docx
Normal file
BIN
assets/justification/justifikasi_999999_1764845585113.docx
Normal file
BIN
assets/justification/justifikasi_999999_1767760613420.docx
Normal file
BIN
assets/justification/merge/justifikasi_00001_1764814771305.docx
Normal file
BIN
assets/justification/merge/justifikasi_999999_1715128671700.docx
Normal file
BIN
assets/justification/merge/justifikasi_999999_1715652671617.docx
Normal file
BIN
assets/justification/merge/justifikasi_999999_1719980231559.docx
Normal file
BIN
assets/justification/merge/justifikasi_999999_1764824271258.docx
Normal file
BIN
assets/justification/merge/justifikasi_999999_1767760851379.docx
Normal file
BIN
assets/justification/pdf/justifikasi_00001_1764814771305.pdf
Normal file
BIN
assets/justification/pdf/justifikasi_999999_1715128671700.pdf
Normal file
BIN
assets/justification/pdf/justifikasi_999999_1715652671617.pdf
Normal file
BIN
assets/justification/pdf/justifikasi_999999_1719980231559.pdf
Normal file
BIN
assets/justification/pdf/justifikasi_999999_1764824271258.pdf
Normal file
BIN
assets/justification/pdf/justifikasi_999999_1767760851379.pdf
Normal file
BIN
assets/png/020184.png
Normal file
|
After Width: | Height: | Size: 802 B |
BIN
assets/png/047172pr.png
Normal file
|
After Width: | Height: | Size: 806 B |
BIN
assets/png/060658.png
Normal file
|
After Width: | Height: | Size: 803 B |
BIN
assets/png/067125.png
Normal file
|
After Width: | Height: | Size: 800 B |
BIN
assets/png/280361.png
Normal file
|
After Width: | Height: | Size: 767 B |
BIN
assets/png/313188.png
Normal file
|
After Width: | Height: | Size: 764 B |
BIN
assets/png/317762.png
Normal file
|
After Width: | Height: | Size: 762 B |
BIN
assets/png/332642pr.png
Normal file
|
After Width: | Height: | Size: 741 B |
BIN
assets/png/337056.png
Normal file
|
After Width: | Height: | Size: 796 B |
BIN
assets/png/370718.png
Normal file
|
After Width: | Height: | Size: 803 B |
BIN
assets/png/408467.png
Normal file
|
After Width: | Height: | Size: 739 B |
BIN
assets/png/508702.png
Normal file
|
After Width: | Height: | Size: 756 B |
BIN
assets/png/508846.png
Normal file
|
After Width: | Height: | Size: 748 B |
BIN
assets/png/522516.png
Normal file
|
After Width: | Height: | Size: 822 B |
BIN
assets/png/538778.png
Normal file
|
After Width: | Height: | Size: 743 B |
BIN
assets/png/561705.png
Normal file
|
After Width: | Height: | Size: 777 B |
BIN
assets/png/667586pr.png
Normal file
|
After Width: | Height: | Size: 809 B |
BIN
assets/png/762507.png
Normal file
|
After Width: | Height: | Size: 741 B |
BIN
assets/png/776335.png
Normal file
|
After Width: | Height: | Size: 745 B |
BIN
assets/pngproc/054238.png
Normal file
|
After Width: | Height: | Size: 792 B |
BIN
assets/pngproc/365454.png
Normal file
|
After Width: | Height: | Size: 756 B |
BIN
assets/pngproc/613760.png
Normal file
|
After Width: | Height: | Size: 795 B |
BIN
assets/pngproc/670728.png
Normal file
|
After Width: | Height: | Size: 751 B |
BIN
assets/pngproc/753115.png
Normal file
|
After Width: | Height: | Size: 801 B |
BIN
assets/pngproc/776618.png
Normal file
|
After Width: | Height: | Size: 794 B |
2
assets/po/boq/00001_boq.csv
Normal 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,
|
||||||
|
BIN
assets/procjustification/bakn_00001_1764921843909.pdf
Normal file
BIN
assets/procjustification/justifikasi_00001_1764921722073.docx
Normal file
BIN
assets/procjustification/justifikasi_999999_1719981065384.docx
Normal file
BIN
assets/procjustification/procjustifikasi_00001.docx
Normal file
BIN
assets/procjustification/procjustifikasi_999999.docx
Normal file
BIN
assets/procjustification/sph_00001_1764921838088.pdf
Normal file
BIN
assets/procjustification/spph_00001_1764921828853.pdf
Normal file
BIN
assets/words/JustifikasiSample.docx
Executable file
BIN
assets/words/basttemplate.docx
Executable file
BIN
assets/words/justifikasitemplate.docx
Executable file
15
config/collections/dbkebengkel.js
Normal 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
@ -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
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||