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 db = require("../config/dbproc.js");
|
||||||
const Adapter=require('./dbadapter.js');
|
const Adapter = require("./dbadapter.js");
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
|
const baseUrl = process.env.URLPDFFILE;
|
||||||
|
|
||||||
|
class BastAdapter extends Adapter {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
class BastAdapter extends Adapter{
|
async queryBastActivityList(req, callback) {
|
||||||
constructor(){
|
var apires = this.getApiResultDefined();
|
||||||
super();
|
try {
|
||||||
}
|
let limit = req.query.limit;
|
||||||
|
let offset = req.query.offset;
|
||||||
async queryBastActivityList(req,callback){
|
let keyword = req.query.keyword;
|
||||||
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 ";
|
let qry = "select * from vw_bastactivitylist ";
|
||||||
// qry = qry + "where activityname like '%" + keyword + "%' ";
|
qry = qry + "where activityname like '%" + keyword + "%' ";
|
||||||
// qry = qry + "order by idxbudget asc limit " + offset + ", " + limit;
|
qry = qry + "order by idxbudget asc limit " + offset + ", " + limit;
|
||||||
qry = "select * from vw_basthandoverlist ";
|
// let qry = "select * from vw_basthandoverlist ";
|
||||||
qry = qry + "where bastnumber like '%" + keyword + "%' ";
|
// qry = qry + "where bastnumber like '%" + keyword + "%' ";
|
||||||
qry = qry + "order by _idx asc limit " + offset + ", " + limit;
|
// 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+"',";
|
// console.log(qry);
|
||||||
// qry = qry + "description='"+description+"',idxvendor='"+idxvendor+"',vendorcode='"+vendorcode+"',vendorname='"+vendorname+"',";
|
db.query(qry, [], function (err, result, fields) {
|
||||||
// qry = qry + "totalpo='"+totalpo+"',povendornumber='"+povendornumber+"',filedoctemplate='"+filedoctemplate+"',status='"+status+"',";
|
if (err) {
|
||||||
// qry = qry + "statusdescription='"+statusdescription+"',laststatusupdate=now(),iby='"+nik+"',idt=now()";
|
apires.meta["message"] = err.toString();
|
||||||
let qry = "insert into tbl_bast set idxpo='"+idxpo+"',bastnumber='"+bastnumber+"',bastdates='"+bastdates+"',";
|
apires.meta["code"] = 500;
|
||||||
qry = qry + "description='"+description+"',idxvendor='"+idxvendor+"',vendorcode='"+vendorcode+"',vendorname='"+vendorname+"',";
|
callback("err", apires);
|
||||||
qry = qry + "totalpo='"+totalpo+"',povendornumber='"+povendornumber+"',filepdf='"+filedoctemplate+"',ismergedoc=1,status='"+status+"',";
|
} else {
|
||||||
qry = qry + "statusdescription='"+statusdescription+"',laststatusupdate=now(),iby='"+nik+"',idt=now()";
|
if (result.length > 0) {
|
||||||
|
let pagination = result.length / limit;
|
||||||
// console.log(qry);
|
if (!Number.isInteger(pagination)) {
|
||||||
db.query(qry,[],function(err,result,fields){
|
pagination = Math.floor(result.length / limit) + 1;
|
||||||
if(err){
|
}
|
||||||
apires.meta['message'] = err.toString();
|
// let pagination = Adapter.getPagination(result.length, limit);
|
||||||
apires.meta['code'] = 500;
|
apires.success = true;
|
||||||
callback('err',apires);
|
apires.data.push({
|
||||||
}
|
"totalpage": pagination,
|
||||||
else
|
"totalrows": result.length,
|
||||||
{
|
});
|
||||||
var idxheader = result.insertId;
|
qry = "select * from vw_bastactivitylist ";
|
||||||
// qry ="insert into tbl_bastdetail(idxheader,idxpoboq,description,qty,units,poamount,iby,idt) ";
|
qry = qry + "where activityname like '%" + keyword + "%' ";
|
||||||
// qry = qry + "select '"+idxheader+"', _idx , description, qty, units, poamount, '"+nik+"',now() ";
|
qry = qry + "order by idxbudget asc limit " + offset + ", " + limit;
|
||||||
// qry = qry + "from tbl_poboq where _idx in("+idxpoboq+")";
|
// qry = "select * from vw_basthandoverlist ";
|
||||||
qry ="insert into tbl_bastdetail(idxheader,idxpoboq,description,qty,units,poamount,iby,idt) ";
|
// qry = qry + "where bastnumber like '%" + keyword + "%' ";
|
||||||
qry = qry + "select '"+idxheader+"', _idx , description, qty, units, poamount, '"+nik+"',now() ";
|
// qry = qry + "order by _idx asc limit " + offset + ", " + limit;
|
||||||
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.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){
|
async queryBastHandoverList(req, callback) {
|
||||||
if(err){
|
var apires = this.getApiResultDefined();
|
||||||
apires.meta['message'] = err.toString();
|
try {
|
||||||
apires.meta['code'] = 500;
|
let limit = req.query.limit;
|
||||||
callback('err',apires);
|
let offset = req.query.offset;
|
||||||
}
|
let keyword = req.query.keyword;
|
||||||
else
|
|
||||||
{
|
|
||||||
apires.success = true;
|
|
||||||
apires.data = JSON.parse(JSON.stringify(result));
|
|
||||||
apires.meta.code = 200;
|
|
||||||
callback(null, apires);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
// let qry = "select * from vw_bastactivitylist ";
|
||||||
});
|
// qry = qry + "where activityname like '%" + keyword + "%' ";
|
||||||
}
|
// qry = qry + "order by idxbudget asc limit " + offset + ", " + limit;
|
||||||
catch(err) {
|
let qry = "select * from vw_basthandoverlist ";
|
||||||
apires.meta.code = 500;
|
qry = qry + "where bastnumber like '%" + keyword + "%' ";
|
||||||
apires.meta.message = err.toString();
|
qry = qry + "order by _idx asc";
|
||||||
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;
|
|
||||||
|
|
||||||
|
// console.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 = "select * from vw_bastactivitylist ";
|
||||||
qry +="filehandoversign='"+filehandoversign+"',uby='"+nik+"',udt=now() where _idx='"+idxbast+"'";
|
// qry = qry + "where activityname like '%" + keyword + "%' ";
|
||||||
// let qry = "update tbl_bast set filehandoversign='"+filehandoversign+"',uby='"+nik+"',udt=now() where _idx='"+idxbast+"'";
|
// qry = qry + "order by idxbudget asc limit " + offset + ", " + limit;
|
||||||
|
qry = "select * from vw_basthandoverlist ";
|
||||||
// console.log(qry);
|
qry = qry + "where bastnumber like '%" + keyword + "%' ";
|
||||||
db.query(qry,[],function(err,result,fields){
|
qry = qry + "order by _idx asc limit " + offset + ", " + limit;
|
||||||
if(err){
|
db.query(qry, [], function (err, result, fields) {
|
||||||
apires.meta['message'] = err.toString();
|
if (err) {
|
||||||
apires.meta['code'] = 500;
|
apires.meta["message"] = err.toString();
|
||||||
callback('err',apires);
|
apires.meta["code"] = 500;
|
||||||
}
|
callback("err", apires);
|
||||||
else
|
} else {
|
||||||
{
|
apires.data.push({
|
||||||
apires.success = true;
|
"results": JSON.parse(JSON.stringify(result)),
|
||||||
apires.meta.code = 200;
|
});
|
||||||
callback(null, apires);
|
callback(null, apires);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
} else {
|
||||||
catch(err) {
|
apires.meta.code = 200;
|
||||||
apires.meta.code = 500;
|
apires.meta.message = "Record Not Found";
|
||||||
apires.meta.message = err.toString();
|
callback(null, apires);
|
||||||
callback('error',apires);
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
} catch (err) {
|
||||||
async queryBastList(req,callback){
|
apires.meta.code = 500;
|
||||||
var apires = this.getApiResultDefined();
|
apires.meta.message = err.toString();
|
||||||
try {
|
callback("error", apires);
|
||||||
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){
|
async queryBastActivityListDetail(req, callback) {
|
||||||
var apires = this.getApiResultDefined();
|
var apires = this.getApiResultDefined();
|
||||||
try {
|
try {
|
||||||
let idxbast = req.query.idxbast;
|
let idxpr = req.query.idxpr;
|
||||||
|
|
||||||
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) {
|
let qry = "select * from vw_bastactivitylistdetail ";
|
||||||
try {
|
qry = qry + "where idxpr='" + idxpr + "'";
|
||||||
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() ";
|
// console.log(qry);
|
||||||
qry = qry +"where _idx='" + idxbast +"'";
|
db.query(qry, [], function (err, result, fields) {
|
||||||
db.query(qry,[],function(err,result,fields){
|
if (err) {
|
||||||
if(err){
|
apires.meta["message"] = err.toString();
|
||||||
apires.meta['message'] = err.toString();
|
apires.meta["code"] = 500;
|
||||||
apires.meta['code'] = 500;
|
callback("err", apires);
|
||||||
callback('err',apires);
|
} else {
|
||||||
}
|
if (result.length > 0) {
|
||||||
else
|
apires.success = true;
|
||||||
{
|
apires.data = JSON.parse(JSON.stringify(result));
|
||||||
apires.success = true;
|
} else {
|
||||||
apires.data = JSON.parse(JSON.stringify(result));
|
apires.meta.code = 200;
|
||||||
callback(null, apires);
|
apires.meta.message = "Record Not Found";
|
||||||
}
|
}
|
||||||
});
|
callback(null, apires);
|
||||||
} catch (err) {
|
}
|
||||||
apires.meta.code = 500;
|
});
|
||||||
apires.meta.message = err.toString();
|
} catch (err) {
|
||||||
callback('error',apires);
|
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;
|
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 idxjustification= req.body.idxjustification;
|
||||||
let justificationnumber= req.body.justificationnumber;
|
let justificationnumber= req.body.justificationnumber;
|
||||||
let trxidpr = req.body.trxidpr;
|
let trxidpr = req.body.trxidpr;
|
||||||
let prnumber = req.body.prnumber;
|
let prnumber = req.body.prnumber ?? "";
|
||||||
let costcenter = req.body.costcenter;
|
let costcenter = req.body.costcenter;
|
||||||
let profitcenter = req.body.profitcenter;
|
let profitcenter = req.body.profitcenter;
|
||||||
let description = req.body.description;
|
let description = req.body.description;
|
||||||
@ -143,7 +143,7 @@ class PrAdapter extends Adapter{
|
|||||||
let idxjustification= req.body.idxjustification;
|
let idxjustification= req.body.idxjustification;
|
||||||
let justificationnumber= req.body.justificationnumber;
|
let justificationnumber= req.body.justificationnumber;
|
||||||
let trxidpr = req.body.trxidpr;
|
let trxidpr = req.body.trxidpr;
|
||||||
let prnumber = req.body.prnumber;
|
let prnumber = req.body.prnumber ?? "";
|
||||||
let costcenter = req.body.costcenter;
|
let costcenter = req.body.costcenter;
|
||||||
let profitcenter = req.body.profitcenter;
|
let profitcenter = req.body.profitcenter;
|
||||||
let description = req.body.description;
|
let description = req.body.description;
|
||||||
@ -313,7 +313,9 @@ class PrAdapter extends Adapter{
|
|||||||
async queryPrList(req,callback){
|
async queryPrList(req,callback){
|
||||||
var apires = this.getApiResultDefined();
|
var apires = this.getApiResultDefined();
|
||||||
try {
|
try {
|
||||||
|
const proc_nik = process.env.PROC_USER_NIK ?? ""
|
||||||
|
const proc_users = proc_nik.split(",")
|
||||||
|
|
||||||
let limit = req.body.limit;
|
let limit = req.body.limit;
|
||||||
let offset = req.body.offset;
|
let offset = req.body.offset;
|
||||||
let keyword = req.body.keyword;
|
let keyword = req.body.keyword;
|
||||||
@ -326,7 +328,9 @@ class PrAdapter extends Adapter{
|
|||||||
|
|
||||||
let swherenik="";
|
let swherenik="";
|
||||||
if(nik){
|
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){
|
async queryPrManagementList(req,callback){
|
||||||
var apires = this.getApiResultDefined();
|
var apires = this.getApiResultDefined();
|
||||||
try {
|
try {
|
||||||
|
const proc_nik = process.env.PROC_USER_NIK ?? ""
|
||||||
|
const proc_users = proc_nik.split(",")
|
||||||
|
|
||||||
let limit = req.query.limit;
|
let limit = req.query.limit;
|
||||||
let offset = req.query.offset;
|
let offset = req.query.offset;
|
||||||
@ -485,7 +491,7 @@ class PrAdapter extends Adapter{
|
|||||||
let nik = req.query.nik;
|
let nik = req.query.nik;
|
||||||
|
|
||||||
let swherenik="and iby='"+nik+"'";
|
let swherenik="and iby='"+nik+"'";
|
||||||
if(nik=='999999'){
|
if (!proc_users.includes(nik)) {
|
||||||
swherenik="";
|
swherenik="";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -517,7 +523,7 @@ class PrAdapter extends Adapter{
|
|||||||
"totalrows": result.length
|
"totalrows": result.length
|
||||||
});
|
});
|
||||||
qry = "select * from vw_prmanagement ";
|
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;
|
qry = qry + swherenik +" order by id asc limit " + offset + ", " + limit;
|
||||||
db.query(qry,[],function(err,result,fields){
|
db.query(qry,[],function(err,result,fields){
|
||||||
if(err){
|
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 jwtauth = require('../middlewares/auth.js');
|
||||||
const uploadfile = require('../middlewares/multer/po-doc.js');
|
const uploadfile = require('../middlewares/multer/po-doc.js');
|
||||||
const uploadfileBoq = require('../middlewares/multer/poboq-csv.js');
|
const uploadfileBoq = require('../middlewares/multer/poboq-csv.js');
|
||||||
|
|
||||||
|
const uploadfilePO = require('../middlewares/multer/singlepo.js');
|
||||||
|
|
||||||
const router=express.Router();
|
const router=express.Router();
|
||||||
|
|
||||||
router.get('/getlistvendor',[jwtauth], pocontroller.getListVendor);
|
router.get('/getlistvendor',[jwtauth], pocontroller.getListVendor);
|
||||||
@ -24,13 +27,15 @@ router.get('/getpomigolist',[jwtauth], pocontroller.getPOMigoList);
|
|||||||
router.get('/getpomigodetaillist',[jwtauth], pocontroller.getPOMigoDetailList);
|
router.get('/getpomigodetaillist',[jwtauth], pocontroller.getPOMigoDetailList);
|
||||||
|
|
||||||
// === SAP Enpoint
|
// === SAP Enpoint
|
||||||
router.post('/createposap',[jwtauth], pocontroller.createPOSAP);
|
router.post('/createposap',[jwtauth], pocontroller.createPOSAPold);
|
||||||
router.post('/createmigosap',[jwtauth], pocontroller.createMIGOPOSAP);
|
router.post('/createmigosap',[jwtauth], pocontroller.createMIGOPOSAPold);
|
||||||
router.post('/changeposap',[jwtauth], pocontroller.changePOSAP);
|
router.post('/changeposap',[jwtauth], pocontroller.changePOSAP);
|
||||||
router.post('/releaseposap',[jwtauth], pocontroller.releasePOSAP);
|
router.post('/releaseposap',[jwtauth], pocontroller.releasePOSAP);
|
||||||
router.post('/unreleaseposap',[jwtauth], pocontroller.unreleasePOSAP);
|
router.post('/unreleaseposap',[jwtauth], pocontroller.unreleasePOSAP);
|
||||||
router.post('/createheaderposap',[jwtauth], pocontroller.createHeaderPOSAP);
|
router.post('/createheaderposap',[jwtauth], pocontroller.createHeaderPOSAP);
|
||||||
|
|
||||||
|
// === Upload PO SAP
|
||||||
|
router.post('/uploadpo',[jwtauth, uploadfilePO], pocontroller.uploadPOSAP);
|
||||||
|
|
||||||
// === PO Adjustment
|
// === PO Adjustment
|
||||||
router.post('/newpoadj',[jwtauth, uploadfile], pocontroller.newpoadjustment);
|
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('/setnewpr',[jwtauth], prcontroller.setNewPr);
|
||||||
router.post('/updatepr',[jwtauth], prcontroller.setUpdatePr);
|
router.post('/updatepr',[jwtauth], prcontroller.setUpdatePr);
|
||||||
router.post('/approvedpr',[jwtauth], prcontroller.approvedPR);
|
router.post('/approvedpr',[jwtauth], prcontroller.approvedPR);
|
||||||
router.post('/updatestatuspr',[jwtauth], prcontroller.setUpdateStatusPr);
|
router.post('/updatestatuspr',[jwtauth], prcontroller.setUpdateStatusProld);
|
||||||
router.post('/deletepr',[jwtauth], prcontroller.deletePR);
|
router.post('/deletepr',[jwtauth], prcontroller.deletePR);
|
||||||
// ==== SAP Part
|
// ==== SAP Part
|
||||||
router.post('/releaseprsap',[jwtauth], prcontroller.releasePRSAP);
|
router.post('/releaseprsap',[jwtauth], prcontroller.releasePRSAP);
|
||||||
router.post('/unreleaseprsap',[jwtauth], prcontroller.unreleasePRSAP);
|
router.post('/unreleaseprsap',[jwtauth], prcontroller.unreleasePRSAP);
|
||||||
router.post('/changeprsap',[jwtauth], prcontroller.changePRSAP);
|
router.post('/changeprsap',[jwtauth], prcontroller.changePRSAPold);
|
||||||
router.post('/deleteprsap',[jwtauth], prcontroller.deletePRSAP);
|
router.post('/deleteprsap',[jwtauth], prcontroller.deletePRSAP);
|
||||||
|
|
||||||
module.exports = router;
|
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