Compare commits
55 Commits
prod_v1.0
...
1f898d3977
| Author | SHA1 | Date | |
|---|---|---|---|
| 1f898d3977 | |||
| ee0cfda601 | |||
| 8f8bf4bad5 | |||
| 17abbe9b73 | |||
| 4d94263a93 | |||
| 541b423c03 | |||
| f6670321fc | |||
| c6ed4a0400 | |||
| 7575fc2e13 | |||
| 79709dd680 | |||
| 9d48cb4089 | |||
| d6e1035a3b | |||
| 82ac594b72 | |||
| 0cac4ae30b | |||
| 232830070a | |||
| 71d960f9ea | |||
| 20c1864ac5 | |||
| 44f10398ba | |||
| 4808c533a6 | |||
| 9d4e4a98b2 | |||
| 034d99ff19 | |||
| 4c332b3ce9 | |||
| dda6e73cbb | |||
| 2dd3a8aa08 | |||
| ec10b69585 | |||
| 3b48e720d9 | |||
| f4c589e214 | |||
| b5fcf71f4a | |||
| 051dcf2052 | |||
| 5c4b79bac7 | |||
| c39d79feec | |||
| 638ff55bff | |||
| 7e3f6dd426 | |||
| a01efd2812 | |||
| c777373817 | |||
| 367bb5d29c | |||
| 9c199e2413 | |||
| 2dc85891e2 | |||
| 23f1026b3e | |||
| e139924302 | |||
| 128d47e786 | |||
| 76ac4d4341 | |||
| 2a5363c835 | |||
| 758fc65db3 | |||
| c00dc40f43 | |||
| 0221a6fb04 | |||
| cc1102c444 | |||
| 73ac2987a0 | |||
| 0476c18c43 | |||
| 63db38c0fc | |||
| ee58229803 | |||
| 71b30d0a33 | |||
| 221e81aff3 | |||
| b0c95b12e1 | |||
| 9b1d94348e |
@ -1,419 +1,474 @@
|
||||
const db=require('../config/dbproc.js');
|
||||
const Adapter=require('./dbadapter.js');
|
||||
const db = require("../config/dbproc.js");
|
||||
const Adapter = require("./dbadapter.js");
|
||||
const fs = require("fs");
|
||||
const baseUrl = process.env.URLPDFFILE;
|
||||
|
||||
class BastAdapter extends Adapter {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
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
|
||||
});
|
||||
async queryBastActivityList(req, callback) {
|
||||
var apires = this.getApiResultDefined();
|
||||
try {
|
||||
let limit = req.query.limit;
|
||||
let offset = req.query.offset;
|
||||
let keyword = req.query.keyword;
|
||||
|
||||
// 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 = "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;
|
||||
|
||||
// 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+")";
|
||||
// console.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);
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
});
|
||||
async queryBastHandoverList(req, callback) {
|
||||
var apires = this.getApiResultDefined();
|
||||
try {
|
||||
let limit = req.query.limit;
|
||||
let offset = req.query.offset;
|
||||
let keyword = req.query.keyword;
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
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 = "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,
|
||||
});
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
// 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 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 queryBastActivityListDetail(req, callback) {
|
||||
var apires = this.getApiResultDefined();
|
||||
try {
|
||||
let idxpr = req.query.idxpr;
|
||||
|
||||
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;
|
||||
let qry = "select * from vw_bastactivitylistdetail ";
|
||||
qry = qry + "where idxpr='" + idxpr + "'";
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
// console.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 {
|
||||
let qryHistory =
|
||||
"insert into tbl_bastfilehistory set statusdescription='Upload Handover', bastdateshandover='" +
|
||||
bastdates +
|
||||
"',descriptionhandover='" +
|
||||
description +
|
||||
"', filehandoversign='" +
|
||||
filehandoversign +
|
||||
"',iby='" +
|
||||
nik +
|
||||
"',idt=now(), idxbast='" +
|
||||
idxbast +
|
||||
"'";
|
||||
|
||||
db.query(qryHistory, [], 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 {
|
||||
let qryHistory = `select statusdescription, bastdateshandover, descriptionhandover, CONCAT('${baseUrl}?route=bast&name=', filehandoversign) AS filehandoversign, iby, idt from tbl_bastfilehistory where idxbast = ${result[0]._idx} order by _idx desc`;
|
||||
db.query(qryHistory, [], function (err, resultHistory, fields) {
|
||||
console.log(err);
|
||||
console.log(resultHistory);
|
||||
if (err) {
|
||||
apires.meta["message"] = err.toString();
|
||||
apires.meta["code"] = 500;
|
||||
callback("err", apires);
|
||||
} else {
|
||||
result[0].history_handover = resultHistory;
|
||||
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;
|
||||
|
||||
|
||||
|
||||
4789
adapter/poadapter.js
4789
adapter/poadapter.js
File diff suppressed because it is too large
Load Diff
@ -88,7 +88,7 @@ class PrAdapter extends Adapter{
|
||||
let idxjustification= req.body.idxjustification;
|
||||
let justificationnumber= req.body.justificationnumber;
|
||||
let trxidpr = req.body.trxidpr;
|
||||
let prnumber = req.body.prnumber;
|
||||
let prnumber = req.body.prnumber ?? "";
|
||||
let costcenter = req.body.costcenter;
|
||||
let profitcenter = req.body.profitcenter;
|
||||
let description = req.body.description;
|
||||
@ -143,7 +143,7 @@ class PrAdapter extends Adapter{
|
||||
let idxjustification= req.body.idxjustification;
|
||||
let justificationnumber= req.body.justificationnumber;
|
||||
let trxidpr = req.body.trxidpr;
|
||||
let prnumber = req.body.prnumber;
|
||||
let prnumber = req.body.prnumber ?? "";
|
||||
let costcenter = req.body.costcenter;
|
||||
let profitcenter = req.body.profitcenter;
|
||||
let description = req.body.description;
|
||||
@ -313,7 +313,9 @@ class PrAdapter extends Adapter{
|
||||
async queryPrList(req,callback){
|
||||
var apires = this.getApiResultDefined();
|
||||
try {
|
||||
|
||||
const proc_nik = process.env.PROC_USER_NIK ?? ""
|
||||
const proc_users = proc_nik.split(",")
|
||||
|
||||
let limit = req.body.limit;
|
||||
let offset = req.body.offset;
|
||||
let keyword = req.body.keyword;
|
||||
@ -326,7 +328,9 @@ class PrAdapter extends Adapter{
|
||||
|
||||
let swherenik="";
|
||||
if(nik){
|
||||
swherenik="iby='"+nik+"' and ";
|
||||
if (!proc_users.includes(nik)) {
|
||||
swherenik = '(iby="'+nik+' or nikapproval="'+nik+'") and ';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -478,6 +482,8 @@ class PrAdapter extends Adapter{
|
||||
async queryPrManagementList(req,callback){
|
||||
var apires = this.getApiResultDefined();
|
||||
try {
|
||||
const proc_nik = process.env.PROC_USER_NIK ?? ""
|
||||
const proc_users = proc_nik.split(",")
|
||||
|
||||
let limit = req.query.limit;
|
||||
let offset = req.query.offset;
|
||||
@ -485,7 +491,7 @@ class PrAdapter extends Adapter{
|
||||
let nik = req.query.nik;
|
||||
|
||||
let swherenik="and iby='"+nik+"'";
|
||||
if(nik=='999999'){
|
||||
if (!proc_users.includes(nik)) {
|
||||
swherenik="";
|
||||
}
|
||||
|
||||
@ -517,7 +523,7 @@ class PrAdapter extends Adapter{
|
||||
"totalrows": result.length
|
||||
});
|
||||
qry = "select * from vw_prmanagement ";
|
||||
qry = qry +"where (trim(trxidpr) like '%"+ keyword +"%' or trim(prnumber) like '%"+ keyword +"%') ";
|
||||
qry = qry +"where status >= 2 and (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){
|
||||
@ -586,6 +592,38 @@ class PrAdapter extends Adapter{
|
||||
}
|
||||
}
|
||||
|
||||
async queryUpdateSapMessage(req, sapmessage, callback) {
|
||||
try {
|
||||
var apires = this.getApiResultDefined();
|
||||
var idxpr = req.body.idxpr;
|
||||
var nik = req.body.nik;
|
||||
|
||||
// console.log(setdescription);
|
||||
var qry = "update tbl_pr set sapmessage='"+sapmessage+"', uby='"+nik+"',udt=now() ";
|
||||
qry = qry +"where _idx='" + idxpr +"'";
|
||||
|
||||
console.log('qry', 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
412
adapter/sapaccountadapter.js
Normal file
412
adapter/sapaccountadapter.js
Normal file
@ -0,0 +1,412 @@
|
||||
const db = require("../config/dbproc.js");
|
||||
const Adapter = require("./dbadapter.js");
|
||||
const request = require("request");
|
||||
|
||||
class SAPAccountAdapter extends Adapter {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
/* ================= LIST + PAGINATION ================= */
|
||||
async queryList(req, callback) {
|
||||
var apires = this.getApiResultDefined();
|
||||
try {
|
||||
let limit = parseInt(req.query.limit) || 10;
|
||||
let offset = parseInt(req.query.offset) || 0;
|
||||
let keyword = req.query.keyword || "";
|
||||
|
||||
/* ===== QUERY TOTAL ROW ===== */
|
||||
let qry = `
|
||||
SELECT *
|
||||
FROM tbl_sap_connections
|
||||
WHERE deleted_at IS NULL
|
||||
AND (
|
||||
host LIKE '%${keyword}%'
|
||||
OR sap_user LIKE '%${keyword}%'
|
||||
OR ket_sap LIKE '%${keyword}%'
|
||||
)
|
||||
`;
|
||||
|
||||
db.query(qry, [], function (err, result) {
|
||||
if (err) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
callback("err", apires);
|
||||
} else {
|
||||
if (result.length > 0) {
|
||||
let pagination = result.length / limit;
|
||||
if (!Number.isInteger(pagination)) {
|
||||
pagination = Math.floor(result.length / limit) + 1;
|
||||
}
|
||||
|
||||
apires.success = true;
|
||||
apires.data.push({
|
||||
totalpage: pagination,
|
||||
totalrows: result.length,
|
||||
});
|
||||
|
||||
/* ===== QUERY DATA WITH LIMIT ===== */
|
||||
let qryData = `
|
||||
SELECT *
|
||||
FROM tbl_sap_connections
|
||||
WHERE deleted_at IS NULL
|
||||
AND (
|
||||
host LIKE '%${keyword}%'
|
||||
OR sap_user LIKE '%${keyword}%'
|
||||
OR ket_sap LIKE '%${keyword}%'
|
||||
)
|
||||
ORDER BY id ASC
|
||||
LIMIT ${offset}, ${limit}
|
||||
`;
|
||||
|
||||
db.query(qryData, [], function (err, resultData) {
|
||||
if (err) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
callback("err", apires);
|
||||
} else {
|
||||
apires.data.push({
|
||||
results: JSON.parse(JSON.stringify(resultData)),
|
||||
});
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/* ================= CREATE ================= */
|
||||
async queryCreate(req, callback) {
|
||||
var apires = this.getApiResultDefined();
|
||||
try {
|
||||
const {sap_id, host, sysnr, client, codepage, ket_sap, sap_user, sap_password, aktivasi} =
|
||||
req.body;
|
||||
|
||||
let qry = `
|
||||
INSERT INTO tbl_sap_connections
|
||||
(sap_id, host, sysnr, client, codepage, ket_sap, sap_user, sap_password, aktivasi, created_at, created_by, status)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), ?, 'Not_Active')
|
||||
`;
|
||||
|
||||
const password = Buffer.from(sap_password, "utf8").toString("base64");
|
||||
|
||||
db.query(
|
||||
qry,
|
||||
[
|
||||
sap_id,
|
||||
host,
|
||||
sysnr,
|
||||
client,
|
||||
codepage,
|
||||
ket_sap,
|
||||
sap_user,
|
||||
password,
|
||||
aktivasi,
|
||||
req.body.nik || "system",
|
||||
],
|
||||
function (err, result) {
|
||||
if (err) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
callback("err", apires);
|
||||
} else {
|
||||
apires.success = true;
|
||||
apires.data = {insertId: result.insertId};
|
||||
callback(null, apires);
|
||||
}
|
||||
},
|
||||
);
|
||||
} catch (err) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
callback("error", apires);
|
||||
}
|
||||
}
|
||||
|
||||
async callSapActivateById(id, nik, callback) {
|
||||
var apires = this.getApiResultDefined();
|
||||
|
||||
let qry = `
|
||||
SELECT *
|
||||
FROM tbl_sap_connections
|
||||
WHERE id = ?
|
||||
AND deleted_at IS NULL
|
||||
LIMIT 1
|
||||
`;
|
||||
|
||||
db.query(qry, [id], (err, result) => {
|
||||
if (err || result.length === 0) {
|
||||
apires.meta.code = 404;
|
||||
apires.meta.message = "SAP Connection not found";
|
||||
return callback("err", apires);
|
||||
}
|
||||
|
||||
const sap = result[0];
|
||||
|
||||
// decode password sebelum kirim ke SAP
|
||||
const decodedPassword = Buffer.from(sap.sap_password, "base64").toString("utf8");
|
||||
|
||||
const sapUrl =
|
||||
process.env.SAP_API_BASE_URL +
|
||||
"/sapConnection" +
|
||||
`?user=${sap.sap_user}` +
|
||||
`&password=${decodedPassword}` +
|
||||
`&sysnr=${sap.sysnr}` +
|
||||
`&client=${sap.client}` +
|
||||
`&codepage=${sap.codepage}` +
|
||||
`&ket_sap=${sap.ket_sap}` +
|
||||
`&host=${encodeURIComponent(sap.host)}`;
|
||||
|
||||
const options = {
|
||||
method: "POST",
|
||||
url: sapUrl,
|
||||
timeout: 10000,
|
||||
headers: {
|
||||
"x-api-key": process.env.SAP_API_KEY,
|
||||
},
|
||||
};
|
||||
|
||||
request(options, (error, response, body) => {
|
||||
if (error || response.statusCode !== 200) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = "SAP API activate failed";
|
||||
apires.data = body;
|
||||
return callback("err", apires);
|
||||
}
|
||||
|
||||
// set semua Not_Active
|
||||
db.query(`UPDATE tbl_sap_connections SET status='Not_Active'`, [], () => {
|
||||
// set Active untuk ID ini
|
||||
db.query(
|
||||
`UPDATE tbl_sap_connections
|
||||
SET status='Active',
|
||||
updated_at=NOW(),
|
||||
updated_by=?
|
||||
WHERE id=?`,
|
||||
[nik || "system", id],
|
||||
(err2) => {
|
||||
if (err2) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err2.toString();
|
||||
return callback("err", apires);
|
||||
}
|
||||
|
||||
apires.success = true;
|
||||
apires.data = {sap_id: sap.sap_id};
|
||||
callback(null, apires);
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/* ================= UPDATE ================= */
|
||||
async queryUpdate(req, callback) {
|
||||
var apires = this.getApiResultDefined();
|
||||
|
||||
try {
|
||||
const id = req.params.id;
|
||||
const {sap_id, host, sysnr, client, codepage, ket_sap, sap_user, sap_password, aktivasi} =
|
||||
req.body;
|
||||
|
||||
/* 1️⃣ Ambil data existing (untuk cek status) */
|
||||
const detailQry = `
|
||||
SELECT status, sap_password
|
||||
FROM tbl_sap_connections
|
||||
WHERE id = ?
|
||||
AND deleted_at IS NULL
|
||||
LIMIT 1
|
||||
`;
|
||||
|
||||
db.query(detailQry, [id], (err, rows) => {
|
||||
if (err || rows.length === 0) {
|
||||
apires.meta.code = 404;
|
||||
apires.meta.message = "SAP Connection not found";
|
||||
return callback("err", apires);
|
||||
}
|
||||
|
||||
const currentStatus = rows[0].status;
|
||||
|
||||
/* 2️⃣ Handle password (jangan overwrite kalau kosong) */
|
||||
const encodedPassword = sap_password
|
||||
? Buffer.from(sap_password, "utf8").toString("base64")
|
||||
: rows[0].sap_password;
|
||||
|
||||
/* 3️⃣ Update data */
|
||||
const updateQry = `
|
||||
UPDATE tbl_sap_connections
|
||||
SET sap_id = ?, host = ?, sysnr = ?, client = ?, codepage = ?, ket_sap = ?,
|
||||
sap_user = ?, sap_password = ?, aktivasi = ?,
|
||||
updated_at = NOW(), updated_by = ?
|
||||
WHERE id = ? AND deleted_at IS NULL
|
||||
`;
|
||||
|
||||
db.query(
|
||||
updateQry,
|
||||
[
|
||||
sap_id,
|
||||
host,
|
||||
sysnr,
|
||||
client,
|
||||
codepage,
|
||||
ket_sap,
|
||||
sap_user,
|
||||
encodedPassword,
|
||||
aktivasi,
|
||||
req.body.nik || "system",
|
||||
id,
|
||||
],
|
||||
(err2, result) => {
|
||||
if (err2) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err2.toString();
|
||||
return callback("err", apires);
|
||||
}
|
||||
|
||||
/* 4️⃣ Jika sebelumnya Active → activate ulang SAP */
|
||||
if (currentStatus === "Active") {
|
||||
return this.callSapActivateById(id, req.body.nik, callback);
|
||||
}
|
||||
|
||||
/* 5️⃣ Kalau Not_Active → selesai */
|
||||
apires.success = true;
|
||||
apires.data = {affectedRows: result.affectedRows};
|
||||
callback(null, apires);
|
||||
},
|
||||
);
|
||||
});
|
||||
} catch (err) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
callback("error", apires);
|
||||
}
|
||||
}
|
||||
|
||||
/* ================= DELETE (SOFT) ================= */
|
||||
async queryDelete(req, callback) {
|
||||
var apires = this.getApiResultDefined();
|
||||
try {
|
||||
const id = req.params.id;
|
||||
|
||||
let qry = `
|
||||
UPDATE tbl_sap_connections
|
||||
SET deleted_at = NOW(), deleted_by = ?
|
||||
WHERE id = ? AND deleted_at IS NULL
|
||||
`;
|
||||
|
||||
db.query(qry, [req.body.nik || "system", id], function (err, result) {
|
||||
if (err) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
callback("err", apires);
|
||||
} else {
|
||||
apires.success = true;
|
||||
apires.data = {affectedRows: result.affectedRows};
|
||||
callback(null, apires);
|
||||
}
|
||||
});
|
||||
} catch (err) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
callback("error", apires);
|
||||
}
|
||||
}
|
||||
|
||||
/* ================= DETAIL ================= */
|
||||
async queryDetail(req, callback) {
|
||||
var apires = this.getApiResultDefined();
|
||||
try {
|
||||
const id = req.params.id;
|
||||
|
||||
let qry = `
|
||||
SELECT *
|
||||
FROM tbl_sap_connections
|
||||
WHERE id = ?
|
||||
AND deleted_at IS NULL
|
||||
LIMIT 1
|
||||
`;
|
||||
|
||||
db.query(qry, [id], function (err, result) {
|
||||
if (err) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
callback("err", apires);
|
||||
} else {
|
||||
if (result.length > 0) {
|
||||
const password = Buffer.from(result[0].sap_password, "base64").toString("utf8");
|
||||
apires.success = true;
|
||||
apires.data = {...result[0], sap_password: password};
|
||||
} else {
|
||||
apires.meta.code = 200;
|
||||
apires.meta.message = "Record Not Found";
|
||||
apires.data = null;
|
||||
}
|
||||
callback(null, apires);
|
||||
}
|
||||
});
|
||||
} catch (err) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
callback("error", apires);
|
||||
}
|
||||
}
|
||||
|
||||
/* ================= ACTIVATE ================= */
|
||||
async queryActivate(req, callback) {
|
||||
try {
|
||||
const id = req.params.id;
|
||||
const nik = req.body.nik || "system";
|
||||
|
||||
// reuse logic yang sama
|
||||
return this.callSapActivateById(id, nik, callback);
|
||||
} catch (err) {
|
||||
const apires = this.getApiResultDefined();
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
callback("error", apires);
|
||||
}
|
||||
}
|
||||
|
||||
/* ================= CURRENT ================= */
|
||||
async queryCurrent(req, callback) {
|
||||
var apires = this.getApiResultDefined();
|
||||
try {
|
||||
let qry = `
|
||||
SELECT *
|
||||
FROM tbl_sap_connections
|
||||
WHERE status='Active'
|
||||
AND deleted_at IS NULL
|
||||
LIMIT 1
|
||||
`;
|
||||
|
||||
db.query(qry, [], function (err, result) {
|
||||
if (err) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
callback("err", apires);
|
||||
} else {
|
||||
apires.success = true;
|
||||
apires.data = result.length > 0 ? result[0] : null;
|
||||
callback(null, apires);
|
||||
}
|
||||
});
|
||||
} catch (err) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
callback("error", apires);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = SAPAccountAdapter;
|
||||
43
adapter/sapadapter.js
Normal file
43
adapter/sapadapter.js
Normal file
@ -0,0 +1,43 @@
|
||||
const db = require("../config/dbproc.js");
|
||||
const Adapter = require("./dbadapter.js");
|
||||
|
||||
class SapAdapter extends Adapter {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
async queryInsertSapLog(idxpr, req, req_type) {
|
||||
var apires = this.getApiResultDefined();
|
||||
try {
|
||||
const {ref_code, request, request_at, request_by, response, response_at, url} = req;
|
||||
|
||||
let qry = `
|
||||
INSERT INTO tbl_sap_log
|
||||
(idxpr, created_at, ref_code, request_type, request, request_at, request_by, response, response_at, url)
|
||||
VALUES (?, NOW(), ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
`;
|
||||
|
||||
db.query(
|
||||
qry,
|
||||
[idxpr, ref_code, req_type, request, request_at, request_by, response, response_at, url],
|
||||
function (err, result) {
|
||||
if (err) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
|
||||
console.log('error saving log =>', err.toString())
|
||||
} else {
|
||||
apires.success = true;
|
||||
apires.data = {insertId: result.insertId};
|
||||
}
|
||||
},
|
||||
);
|
||||
} catch (err) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
callback("error", apires);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = SapAdapter;
|
||||
2298
controllers/po.js
2298
controllers/po.js
File diff suppressed because it is too large
Load Diff
1379
controllers/pr.js
1379
controllers/pr.js
File diff suppressed because it is too large
Load Diff
110
controllers/sap_account.js
Normal file
110
controllers/sap_account.js
Normal file
@ -0,0 +1,110 @@
|
||||
const SAPAccountAdapter = require("../adapter/sapaccountadapter.js");
|
||||
const sapaccountadapter = new SAPAccountAdapter();
|
||||
const Controllers = require("./controller.js");
|
||||
const controllers = new Controllers();
|
||||
var apireshandler = controllers.getApiResultDefined();
|
||||
|
||||
/* ================= LIST ================= */
|
||||
exports.list = (req, res) => {
|
||||
try {
|
||||
sapaccountadapter.queryList(req, function (err, data) {
|
||||
let statusCode = data != null ? data.meta.code : 200;
|
||||
if (err) statusCode = 500;
|
||||
sapaccountadapter.sendResponse(statusCode, data, res);
|
||||
});
|
||||
} catch (err) {
|
||||
apireshandler.meta.code = 502;
|
||||
apireshandler.meta.message = " [20] : SAP Account controller, " + err.toString();
|
||||
sapaccountadapter.sendResponse(502, apireshandler, res);
|
||||
}
|
||||
};
|
||||
|
||||
/* ================= CREATE ================= */
|
||||
exports.create = (req, res) => {
|
||||
try {
|
||||
sapaccountadapter.queryCreate(req, function (err, data) {
|
||||
let statusCode = data != null ? data.meta.code : 200;
|
||||
if (err) statusCode = 500;
|
||||
sapaccountadapter.sendResponse(statusCode, data, res);
|
||||
});
|
||||
} catch (err) {
|
||||
apireshandler.meta.code = 502;
|
||||
apireshandler.meta.message = " [21] : SAP Account create, " + err.toString();
|
||||
sapaccountadapter.sendResponse(502, apireshandler, res);
|
||||
}
|
||||
};
|
||||
|
||||
/* ================= UPDATE ================= */
|
||||
exports.update = (req, res) => {
|
||||
try {
|
||||
sapaccountadapter.queryUpdate(req, function (err, data) {
|
||||
let statusCode = data != null ? data.meta.code : 200;
|
||||
if (err) statusCode = 500;
|
||||
sapaccountadapter.sendResponse(statusCode, data, res);
|
||||
});
|
||||
} catch (err) {
|
||||
apireshandler.meta.code = 502;
|
||||
apireshandler.meta.message = " [22] : SAP Account update, " + err.toString();
|
||||
sapaccountadapter.sendResponse(502, apireshandler, res);
|
||||
}
|
||||
};
|
||||
|
||||
/* ================= DELETE (SOFT DELETE) ================= */
|
||||
exports.delete = (req, res) => {
|
||||
try {
|
||||
sapaccountadapter.queryDelete(req, function (err, data) {
|
||||
let statusCode = data != null ? data.meta.code : 200;
|
||||
if (err) statusCode = 500;
|
||||
sapaccountadapter.sendResponse(statusCode, data, res);
|
||||
});
|
||||
} catch (err) {
|
||||
apireshandler.meta.code = 502;
|
||||
apireshandler.meta.message = " [23] : SAP Account delete, " + err.toString();
|
||||
sapaccountadapter.sendResponse(502, apireshandler, res);
|
||||
}
|
||||
};
|
||||
|
||||
/* ================= DETAIL ================= */
|
||||
exports.detail = (req, res) => {
|
||||
try {
|
||||
sapaccountadapter.queryDetail(req, function (err, data) {
|
||||
let statusCode = data != null ? data.meta.code : 200;
|
||||
if (err) statusCode = 500;
|
||||
sapaccountadapter.sendResponse(statusCode, data, res);
|
||||
});
|
||||
} catch (err) {
|
||||
apireshandler.meta.code = 502;
|
||||
apireshandler.meta.message = " [24] : SAP Account detail, " + err.toString();
|
||||
sapaccountadapter.sendResponse(502, apireshandler, res);
|
||||
}
|
||||
};
|
||||
|
||||
/* ================= ACTIVATE SAP ================= */
|
||||
exports.activate = (req, res) => {
|
||||
try {
|
||||
sapaccountadapter.queryActivate(req, function (err, data) {
|
||||
let statusCode = data != null ? data.meta.code : 200;
|
||||
if (err) statusCode = 500;
|
||||
sapaccountadapter.sendResponse(statusCode, data, res);
|
||||
});
|
||||
} catch (err) {
|
||||
apireshandler.meta.code = 502;
|
||||
apireshandler.meta.message = " [25] : SAP Account activate, " + err.toString();
|
||||
sapaccountadapter.sendResponse(502, apireshandler, res);
|
||||
}
|
||||
};
|
||||
|
||||
/* ================= CURRENT SAP ================= */
|
||||
exports.current = (req, res) => {
|
||||
try {
|
||||
sapaccountadapter.queryCurrent(req, function (err, data) {
|
||||
let statusCode = data != null ? data.meta.code : 200;
|
||||
if (err) statusCode = 500;
|
||||
sapaccountadapter.sendResponse(statusCode, data, res);
|
||||
});
|
||||
} catch (err) {
|
||||
apireshandler.meta.code = 502;
|
||||
apireshandler.meta.message = " [26] : SAP Account current, " + err.toString();
|
||||
sapaccountadapter.sendResponse(502, apireshandler, res);
|
||||
}
|
||||
};
|
||||
74
middlewares/multer/singlepo.js
Normal file
74
middlewares/multer/singlepo.js
Normal file
@ -0,0 +1,74 @@
|
||||
const multer = require('multer');
|
||||
|
||||
const path = require('path');
|
||||
var imageStorage = multer.diskStorage({
|
||||
// Destination to store image
|
||||
// destination: 'assets/images/'+pathDir,
|
||||
destination: (req, file, cb) => {
|
||||
// console.log(req.get("path"));
|
||||
// let pathdir = req.get("path");
|
||||
cb(null, "assets/sap-po/")
|
||||
// cb(null, "assets/words/" + pathdir + "/")
|
||||
},
|
||||
filename : (req, file, cb) => {
|
||||
// let filename=file.originalname.split(".")[0];
|
||||
let nik = req.nik;
|
||||
let filedoc = 'sap_po_'+nik+'_' + Date.now() + path.extname(file.originalname);
|
||||
// req.body.filedoc = filedoc;
|
||||
// cb(null, filedoc);
|
||||
req.body.filename = filedoc;
|
||||
cb(null, filedoc);
|
||||
// file.fieldname is name of the field (image)
|
||||
// path.extname get the uploaded file extension
|
||||
}
|
||||
});
|
||||
var imageUpload = multer({
|
||||
storage: imageStorage,
|
||||
limits: {
|
||||
fileSize: '25mb' // 1000000 Bytes = 5 MB
|
||||
},
|
||||
fileFilter(req, file, cb) {
|
||||
if (!file.originalname.match(/\.(docx|pdf|PDF)$/)) {
|
||||
// if (!file.originalname.match(/\.(docx)$/)) {
|
||||
// upload only png and jpg format
|
||||
req.fileValidationError = "Please upload a word document in ( docx ) / pdf file max 25 mb";
|
||||
cb(new Error('Please upload a word document in ( docx ) / pdf file max 25 mb'), false);
|
||||
}
|
||||
else{
|
||||
cb(null, true);
|
||||
}
|
||||
}
|
||||
}).single("file-doc");
|
||||
module.exports = (req, res, next) => {
|
||||
try {
|
||||
imageUpload(req,res, function(err){
|
||||
try {
|
||||
|
||||
// if (err || err instanceof multer.MulterError){
|
||||
if (err){
|
||||
|
||||
res.status(500).send({
|
||||
"meta":{
|
||||
"auth": false,
|
||||
"code" : 500,
|
||||
"message" : req.fileValidationError || err.toString(),
|
||||
},
|
||||
"data" :[]
|
||||
});
|
||||
} else {
|
||||
next();
|
||||
// console.log('The filename is ' + res.req.file.filename);
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.log("error "+error);
|
||||
}
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
console.log("error " + error);
|
||||
error.message = error.message;
|
||||
error.statusCode = 500;
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
@ -4,6 +4,9 @@ const pocontroller = require('../controllers/po');
|
||||
const jwtauth = require('../middlewares/auth.js');
|
||||
const uploadfile = require('../middlewares/multer/po-doc.js');
|
||||
const uploadfileBoq = require('../middlewares/multer/poboq-csv.js');
|
||||
|
||||
const uploadfilePO = require('../middlewares/multer/singlepo.js');
|
||||
|
||||
const router=express.Router();
|
||||
|
||||
router.get('/getlistvendor',[jwtauth], pocontroller.getListVendor);
|
||||
@ -24,13 +27,15 @@ router.get('/getpomigolist',[jwtauth], pocontroller.getPOMigoList);
|
||||
router.get('/getpomigodetaillist',[jwtauth], pocontroller.getPOMigoDetailList);
|
||||
|
||||
// === SAP Enpoint
|
||||
router.post('/createposap',[jwtauth], pocontroller.createPOSAP);
|
||||
router.post('/createmigosap',[jwtauth], pocontroller.createMIGOPOSAP);
|
||||
router.post('/createposap',[jwtauth], pocontroller.createPOSAPold);
|
||||
router.post('/createmigosap',[jwtauth], pocontroller.createMIGOPOSAPold);
|
||||
router.post('/changeposap',[jwtauth], pocontroller.changePOSAP);
|
||||
router.post('/releaseposap',[jwtauth], pocontroller.releasePOSAP);
|
||||
router.post('/unreleaseposap',[jwtauth], pocontroller.unreleasePOSAP);
|
||||
router.post('/createheaderposap',[jwtauth], pocontroller.createHeaderPOSAP);
|
||||
|
||||
// === Upload PO SAP
|
||||
router.post('/uploadpo',[jwtauth, uploadfilePO], pocontroller.uploadPOSAP);
|
||||
|
||||
// === PO Adjustment
|
||||
router.post('/newpoadj',[jwtauth, uploadfile], pocontroller.newpoadjustment);
|
||||
|
||||
@ -14,12 +14,12 @@ router.post('/prlist',[jwtauth], prcontroller.getListPr);
|
||||
router.post('/setnewpr',[jwtauth], prcontroller.setNewPr);
|
||||
router.post('/updatepr',[jwtauth], prcontroller.setUpdatePr);
|
||||
router.post('/approvedpr',[jwtauth], prcontroller.approvedPR);
|
||||
router.post('/updatestatuspr',[jwtauth], prcontroller.setUpdateStatusPr);
|
||||
router.post('/updatestatuspr',[jwtauth], prcontroller.setUpdateStatusProld);
|
||||
router.post('/deletepr',[jwtauth], prcontroller.deletePR);
|
||||
// ==== SAP Part
|
||||
router.post('/releaseprsap',[jwtauth], prcontroller.releasePRSAP);
|
||||
router.post('/unreleaseprsap',[jwtauth], prcontroller.unreleasePRSAP);
|
||||
router.post('/changeprsap',[jwtauth], prcontroller.changePRSAP);
|
||||
router.post('/changeprsap',[jwtauth], prcontroller.changePRSAPold);
|
||||
router.post('/deleteprsap',[jwtauth], prcontroller.deletePRSAP);
|
||||
|
||||
module.exports = router;
|
||||
14
routes/sap.js
Normal file
14
routes/sap.js
Normal file
@ -0,0 +1,14 @@
|
||||
const express = require("express");
|
||||
const sapcontroller = require("../controllers/sap_account.js");
|
||||
const jwtauth = require("../middlewares/auth.js");
|
||||
const router = express.Router();
|
||||
|
||||
router.get("/list", [jwtauth], sapcontroller.list);
|
||||
router.post("/create", [jwtauth], sapcontroller.create);
|
||||
router.post("/update/:id", [jwtauth], sapcontroller.update);
|
||||
router.delete("/delete/:id", [jwtauth], sapcontroller.delete);
|
||||
router.get("/detail/:id", [jwtauth], sapcontroller.detail);
|
||||
router.post("/activate/:id", [jwtauth], sapcontroller.activate);
|
||||
router.get("/current", [jwtauth], sapcontroller.current);
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user