25 Commits

Author SHA1 Message Date
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
8 changed files with 1667 additions and 1008 deletions

View File

@ -1,7 +1,7 @@
const db=require('../config/dbproc.js');
const Adapter=require('./dbadapter.js');
const db = require("../config/dbproc.js");
const Adapter = require("./dbadapter.js");
const fs = require("fs");
const baseUrl = process.env.URLPDFFILE;
class BastAdapter extends Adapter {
constructor() {
@ -25,22 +25,20 @@ class BastAdapter extends Adapter{
// console.log(qry);
db.query(qry, [], function (err, result, fields) {
if (err) {
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
apires.meta["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;
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
"totalrows": result.length,
});
qry = "select * from vw_bastactivitylist ";
qry = qry + "where activityname like '%" + keyword + "%' ";
@ -50,31 +48,27 @@ class BastAdapter extends Adapter{
// 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.meta["message"] = err.toString();
apires.meta["code"] = 500;
callback("err", apires);
} else {
apires.data.push({
"results": JSON.parse(JSON.stringify(result))
"results": JSON.parse(JSON.stringify(result)),
});
callback(null, apires);
}
});
}
else{
} else {
apires.meta.code = 200;
apires.meta.message = "Record Not Found";
callback(null, apires);
}
}
});
}
catch(err) {
} catch (err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
callback("error", apires);
}
}
@ -95,22 +89,20 @@ class BastAdapter extends Adapter{
// console.log(qry);
db.query(qry, [], function (err, result, fields) {
if (err) {
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
apires.meta["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;
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
"totalrows": result.length,
});
// qry = "select * from vw_bastactivitylist ";
@ -121,31 +113,27 @@ class BastAdapter extends Adapter{
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.meta["message"] = err.toString();
apires.meta["code"] = 500;
callback("err", apires);
} else {
apires.data.push({
"results": JSON.parse(JSON.stringify(result))
"results": JSON.parse(JSON.stringify(result)),
});
callback(null, apires);
}
});
}
else{
} else {
apires.meta.code = 200;
apires.meta.message = "Record Not Found";
callback(null, apires);
}
}
});
}
catch(err) {
} catch (err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
callback("error", apires);
}
}
@ -160,28 +148,24 @@ class BastAdapter extends Adapter{
// console.log(qry);
db.query(qry, [], function (err, result, fields) {
if (err) {
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
apires.meta["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{
} else {
apires.meta.code = 200;
apires.meta.message = "Record Not Found";
}
callback(null, apires);
}
});
}
catch(err) {
} catch (err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
callback("error", apires);
}
}
@ -206,50 +190,84 @@ class BastAdapter extends Adapter{
// 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()";
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
{
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 =
"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.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) {
} catch (err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
callback("error", apires);
}
}
@ -261,30 +279,59 @@ class BastAdapter extends Adapter{
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 status=1,statusdescription='Upload Handover',bastdateshandover='" +
bastdates +
"',descriptionhandover='" +
description +
"',";
qry +=
"filehandoversign='" +
filehandoversign +
"',uby='" +
nik +
"',udt=now() where _idx='" +
idxbast +
"'";
// let qry = "update tbl_bast set filehandoversign='"+filehandoversign+"',uby='"+nik+"',udt=now() where _idx='"+idxbast+"'";
// console.log(qry);
db.query(qry, [], function (err, result, fields) {
if (err) {
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
apires.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) {
});
} catch (err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
callback("error", apires);
}
}
@ -302,53 +349,47 @@ class BastAdapter extends Adapter{
// console.log(qry);
db.query(qry, [], function (err, result, fields) {
if (err) {
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
apires.meta["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;
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
"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.meta["message"] = err.toString();
apires.meta["code"] = 500;
callback("err", apires);
} else {
apires.data.push({
"results": JSON.parse(JSON.stringify(result))
"results": JSON.parse(JSON.stringify(result)),
});
callback(null, apires);
}
});
}
else{
} else {
apires.meta.code = 200;
apires.meta.message = "Record Not Found";
callback(null, apires);
}
}
});
}
catch(err) {
} catch (err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
callback("error", apires);
}
}
@ -363,23 +404,32 @@ class BastAdapter extends Adapter{
// console.log(qry);
db.query(qry, [], function (err, result, fields) {
if (err) {
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
apires.meta["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))
"results": JSON.parse(JSON.stringify(result)),
});
callback(null, apires);
}
});
}
catch(err) {
});
} catch (err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
callback("error", apires);
}
}
@ -391,16 +441,23 @@ class BastAdapter extends Adapter{
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() ";
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.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);
@ -409,11 +466,9 @@ class BastAdapter extends Adapter{
} catch (err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
callback("error", apires);
}
}
}
module.exports = BastAdapter;

