fixing PO

This commit is contained in:
Iki
2026-06-11 16:10:50 +09:00
parent 5b5644b132
commit 0d5bf4623c
2 changed files with 59 additions and 10 deletions

View File

@ -12,6 +12,21 @@ var fs = require("fs");
const SAPAdapter = require("../adapter/sapadapter.js"); const SAPAdapter = require("../adapter/sapadapter.js");
const sapadapter = new SAPAdapter(); const sapadapter = new SAPAdapter();
function formatSapDate(value) {
if (!value) return "";
const str = String(value).trim();
if (/^\d{8}$/.test(str)) return str;
if (/^\d{4}-\d{2}-\d{2}/.test(str)) return str.slice(0, 10).replace(/-/g, "");
const d = new Date(str);
if (!isNaN(d.getTime())) {
const y = d.getFullYear();
const m = String(d.getMonth() + 1).padStart(2, "0");
const day = String(d.getDate()).padStart(2, "0");
return `${y}${m}${day}`;
}
return str;
}
exports.getListVendor = (req, res) => { exports.getListVendor = (req, res) => {
try { try {
poadapter.queryVendorList(req, function (err, data) { poadapter.queryVendorList(req, function (err, data) {
@ -133,12 +148,15 @@ exports.createPOSAPold = (req, res) => {
identifyprojectnumber = "", identifyprojectnumber = "",
} = data; } = data;
const createdBy = req.nik || req.body.createdby;
const creatDate = formatSapDate(req.body.createdate) || podate;
// ===== HEADER PARAM ===== // ===== HEADER PARAM =====
const headerParams = { const headerParams = {
comp_code: "1603", comp_code: "1603",
doc_type: "POTL", doc_type: "POTL",
creat_date: req.body.createdate, creat_date: creatDate,
created_by: req.body.createdby, created_by: createdBy,
vendor: vendorid, vendor: vendorid,
purch_org: "1603", purch_org: "1603",
pur_group: "TIL", pur_group: "TIL",
@ -156,6 +174,7 @@ exports.createPOSAPold = (req, res) => {
const net_price = req.body.totalpo; const net_price = req.body.totalpo;
const final_inv = "X"; const final_inv = "X";
const gr_basediv = "X"; const gr_basediv = "X";
const sloc = "TIL1";
const poitem = [ const poitem = [
preq_item, preq_item,
@ -167,9 +186,10 @@ exports.createPOSAPold = (req, res) => {
gr_basediv, gr_basediv,
prnumber, prnumber,
preq_item, preq_item,
sloc,
].join("|"); ].join("|");
const poschedule = [preq_item, vper_end].join("|"); const poschedule = [preq_item, podate].join("|");
// ===== BUILD QUERY ===== // ===== BUILD QUERY =====
const params = new URLSearchParams({ const params = new URLSearchParams({
@ -193,7 +213,7 @@ exports.createPOSAPold = (req, res) => {
ref_code: prnumber, ref_code: prnumber,
request: JSON.stringify(resuri), request: JSON.stringify(resuri),
request_at: new Date(), request_at: new Date(),
request_by: req.body.createdby, request_by: createdBy,
response: "", response: "",
response_at: "", response_at: "",
url, url,

View File

@ -9,6 +9,25 @@ const request = require("request");
const SAPAdapter = require("../adapter/sapadapter.js"); const SAPAdapter = require("../adapter/sapadapter.js");
const sapadapter = new SAPAdapter(); const sapadapter = new SAPAdapter();
const db = require("../config/dbproc.js");
function getEmployeeFullname(nik, callback) {
if (!nik) {
callback(null, "");
return;
}
const qry =
"select fullname from dbssotcel.tbl_employee where nik='" +
nik +
"' and isdeleted=0 limit 1";
db.query(qry, [], function (err, results) {
if (err || !results || results.length === 0) {
callback(null, nik);
} else {
callback(null, results[0].fullname);
}
});
}
function buildPipeString(length, mapping = {}) { function buildPipeString(length, mapping = {}) {
const arr = Array(length).fill(""); const arr = Array(length).fill("");
@ -30,11 +49,11 @@ function buildPrAccount({prNo, qtyAcc, prDate, budget, costCenter, profitCenter}
}); });
} }
function buildPrItem({prNo, shortText, qty, unit, price, prDate}) { function buildPrItem({prNo, shortText, qty, unit, price, prDate, requesterName}) {
return buildPipeString(80, { return buildPipeString(80, {
0: prNo, 0: prNo,
3: "TIL", 3: "TIL",
4: "Putra", 4: requesterName || "",
5: shortText, 5: shortText,
13: "1603", 13: "1603",
14: "TIL1", 14: "TIL1",
@ -207,6 +226,8 @@ exports.setUpdateStatusProld = (req, res) => {
pradapter.sendResponse(statusCode, data, res); pradapter.sendResponse(statusCode, data, res);
} else { } else {
var rsdata = JSON.parse(JSON.stringify(data)); var rsdata = JSON.parse(JSON.stringify(data));
const creatorNik = req.nik || rsdata.data[0]["iby"];
getEmployeeFullname(creatorNik, function (err, requesterName) {
// console.log(rsdata["data"]); // console.log(rsdata["data"]);
let pr_type = "PRTL"; let pr_type = "PRTL";
let x_pr_type = "X"; let x_pr_type = "X";
@ -237,7 +258,9 @@ exports.setUpdateStatusProld = (req, res) => {
// let pr_item="00010|||120|Putra|testcreatePR|||||||||1603||TrackNo1|ZSRV||1|BH||20130727||20130727|||1000|1||J||||||||1603|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|"; // let pr_item="00010|||120|Putra|testcreatePR|||||||||1603||TrackNo1|ZSRV||1|BH||20130727||20130727|||1000|1||J||||||||1603|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|";
let pr_item = let pr_item =
pr_no + pr_no +
"|||TIL|Putra|" + "|||TIL|" +
requesterName +
"|" +
pr_shorttext + pr_shorttext +
"|||||||||1603|TIL1|TrackNo1|ZSRV||" + "|||||||||1603|TIL1|TrackNo1|ZSRV||" +
pr_qtyitem + pr_qtyitem +
@ -272,7 +295,7 @@ exports.setUpdateStatusProld = (req, res) => {
ref_code: rsdata.data[0]["justificationnumber"] ?? idxpr, ref_code: rsdata.data[0]["justificationnumber"] ?? idxpr,
request: JSON.stringify(resuri), request: JSON.stringify(resuri),
request_at: new Date(), request_at: new Date(),
request_by: "999999", request_by: creatorNik,
response: "", response: "",
response_at: "", response_at: "",
url: url:
@ -325,6 +348,7 @@ exports.setUpdateStatusProld = (req, res) => {
}); });
//pradapter.sendResponse(statusCode,data, res); //pradapter.sendResponse(statusCode,data, res);
});
} }
}); });
} else { } else {
@ -595,6 +619,8 @@ exports.changePRSAPold = (req, res) => {
pradapter.sendResponse(statusCode, data, res); pradapter.sendResponse(statusCode, data, res);
} else { } else {
var rsdata = JSON.parse(JSON.stringify(data)); var rsdata = JSON.parse(JSON.stringify(data));
const creatorNik = req.nik || rsdata.data[0]["iby"];
getEmployeeFullname(creatorNik, function (err, requesterName) {
// console.log(rsdata["data"]); // console.log(rsdata["data"]);
let pr_no = "00010"; let pr_no = "00010";
let pr_qtyacc = "01"; let pr_qtyacc = "01";
@ -624,7 +650,9 @@ exports.changePRSAPold = (req, res) => {
// let pr_item="00010|||120|Putra|testcreatePR|||||||||1603||TrackNo1|ZSRV||1|BH||20130727||20130727|||1000|1||J||||||||1603|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|"; // let pr_item="00010|||120|Putra|testcreatePR|||||||||1603||TrackNo1|ZSRV||1|BH||20130727||20130727|||1000|1||J||||||||1603|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|";
let pr_item = let pr_item =
pr_no + pr_no +
"|||120|Putra|" + "|||120|" +
requesterName +
"|" +
pr_shorttext + pr_shorttext +
"|||||||||1603||TrackNo1|ZSRV||" + "|||||||||1603||TrackNo1|ZSRV||" +
pr_qtyitem + pr_qtyitem +
@ -659,7 +687,7 @@ exports.changePRSAPold = (req, res) => {
ref_code: pr_number, ref_code: pr_number,
request: JSON.stringify(resuri), request: JSON.stringify(resuri),
request_at: new Date(), request_at: new Date(),
request_by: "999999", request_by: creatorNik,
response: "", response: "",
response_at: "", response_at: "",
url: url:
@ -715,6 +743,7 @@ exports.changePRSAPold = (req, res) => {
}); });
//pradapter.sendResponse(statusCode,data, res); //pradapter.sendResponse(statusCode,data, res);
});
} }
}); });
} catch (err) { } catch (err) {