55 Commits

Author SHA1 Message Date
1f898d3977 upd 2026-03-06 16:10:32 +07:00
ee0cfda601 log 2026-03-06 16:10:15 +07:00
8f8bf4bad5 upd 2026-03-06 15:53:46 +07:00
17abbe9b73 upload po endpoint 2026-03-06 15:24:37 +07:00
4d94263a93 update 2026-03-06 14:37:56 +07:00
541b423c03 display vendor on detail 2026-03-06 10:33:27 +07:00
f6670321fc add field vendor in procjustification 2026-03-06 10:20:13 +07:00
c6ed4a0400 upd 2026-03-02 14:16:47 +07:00
7575fc2e13 upd 2026-03-02 14:15:16 +07:00
79709dd680 test 2026-03-02 14:04:42 +07:00
9d48cb4089 upd 2026-03-02 12:13:02 +07:00
d6e1035a3b update 2026-03-02 12:07:34 +07:00
82ac594b72 logging release po, unrelease po, change po 2026-02-13 14:22:56 +07:00
0cac4ae30b upd 2026-02-13 14:14:05 +07:00
232830070a log idxpr 2026-02-13 14:11:59 +07:00
71d960f9ea update 2026-02-13 14:09:19 +07:00
20c1864ac5 log create PO and create header SAP 2026-02-13 11:18:13 +07:00
44f10398ba log release, unrelease and change PR 2026-02-13 11:02:38 +07:00
4808c533a6 ok 2026-02-13 10:47:20 +07:00
9d4e4a98b2 create logger 2026-02-13 10:37:13 +07:00
034d99ff19 logs 2026-02-11 18:06:03 +07:00
4c332b3ce9 logs 2026-02-11 17:57:21 +07:00
dda6e73cbb upd 2026-02-11 17:36:34 +07:00
2dd3a8aa08 upd 2026-02-11 17:34:10 +07:00
ec10b69585 log 2026-02-11 17:29:50 +07:00
3b48e720d9 upd 2026-02-11 17:28:48 +07:00
f4c589e214 upd 2026-02-11 17:26:34 +07:00
b5fcf71f4a upd 2026-02-11 17:23:29 +07:00
051dcf2052 upd 2026-02-11 16:37:20 +07:00
5c4b79bac7 update 2026-02-11 15:49:41 +07:00
c39d79feec update to prev version 2026-01-20 10:51:49 +07:00
638ff55bff upd 2026-01-09 15:40:05 +07:00
7e3f6dd426 upd 2026-01-09 14:45:01 +07:00
a01efd2812 update 2026-01-09 14:41:28 +07:00
c777373817 test create PR 2026-01-09 14:26:24 +07:00
367bb5d29c upd 2026-01-09 13:36:41 +07:00
9c199e2413 update 2026-01-09 13:34:57 +07:00
2dc85891e2 upd 2026-01-09 10:54:08 +07:00
23f1026b3e upd 2026-01-09 10:52:27 +07:00
e139924302 upd 2026-01-09 10:50:08 +07:00
128d47e786 upd 2026-01-09 10:46:31 +07:00
76ac4d4341 upd 2026-01-09 10:44:29 +07:00
2a5363c835 upd 2026-01-09 10:41:47 +07:00
758fc65db3 udp 2026-01-08 17:25:53 +07:00
c00dc40f43 update 2026-01-08 17:20:26 +07:00
0221a6fb04 update 2026-01-08 17:12:08 +07:00
cc1102c444 API SAP Account 2026-01-08 16:54:56 +07:00
73ac2987a0 update 2026-01-07 15:25:14 +07:00
0476c18c43 updd 2026-01-07 15:22:42 +07:00
63db38c0fc try 2026-01-07 15:20:24 +07:00
ee58229803 upd 2026-01-07 15:09:30 +07:00
71b30d0a33 upd 2026-01-07 14:50:48 +07:00
221e81aff3 upd 2026-01-07 14:45:33 +07:00
b0c95b12e1 upd 2026-01-07 14:33:49 +07:00
9b1d94348e upd 2026-01-07 14:08:01 +07:00
13 changed files with 6906 additions and 4917 deletions

View File

@ -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;

File diff suppressed because it is too large Load Diff

View File

@ -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

View 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
View 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;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

110
controllers/sap_account.js Normal file
View 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);
}
};

View 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;
}
}

View File

@ -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);

View File

@ -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
View 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;