View File

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

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;

View File

@ -88,6 +88,7 @@ exports.createPOSAP = ( req, res ) => {
try{
let status = req.body.status;
poadapter.queryUpdatePoHeader(req,function(err,resdata){
console.log("err createpo =>", err)
let statusCode = resdata!=null ? resdata.meta.code : 200 ;
if(err){
statusCode = 500;
@ -95,6 +96,8 @@ exports.createPOSAP = ( req, res ) => {
}
else{
poadapter.queryUpdatePoNumber(req,function(err,data){
console.log("err queryUpdatePoNumber =>", err)
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
poadapter.sendResponse(statusCode,data, res);
@ -160,6 +163,7 @@ exports.createPOSAPold = ( req, res ) => {
// console.log(resuri);
request(resuri, function (error, response) {
console.log('response createPoSAP =>', response)
if (error) {
// console.log(error);
apireshandler.message = error.toString();
@ -683,13 +687,19 @@ exports.createHeaderPOSAP = ( req, res ) => {
// console.log(resuri);
request(resuri, function (error, response) {
if (error) {
// console.log(error);
console.log(error);
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
{
// console.log("response : " +response.body);
console.log("response : " +response.body);
var resdata = JSON.parse(response.body);
var errcode = "";
var errmsg ="";

View File

@ -1,12 +1,52 @@
const PrAdapter=require('../adapter/pradapter.js');
const PrAdapter = require("../adapter/pradapter.js");
const pradapter = new PrAdapter();
const Controllers = require('./controller.js');
const Controllers = require("./controller.js");
const controllers = new Controllers();
var apireshandler = controllers.getApiResultDefined();
const baseurlsap = "http://" + process.env.HOSTSAP + "/sapapi/index.php/api";
const apikeysap = "befea63a-7c47-4323-afea-968a3168fe0a";
const request = require('request');
const request = require("request");
function buildPipeString(length, mapping = {}) {
const arr = Array(length).fill("");
Object.keys(mapping).forEach((index) => {
arr[index] = mapping[index];
});
return arr.join("|");
}
function buildPrAccount({prNo, qtyAcc, prDate, budget, costCenter, profitCenter}) {
return buildPipeString(40, {
0: prNo,
1: qtyAcc,
3: prDate,
7: budget,
8: "TIL1",
9: costCenter,
17: profitCenter,
});
}
function buildPrItem({prNo, shortText, qty, unit, price, prDate}) {
return buildPipeString(80, {
0: prNo,
3: "120",
4: "Putra",
5: shortText,
13: "1603",
15: "TrackNo1",
16: "ZSRV",
18: qty,
19: unit,
21: prDate,
23: prDate,
25: price,
26: "1",
28: "J",
36: "1603",
79: "D",
});
}
exports.getListJustification = (req, res) => {
try {
@ -15,13 +55,12 @@ exports.getListJustification = ( req, res ) => {
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [18] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.getListPR = (req, res) => {
try {
@ -30,13 +69,12 @@ exports.getListPR = ( req, res ) => {
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [18] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.gettrxid = (req, res) => {
try {
@ -45,13 +83,12 @@ exports.gettrxid = ( req, res ) => {
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [18] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.getListPr = (req, res) => {
try {
@ -60,13 +97,12 @@ exports.getListPr = ( req, res ) => {
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [167] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.setNewPr = (req, res) => {
try {
@ -75,13 +111,12 @@ exports.setNewPr = ( req, res ) => {
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [167] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.getDetailPr = (req, res) => {
try {
@ -90,13 +125,12 @@ exports.getDetailPr = ( req, res ) => {
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [93] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.setUpdatePr = (req, res) => {
try {
@ -105,51 +139,45 @@ exports.setUpdatePr = ( req, res ) => {
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [167] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.setUpdateStatusPr = (req, res) => {
try {
let status = req.body.status;
let idxpr = req.body.idxpr;
if (status == 0) {
// if(0==1){
req.query.id = idxpr;
pradapter.queryUpdateStatusPr(req, req.body.prnumber, '', function(err,data){
pradapter.queryUpdateStatusPr(req, req.body.prnumber, "", function (err, data) {
let statusCode = data != null ? data.meta.code : 200;
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
} else {
pradapter.queryUpdateStatusPr(req, "00000", "", function (err, data) {
let statusCode = data != null ? data.meta.code : 200;
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
}
else{
pradapter.queryUpdateStatusPr(req,'00000','',function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
});
}
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [123] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.setUpdateStatusProld = (req, res) => {
try {
let status = req.body.status;
let idxpr = req.body.idxpr;
if (status == 0) {
// if(0==1){
req.query.id = idxpr;
@ -160,6 +188,7 @@ exports.setUpdateStatusProld = ( req, res ) => {
pradapter.sendResponse(statusCode, data, res);
} else {
var rsdata = JSON.parse(JSON.stringify(data));
console.log('PR Data =>', rsdata.data[0])
// console.log(rsdata["data"]);
let pr_type="PRTL";
let x_pr_type="X";
@ -180,29 +209,26 @@ exports.setUpdateStatusProld = ( req, res ) => {
let resuri={
'method': 'POST',
// 'url': baseurl+'signon',
'url': baseurlsap+'/createPr?pr_type='+pr_type+'&x_pr_type=X&praccount[]='+pr_account+'&pritem[]='+pr_item,
'url': process.env.SAP_API_BASE_URL+'/createPr?pr_type='+pr_type+'&x_pr_type=X&praccount[]='+pr_account+'&pritem[]='+pr_item,
'headers': {
'Content-Type': 'application/json',
'x-api-key' : apikeysap
'x-api-key' : process.env.SAP_API_KEY
},
// form: formjson,
};
console.log(resuri);
console.log('resuri', resuri);
request(resuri, function (error, response) {
// console.log('response.body', response.body)
if (error) {
console.log(error);
apireshandler.message = error.toString();
pradapter.sendResponse(400, apireshandler, res);
}
else
{
// console.log(response.body);
} else {
var resdata = JSON.parse(response.body);
var errcode = "";
var errmsg = "";
resdata['RETURN'].forEach(e => {
if(e.TYPE=='E'){
resdata["RETURN"].forEach((e) => {
if (e.TYPE == "E") {
errcode += e.NUMBER + ", ";
errmsg += e.MESSAGE + " & ";
}
@ -210,43 +236,38 @@ exports.setUpdateStatusProld = ( req, res ) => {
errcode = errcode.substring(0, errcode.length - 2);
errmsg = errmsg.substring(0, errmsg.length - 3);
if (errcode.length > 0) {
pradapter.queryUpdateSapMessage(req, errmsg, function(err, data) {
apireshandler.meta.code = errcode;
apireshandler.meta.message = errmsg;
apireshandler.meta.message = "Failed to Create PR SAP";
pradapter.sendResponse(200, apireshandler, res);
}
else{
pradapter.queryUpdateStatusPr(req,resdata['NUMBER'], errmsg, function(err,data){
})
} else {
pradapter.queryUpdateStatusPr(req, resdata["NUMBER"], errmsg, function (err, data) {
let statusCode = data != null ? data.meta.code : 200;
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
// apireshandler.success = true;
}
}
});
//pradapter.sendResponse(statusCode,data, res);
}
});
}
else{
pradapter.queryUpdateStatusPr(req,'00000','',function(err,data){
} else {
pradapter.queryUpdateStatusPr(req, "00000", "", function (err, data) {
let statusCode = data != null ? data.meta.code : 200;
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
}
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [123] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.deletePR = (req, res) => {
try {
@ -255,13 +276,12 @@ exports.deletePR = ( req, res ) => {
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [138] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.approvedPR = (req, res) => {
try {
@ -270,13 +290,12 @@ exports.approvedPR = ( req, res ) => {
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [153] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.getprmanagementlist = (req, res) => {
try {
@ -285,13 +304,12 @@ exports.getprmanagementlist = ( req, res ) => {
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [260] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.getprmanagementlistdetail = (req, res) => {
try {
@ -300,13 +318,12 @@ exports.getprmanagementlistdetail = ( req, res ) => {
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [275] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.releasePRSAP = (req, res) => {
try {
@ -319,14 +336,14 @@ exports.releasePRSAP = ( req, res ) => {
pradapter.sendResponse(statusCode, data, res);
} else {
var rsdata = JSON.parse(JSON.stringify(data));
let prnumber = rsdata.data[0]['prnumber']; //Ymd
let prnumber = rsdata.data[0]["prnumber"]; //Ymd
let resuri = {
'method': 'POST',
"method": "POST",
// 'url': baseurl+'signon',
'url': baseurlsap+'/releasePr?number='+prnumber+'&rel_code=A1',
'headers': {
'Content-Type': 'application/json',
'x-api-key' : apikeysap
"url": baseurlsap + "/releasePr?number=" + prnumber + "&rel_code=A1",
"headers": {
"Content-Type": "application/json",
"x-api-key": apikeysap,
},
// form: formjson,
};
@ -337,15 +354,13 @@ exports.releasePRSAP = ( req, res ) => {
// console.log(error);
apireshandler.message = error.toString();
pradapter.sendResponse(400, apireshandler, res);
}
else
{
} else {
console.log(response.body);
var resdata = JSON.parse(response.body);
var errcode = "";
var errmsg = "";
resdata['RETURN'].forEach(e => {
if(e.TYPE=='E'){
resdata["RETURN"].forEach((e) => {
if (e.TYPE == "E") {
errcode += e.NUMBER + ", ";
errmsg += e.MESSAGE + " & ";
}
@ -356,11 +371,10 @@ exports.releasePRSAP = ( req, res ) => {
apireshandler.meta.code = errcode;
apireshandler.meta.message = errmsg;
// pradapter.sendResponse(200, apireshandler, res);
}
else{
} else {
apireshandler.success = true;
}
pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){
pradapter.queryUpdateStatusPr(req, "", errmsg, function (err, data) {
let statusCode = data != null ? data.meta.code : 200;
if (err) statusCode = 500;
//data.data = resdata;
@ -372,14 +386,12 @@ exports.releasePRSAP = ( req, res ) => {
});
}
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [348] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.unreleasePRSAP = (req, res) => {
try {
@ -392,14 +404,14 @@ exports.unreleasePRSAP = ( req, res ) => {
pradapter.sendResponse(statusCode, data, res);
} else {
var rsdata = JSON.parse(JSON.stringify(data));
let prnumber = rsdata.data[0]['prnumber']; //Ymd
let prnumber = rsdata.data[0]["prnumber"]; //Ymd
let resuri = {
'method': 'POST',
"method": "POST",
// 'url': baseurl+'signon',
'url': baseurlsap+'/unreleasePr?number='+prnumber+'&rel_code=A1',
'headers': {
'Content-Type': 'application/json',
'x-api-key' : apikeysap
"url": baseurlsap + "/unreleasePr?number=" + prnumber + "&rel_code=A1",
"headers": {
"Content-Type": "application/json",
"x-api-key": apikeysap,
},
// form: formjson,
};
@ -410,15 +422,13 @@ exports.unreleasePRSAP = ( req, res ) => {
// console.log(error);
apireshandler.message = error.toString();
pradapter.sendResponse(400, apireshandler, res);
}
else
{
} else {
console.log(response.body);
var resdata = JSON.parse(response.body);
var errcode = "";
var errmsg = "";
resdata['RETURN'].forEach(e => {
if(e.TYPE=='E'){
resdata["RETURN"].forEach((e) => {
if (e.TYPE == "E") {
errcode += e.NUMBER + ", ";
errmsg += e.MESSAGE + " & ";
}
@ -429,8 +439,7 @@ exports.unreleasePRSAP = ( req, res ) => {
apireshandler.meta.code = errcode;
apireshandler.meta.message = errmsg;
// pradapter.sendResponse(200, apireshandler, res);
}
else{
} else {
apireshandler.success = true;
}
// else{
@ -440,7 +449,7 @@ exports.unreleasePRSAP = ( req, res ) => {
// pradapter.sendResponse(statusCode,data, res);
// });
// }
pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){
pradapter.queryUpdateStatusPr(req, "", errmsg, function (err, data) {
let statusCode = data != null ? data.meta.code : 200;
if (err) statusCode = 500;
//data.data = resdata;
@ -452,30 +461,27 @@ exports.unreleasePRSAP = ( req, res ) => {
});
}
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [413] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.changePRSAP = (req, res) => {
try {
pradapter.queryUpdateStatusPr(req,'','', function(err,data){
pradapter.queryUpdateStatusPr(req, "", "", function (err, data) {
console.log(data);
let statusCode = data != null ? data.meta.code : 200;
if (err) statusCode = 500;
pradapter.sendResponse(statusCode, data, res);
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [522] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.changePRSAPold = (req, res) => {
try {
@ -492,26 +498,59 @@ exports.changePRSAPold = ( req, res ) => {
// console.log(rsdata["data"]);
let pr_no = "00010";
let pr_qtyacc = "01";
let pr_number = rsdata.data[0]['prnumber']; //Ymd
let pr_date = rsdata.data[0]['prdateYmd']; //Ymd
let pr_budget = "00"+rsdata.data[0]['glaccount'];
let pr_costcenter = rsdata.data[0]['costcenter'];
let pr_number = rsdata.data[0]["prnumber"]; //Ymd
let pr_date = rsdata.data[0]["prdateYmd"]; //Ymd
let pr_budget = "00" + rsdata.data[0]["glaccount"];
let pr_costcenter = rsdata.data[0]["costcenter"];
let pr_profitcenter = "TIL1A01"; //rsdata.data[0]['profitcenter'];
let pr_shorttext =rsdata.data[0]['description'];
let pr_qtyitem =rsdata.data[0]['qty'];
let pr_unititem =rsdata.data[0]['unit'];
let pr_priceitem =rsdata.data[0]['netprice'];
let pr_shorttext = rsdata.data[0]["description"];
let pr_qtyitem = rsdata.data[0]["qty"];
let pr_unititem = rsdata.data[0]["unit"];
let pr_priceitem = rsdata.data[0]["netprice"];
// let pr_account="00010|01||20130727||||0051331006|TIL1|TIL1A01|||||||||||TIL1A01||||||||||||||||||||||";
let pr_account= pr_no+"|"+pr_qtyacc+"||"+pr_date+"||||"+pr_budget+"|TIL1|"+pr_costcenter+"|||||||||||"+pr_profitcenter+"||||||||||||||||||||||";
let pr_account =
pr_no +
"|" +
pr_qtyacc +
"||" +
pr_date +
"||||" +
pr_budget +
"|TIL1|" +
pr_costcenter +
"|||||||||||" +
pr_profitcenter +
"||||||||||||||||||||||";
// let pr_item="00010|||120|Putra|testcreatePR|||||||||1603||TrackNo1|ZSRV||1|BH||20130727||20130727|||1000|1||J||||||||1603|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|";
let pr_item=pr_no+"|||120|Putra|"+pr_shorttext+"|||||||||1603||TrackNo1|ZSRV||"+pr_qtyitem+"|"+pr_unititem+"||"+pr_date+"||"+pr_date+"|||"+pr_priceitem+"|1||J||||||||1603||||||||||||||||||||||||||||||||||||||||USD|||||||||||||||||||D|";
let pr_item =
pr_no +
"|||120|Putra|" +
pr_shorttext +
"|||||||||1603||TrackNo1|ZSRV||" +
pr_qtyitem +
"|" +
pr_unititem +
"||" +
pr_date +
"||" +
pr_date +
"|||" +
pr_priceitem +
"|1||J||||||||1603||||||||||||||||||||||||||||||||||||||||USD|||||||||||||||||||D|";
let resuri = {
'method': 'POST',
"method": "POST",
// 'url': baseurl+'signon',
'url': baseurlsap+'/changePR?number='+pr_number+'&praccount[]='+pr_account+'&pritem[]='+pr_item,
'headers': {
'Content-Type': 'application/json',
'x-api-key' : apikeysap
"url":
baseurlsap +
"/changePR?number=" +
pr_number +
"&praccount[]=" +
pr_account +
"&pritem[]=" +
pr_item,
"headers": {
"Content-Type": "application/json",
"x-api-key": apikeysap,
},
// form: formjson,
};
@ -522,16 +561,14 @@ exports.changePRSAPold = ( req, res ) => {
console.log(error);
apireshandler.message = error.toString();
pradapter.sendResponse(400, apireshandler, res);
}
else
{
} else {
// console.log("Change pR : "+response.body);
var resdata = JSON.parse(response.body);
var errcode = "";
var errmsg = "";
resdata['RETURN'].forEach(e => {
resdata["RETURN"].forEach((e) => {
// console.log(e);
if(e.TYPE=='E'){
if (e.TYPE == "E") {
errcode += e.NUMBER + ", ";
errmsg += e.MESSAGE + " & ";
}
@ -542,11 +579,10 @@ exports.changePRSAPold = ( req, res ) => {
apireshandler.meta.code = errcode;
apireshandler.meta.message = errmsg;
// pradapter.sendResponse(200, apireshandler, res);
}
else{
} else {
apireshandler.success = true;
}
pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){
pradapter.queryUpdateStatusPr(req, "", errmsg, function (err, data) {
let statusCode = data != null ? data.meta.code : 200;
if (err) statusCode = 500;
//data.data = resdata;
@ -554,23 +590,18 @@ exports.changePRSAPold = ( req, res ) => {
apireshandler.data = data.data;
pradapter.sendResponse(statusCode, apireshandler, res);
});
}
});
//pradapter.sendResponse(statusCode,data, res);
}
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [522] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};
exports.deletePRSAP = (req, res) => {
try {
@ -583,14 +614,14 @@ exports.deletePRSAP = ( req, res ) => {
pradapter.sendResponse(statusCode, data, res);
} else {
var rsdata = JSON.parse(JSON.stringify(data));
let prnumber = rsdata.data[0]['prnumber']; //Ymd
let prnumber = rsdata.data[0]["prnumber"]; //Ymd
let resuri = {
'method': 'POST',
"method": "POST",
// 'url': baseurl+'signon',
'url': baseurlsap+'/deletePr?number='+prnumber,
'headers': {
'Content-Type': 'application/json',
'x-api-key' : apikeysap
"url": baseurlsap + "/deletePr?number=" + prnumber,
"headers": {
"Content-Type": "application/json",
"x-api-key": apikeysap,
},
// form: formjson,
};
@ -601,15 +632,13 @@ exports.deletePRSAP = ( req, res ) => {
// console.log(error);
apireshandler.message = error.toString();
pradapter.sendResponse(400, apireshandler, res);
}
else
{
} else {
// console.log(response.body);
var resdata = JSON.parse(response.body);
var errcode = "";
var errmsg = "";
resdata['RETURN'].forEach(e => {
if(e.TYPE=='E'){
resdata["RETURN"].forEach((e) => {
if (e.TYPE == "E") {
errcode += e.NUMBER + ", ";
errmsg += e.MESSAGE + " & ";
}
@ -620,8 +649,7 @@ exports.deletePRSAP = ( req, res ) => {
apireshandler.meta.code = errcode;
apireshandler.meta.message = errmsg;
// pradapter.sendResponse(200, apireshandler, res);
}
else{
} else {
apireshandler.success = true;
}
// else{
@ -631,7 +659,7 @@ exports.deletePRSAP = ( req, res ) => {
// pradapter.sendResponse(statusCode,data, res);
// });
// }
pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){
pradapter.queryUpdateStatusPr(req, "", errmsg, function (err, data) {
let statusCode = data != null ? data.meta.code : 200;
if (err) statusCode = 500;
//data.data = resdata;
@ -643,11 +671,9 @@ exports.deletePRSAP = ( req, res ) => {
});
}
});
}
catch(err){
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [413] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
};

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

@ -14,7 +14,7 @@ router.post('/prlist',[jwtauth], prcontroller.getListPr);
router.post('/setnewpr',[jwtauth], prcontroller.setNewPr);
router.post('/updatepr',[jwtauth], prcontroller.setUpdatePr);
router.post('/approvedpr',[jwtauth], prcontroller.approvedPR);
router.post('/updatestatuspr',[jwtauth], prcontroller.setUpdateStatusPr);
router.post('/updatestatuspr',[jwtauth], prcontroller.setUpdateStatusProld);
router.post('/deletepr',[jwtauth], prcontroller.deletePR);
// ==== SAP Part
router.post('/releaseprsap',[jwtauth], prcontroller.releasePRSAP);

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;