From 9d4e4a98b2e15795bc8bce9d607c90915b1a989c Mon Sep 17 00:00:00 2001 From: Rizki Date: Fri, 13 Feb 2026 10:37:13 +0700 Subject: [PATCH] create logger --- adapter/sapadapter.js | 43 ++++++++++++++ controllers/pr.js | 128 ++++++++++++++++++++++++++++++------------ 2 files changed, 136 insertions(+), 35 deletions(-) create mode 100644 adapter/sapadapter.js diff --git a/adapter/sapadapter.js b/adapter/sapadapter.js new file mode 100644 index 0000000..1b2d9aa --- /dev/null +++ b/adapter/sapadapter.js @@ -0,0 +1,43 @@ +const db = require("../config/dbproc.js"); +const Adapter = require("./dbadapter.js"); + +class SapAdapter extends Adapter { + constructor() { + super(); + } + + async queryInsertSapLog(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 + (created_at, ref_code, request_type, request, request_at, request_by, response, response_at, url) + VALUES (NOW(), ?, ?, ?, ?, ?, ?, ?, ?) + `; + + db.query( + qry, + [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; diff --git a/controllers/pr.js b/controllers/pr.js index ed4ea4f..c904a0a 100644 --- a/controllers/pr.js +++ b/controllers/pr.js @@ -7,6 +7,9 @@ const baseurlsap = "http://" + process.env.HOSTSAP + "/sapapi/index.php/api"; const apikeysap = "befea63a-7c47-4323-afea-968a3168fe0a"; const request = require("request"); +const SAPAdapter = require("../adapter/sapadapter.js"); +const sapadapter = new SAPAdapter(); + function buildPipeString(length, mapping = {}) { const arr = Array(length).fill(""); Object.keys(mapping).forEach((index) => { @@ -188,38 +191,92 @@ 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"; - 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': 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' : process.env.SAP_API_KEY - }, - // form: formjson, - }; + console.log("PR Data =>", rsdata.data[0]); + // 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": + 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": process.env.SAP_API_KEY, + }, + // form: formjson, + }; - console.log('resuri', resuri); + const logData = { + ref_code: idxpr, + request: JSON.stringify(resuri), + request_at: new Date(), + request_by: "999999", + response: "", + response_at: "", + url: + process.env.SAP_API_BASE_URL + + "/createPr?pr_type=" + + pr_type + + "&x_pr_type=X&praccount[]=" + + pr_account + + "&pritem[]=" + + pr_item, + }; + + console.log("resuri", resuri); request(resuri, function (error, response) { - // console.log('response.body', response.body) + // console.log('response.body', response.body) + logData.response_at = new Date(); + logData.response = error ? JSON.stringify(error) : JSON.stringify(response.body); + sapadapter.queryInsertSapLog(logData, "CREATE_PR"); + if (error) { apireshandler.message = error.toString(); pradapter.sendResponse(400, apireshandler, res); @@ -235,12 +292,13 @@ 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 = "Failed to Create PR SAP"; - pradapter.sendResponse(200, apireshandler, res); - }) + pradapter.queryUpdateSapMessage(req, errmsg, function (err, data) { + apireshandler.meta.code = errcode; + apireshandler.meta.message = "Failed to Create PR SAP"; + pradapter.sendResponse(200, apireshandler, res); + }); } else { pradapter.queryUpdateStatusPr(req, resdata["NUMBER"], errmsg, function (err, data) { let statusCode = data != null ? data.meta.code : 200;