Files
backend-Eprocurement/controllers/pr.js
2025-12-05 06:21:42 +07:00

653 lines
28 KiB
JavaScript

const PrAdapter=require('../adapter/pradapter.js');
const pradapter = new PrAdapter();
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');
exports.getListJustification = ( req, res ) => {
try{
pradapter.queryPrJustificationList(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [18] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
exports.getListPR = ( req, res ) => {
try{
pradapter.queryPrPRList(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [18] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
exports.gettrxid = ( req, res ) => {
try{
pradapter.queryGetTrxIdPr(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [18] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
exports.getListPr = ( req, res ) => {
try{
pradapter.queryPrList(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [167] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
exports.setNewPr = ( req, res ) => {
try{
pradapter.queryNewPr(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [167] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
exports.getDetailPr = ( req, res ) => {
try{
pradapter.queryPrDetail(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [93] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
exports.setUpdatePr = ( req, res ) => {
try{
pradapter.queryUpdatePr(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
});
}
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){
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){
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;
pradapter.queryPrDetail(req, function (err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err){
statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
}else{
var rsdata = JSON.parse(JSON.stringify(data));
// console.log(rsdata["data"]);
let pr_type="PRTL";
let x_pr_type="X";
let pr_no = "00010";
let pr_qtyacc ="01";
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_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_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|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|";
let resuri={
'method': 'POST',
// 'url': baseurl+'signon',
'url': baseurlsap+'/createPr?pr_type='+pr_type+'&x_pr_type=X&praccount[]='+pr_account+'&pritem[]='+pr_item,
'headers': {
'Content-Type': 'application/json',
'x-api-key' : apikeysap
},
// form: formjson,
};
console.log(resuri);
request(resuri, function (error, response) {
if (error) {
console.log(error);
apireshandler.message = error.toString();
pradapter.sendResponse(400, apireshandler, res);
}
else
{
// console.log(response.body);
var resdata = JSON.parse(response.body);
var errcode = "";
var errmsg ="";
resdata['RETURN'].forEach(e => {
if(e.TYPE=='E'){
errcode+=e.NUMBER+", ";
errmsg+=e.MESSAGE+" & ";
}
});
errcode = errcode.substring(0, errcode.length-2);
errmsg = errmsg.substring(0, errmsg.length-3);
if(errcode.length>0){
apireshandler.meta.code = errcode;
apireshandler.meta.message = errmsg;
pradapter.sendResponse(200, apireshandler, res);
}
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){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
});
}
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [123] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
exports.deletePR = ( req, res ) => {
try{
pradapter.queryDeletePr(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [138] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
exports.approvedPR = ( req, res ) => {
try{
pradapter.queryApprovedPR(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [153] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
exports.getprmanagementlist = ( req, res ) => {
try{
pradapter.queryPrManagementList(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [260] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
exports.getprmanagementlistdetail = ( req, res ) => {
try{
pradapter.queryPrManagementListDetail(req,function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [275] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
exports.releasePRSAP = ( req, res ) => {
try{
let idxpr = req.body.idxpr;
req.query.id = idxpr;
pradapter.queryPrDetail(req, function (err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err){
statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
}else{
var rsdata = JSON.parse(JSON.stringify(data));
let prnumber = rsdata.data[0]['prnumber']; //Ymd
let resuri={
'method': 'POST',
// 'url': baseurl+'signon',
'url': baseurlsap+'/releasePr?number='+prnumber+'&rel_code=A1',
'headers': {
'Content-Type': 'application/json',
'x-api-key' : apikeysap
},
// form: formjson,
};
// console.log(resuri);
request(resuri, function (error, response) {
if (error) {
// console.log(error);
apireshandler.message = error.toString();
pradapter.sendResponse(400, apireshandler, res);
}
else
{
console.log(response.body);
var resdata = JSON.parse(response.body);
var errcode = "";
var errmsg ="";
resdata['RETURN'].forEach(e => {
if(e.TYPE=='E'){
errcode+=e.NUMBER+", ";
errmsg+=e.MESSAGE+" & ";
}
});
errcode = errcode.substring(0, errcode.length-2);
errmsg = errmsg.substring(0, errmsg.length-3);
if(errcode.length>0){
apireshandler.meta.code = errcode;
apireshandler.meta.message = errmsg;
// pradapter.sendResponse(200, apireshandler, res);
}
else{
apireshandler.success = true;
}
pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
//data.data = resdata;
apireshandler.meta.code = statusCode;
apireshandler.data = data.data;
pradapter.sendResponse(statusCode, apireshandler, res);
});
}
});
}
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [348] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
exports.unreleasePRSAP = ( req, res ) => {
try{
let idxpr = req.body.idxpr;
req.query.id = idxpr;
pradapter.queryPrDetail(req, function (err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err){
statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
}else{
var rsdata = JSON.parse(JSON.stringify(data));
let prnumber = rsdata.data[0]['prnumber']; //Ymd
let resuri={
'method': 'POST',
// 'url': baseurl+'signon',
'url': baseurlsap+'/unreleasePr?number='+prnumber+'&rel_code=A1',
'headers': {
'Content-Type': 'application/json',
'x-api-key' : apikeysap
},
// form: formjson,
};
// console.log(resuri);
request(resuri, function (error, response) {
if (error) {
// console.log(error);
apireshandler.message = error.toString();
pradapter.sendResponse(400, apireshandler, res);
}
else
{
console.log(response.body);
var resdata = JSON.parse(response.body);
var errcode = "";
var errmsg ="";
resdata['RETURN'].forEach(e => {
if(e.TYPE=='E'){
errcode+=e.NUMBER+", ";
errmsg+=e.MESSAGE+" & ";
}
});
errcode = errcode.substring(0, errcode.length-2);
errmsg = errmsg.substring(0, errmsg.length-3);
if(errcode.length>0){
apireshandler.meta.code = errcode;
apireshandler.meta.message = errmsg;
// pradapter.sendResponse(200, apireshandler, res);
}
else{
apireshandler.success = true;
}
// else{
// pradapter.queryUpdateStatusPr(req,prnumber, errmsg, function(err,data){
// let statusCode = data!=null ? data.meta.code : 200 ;
// if(err) statusCode = 500;
// pradapter.sendResponse(statusCode,data, res);
// });
// }
pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
//data.data = resdata;
apireshandler.meta.code = statusCode;
apireshandler.data = data.data;
pradapter.sendResponse(statusCode, apireshandler, res);
});
}
});
}
});
}
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){
console.log(data);
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [522] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
exports.changePRSAPold = ( req, res ) => {
try{
let idxpr = req.body.idxpr;
req.query.id = idxpr;
pradapter.queryPrDetail(req, function (err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err){
statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
}else{
var rsdata = JSON.parse(JSON.stringify(data));
// 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_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_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_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 resuri={
'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
},
// form: formjson,
};
// console.log(resuri);
request(resuri, function (error, response) {
if (error) {
console.log(error);
apireshandler.message = error.toString();
pradapter.sendResponse(400, apireshandler, res);
}
else
{
// console.log("Change pR : "+response.body);
var resdata = JSON.parse(response.body);
var errcode = "";
var errmsg ="";
resdata['RETURN'].forEach(e => {
// console.log(e);
if(e.TYPE=='E'){
errcode+=e.NUMBER+", ";
errmsg+=e.MESSAGE+" & ";
}
});
errcode = errcode.substring(0, errcode.length-2);
errmsg = errmsg.substring(0, errmsg.length-3);
if(errcode.length>0){
apireshandler.meta.code = errcode;
apireshandler.meta.message = errmsg;
// pradapter.sendResponse(200, apireshandler, res);
}
else{
apireshandler.success = true;
}
pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
//data.data = resdata;
apireshandler.meta.code = statusCode;
apireshandler.data = data.data;
pradapter.sendResponse(statusCode, apireshandler, res);
});
}
});
//pradapter.sendResponse(statusCode,data, res);
}
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [522] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}
exports.deletePRSAP = ( req, res ) => {
try{
let idxpr = req.body.idxpr;
req.query.id = idxpr;
pradapter.queryPrDetail(req, function (err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err){
statusCode = 500;
pradapter.sendResponse(statusCode,data, res);
}else{
var rsdata = JSON.parse(JSON.stringify(data));
let prnumber = rsdata.data[0]['prnumber']; //Ymd
let resuri={
'method': 'POST',
// 'url': baseurl+'signon',
'url': baseurlsap+'/deletePr?number='+prnumber,
'headers': {
'Content-Type': 'application/json',
'x-api-key' : apikeysap
},
// form: formjson,
};
// console.log(resuri);
request(resuri, function (error, response) {
if (error) {
// console.log(error);
apireshandler.message = error.toString();
pradapter.sendResponse(400, apireshandler, res);
}
else
{
// console.log(response.body);
var resdata = JSON.parse(response.body);
var errcode = "";
var errmsg ="";
resdata['RETURN'].forEach(e => {
if(e.TYPE=='E'){
errcode+=e.NUMBER+", ";
errmsg+=e.MESSAGE+" & ";
}
});
errcode = errcode.substring(0, errcode.length-2);
errmsg = errmsg.substring(0, errmsg.length-3);
if(errcode.length>0){
apireshandler.meta.code = errcode;
apireshandler.meta.message = errmsg;
// pradapter.sendResponse(200, apireshandler, res);
}
else{
apireshandler.success = true;
}
// else{
// pradapter.queryUpdateStatusPr(req,prnumber, errmsg, function(err,data){
// let statusCode = data!=null ? data.meta.code : 200 ;
// if(err) statusCode = 500;
// pradapter.sendResponse(statusCode,data, res);
// });
// }
pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){
let statusCode = data!=null ? data.meta.code : 200 ;
if(err) statusCode = 500;
//data.data = resdata;
apireshandler.meta.code = statusCode;
apireshandler.data = data.data;
pradapter.sendResponse(statusCode, apireshandler, res);
});
}
});
}
});
}
catch(err){
apireshandler.meta.code = 502;
apireshandler.meta.message = " [413] : PR controller, " + err.toString();
pradapter.sendResponse(502, apireshandler, res);
}
}