Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -586,6 +586,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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
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;
|
||||||
@ -88,13 +88,16 @@ exports.createPOSAP = ( req, res ) => {
|
|||||||
try{
|
try{
|
||||||
let status = req.body.status;
|
let status = req.body.status;
|
||||||
poadapter.queryUpdatePoHeader(req,function(err,resdata){
|
poadapter.queryUpdatePoHeader(req,function(err,resdata){
|
||||||
|
console.log("err createpo =>", err)
|
||||||
let statusCode = resdata!=null ? resdata.meta.code : 200 ;
|
let statusCode = resdata!=null ? resdata.meta.code : 200 ;
|
||||||
if(err){
|
if(err){
|
||||||
statusCode = 500;
|
statusCode = 500;
|
||||||
poadapter.sendResponse(statusCode,data, res);
|
poadapter.sendResponse(statusCode,data, res);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
poadapter.queryUpdatePoNumber(req,function(err,data){
|
poadapter.queryUpdatePoNumber(req,function(err,data){
|
||||||
|
console.log("err queryUpdatePoNumber =>", err)
|
||||||
|
|
||||||
let statusCode = data!=null ? data.meta.code : 200 ;
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
if(err) statusCode = 500;
|
if(err) statusCode = 500;
|
||||||
poadapter.sendResponse(statusCode,data, res);
|
poadapter.sendResponse(statusCode,data, res);
|
||||||
@ -160,6 +163,7 @@ exports.createPOSAPold = ( req, res ) => {
|
|||||||
|
|
||||||
// console.log(resuri);
|
// console.log(resuri);
|
||||||
request(resuri, function (error, response) {
|
request(resuri, function (error, response) {
|
||||||
|
console.log('response createPoSAP =>', response)
|
||||||
if (error) {
|
if (error) {
|
||||||
// console.log(error);
|
// console.log(error);
|
||||||
apireshandler.message = error.toString();
|
apireshandler.message = error.toString();
|
||||||
@ -683,13 +687,19 @@ exports.createHeaderPOSAP = ( req, res ) => {
|
|||||||
// console.log(resuri);
|
// console.log(resuri);
|
||||||
request(resuri, function (error, response) {
|
request(resuri, function (error, response) {
|
||||||
if (error) {
|
if (error) {
|
||||||
// console.log(error);
|
console.log(error);
|
||||||
apireshandler.message = error.toString();
|
apireshandler.message = error.toString();
|
||||||
poadapter.sendResponse(400, apireshandler, res);
|
apireshandler.meta.message = "Header Created Successfuly"
|
||||||
|
poadapter.queryUpdatePoNumber(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
poadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
// poadapter.sendResponse(400, apireshandler, res);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// console.log("response : " +response.body);
|
console.log("response : " +response.body);
|
||||||
var resdata = JSON.parse(response.body);
|
var resdata = JSON.parse(response.body);
|
||||||
var errcode = "";
|
var errcode = "";
|
||||||
var errmsg ="";
|
var errmsg ="";
|
||||||
|
|||||||
1224
controllers/pr.js
1224
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);
|
||||||
|
}
|
||||||
|
};
|
||||||
@ -14,7 +14,7 @@ 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);
|
||||||
|
|||||||
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