add field vendor in procjustification

This commit is contained in:
Rizki
2026-03-06 10:20:13 +07:00
parent c6ed4a0400
commit f6670321fc
2 changed files with 1128 additions and 834 deletions

File diff suppressed because it is too large Load Diff

View File

@ -119,89 +119,74 @@ exports.createPOSAPold = (req, res) => {
// console.log(resdata.data.length); // console.log(resdata.data.length);
// poadapter.sendResponse(statusCode,resdata, res); // poadapter.sendResponse(statusCode,resdata, res);
if (resdata.data.length > 0) { if (resdata.data.length > 0) {
const idxpr = resdata.data[0]["idxpr"] ?? 0; const data = resdata?.data?.[0] ?? {};
let comp_code = "1603"; const {
let doc_type = "POTL"; idxpr = 0,
let creat_date = req.body.createdate; vendorid = "",
let created_by = req.body.createdby; podate = "",
let vendor = resdata.data[0]["vendorid"]; //"TL30000001"; vper_start = "",
let purch_org = "1603"; vper_end = "",
let pur_group = "TIL"; podescription = "",
let currency = "USD"; totalqty = 0,
let doc_date = resdata.data[0]["podate"]; prnumber = "",
let vper_start = resdata.data[0]["vper_start"]; identifyprojectnumber = "",
let vper_end = resdata.data[0]["vper_end"]; } = data;
// === PO ITEM
let po_number = "000"; // ===== HEADER PARAM =====
let description = resdata.data[0]["podescription"]; //req.body.podescription; const headerParams = {
// let quantity="1"; comp_code: "1603",
let quantity = resdata.data[0]["totalqty"].toString().replace(",", "."); // TotalPo / TotalValue PR doc_type: "POTL",
let po_unit = "PKT"; creat_date: req.body.createdate,
let net_price = req.body.totalpo; created_by: req.body.createdby,
let final_inv = "X"; vendor: vendorid,
let gr_basediv = "X"; purch_org: "1603",
let preq_no = resdata.data[0]["prnumber"]; pur_group: "TIL",
let preq_item = "00010"; currency: "USD",
let poitem = doc_date: podate,
preq_item + vper_start,
"|" + vper_end,
description + zzctrnum: identifyprojectnumber?.toString().trim(),
"|" + };
quantity +
"|" + // ===== ITEM PARAM =====
po_unit + const preq_item = "00010";
"|" + const quantity = Number(totalqty).toString().replace(",", ".");
net_price + const po_unit = "PKT";
"|" + const net_price = req.body.totalpo;
final_inv + const final_inv = "X";
"|" + const gr_basediv = "X";
gr_basediv +
"|" + const poitem = [
preq_no + preq_item,
"|" + podescription,
preq_item; quantity,
let poschedule = "00010|" + resdata.data[0]["vper_end"]; po_unit,
let zzctrnum = resdata.data[0]["identifyprojectnumber"].toString().trim(); //req.body.podescription; net_price,
const url = final_inv,
baseurlsap + gr_basediv,
"/createPo?comp_code=" + prnumber,
comp_code + preq_item,
"&doc_type=" + ].join("|");
doc_type +
"&creat_date=" + const poschedule = [preq_item, vper_end].join("|");
creat_date +
"&created_by=" + // ===== BUILD QUERY =====
created_by + const params = new URLSearchParams({
"&vendor=" + ...headerParams,
vendor + "poitem[]": poitem,
"&purch_org=" + "poschedule[]": poschedule,
purch_org + }).toString();
"&pur_group=" +
pur_group + const url = `${baseurlsap}/createPo?${params}`;
"&currency=" +
currency + const resuri = {
"&doc_date=" + method: "POST",
doc_date + url,
"&vper_start=" + headers: {
vper_start +
"&vper_end=" +
vper_end +
"&poitem[]=" +
poitem +
"&poschedule[]=" +
poschedule +
"&zzctrnum=" +
zzctrnum;
let resuri = {
"method": "POST",
// 'url': baseurlsap+'/createPo',
"url": url,
"headers": {
"Content-Type": "application/json", "Content-Type": "application/json",
"x-api-key": apikeysap, "x-api-key": apikeysap,
}, },
// form: formjson,
}; };
const logData = { const logData = {
@ -790,64 +775,41 @@ exports.createHeaderPOSAP = (req, res) => {
// console.log(resdata.data.length); // console.log(resdata.data.length);
// poadapter.sendResponse(statusCode,resdata, res); // poadapter.sendResponse(statusCode,resdata, res);
if (resdata.data.length > 0) { if (resdata.data.length > 0) {
const idxpr = resdata.data[0]["idxpr"] ?? 0; const data = resdata?.data?.[0] ?? {};
const {
idxpr = 0,
identifyprojectnumber = "",
contractdescription = "",
contractperiodfrom = "",
contractperiodto = "",
vendorname = "",
} = data;
let identifyprojectnumber = resdata.data[0]["identifyprojectnumber"]; // Static / default values
let contractdescription = resdata.data[0]["contractdescription"]; const params = {
let contractperiodfrom = resdata.data[0]["contractperiodfrom"]; im_ctrnum: identifyprojectnumber,
let contractperiodto = resdata.data[0]["contractperiodto"]; im_bukrs: "1603",
let im_ctrnum = identifyprojectnumber; im_werks: "1603",
let im_bukrs = "1603"; im_ctrdsc: contractdescription,
let im_werks = "1603"; im_ctrtor: vendorname,
let im_ctrdsc = contractdescription; im_contract: identifyprojectnumber,
let im_ctrtor = resdata.data[0]["vendorname"]; im_contract2: identifyprojectnumber,
let im_contract = identifyprojectnumber; im_contdesc: contractdescription,
let im_contract2 = identifyprojectnumber; im_spmon0: contractperiodfrom,
let im_contdesc = contractdescription; im_spmon1: contractperiodto,
let im_spmon0 = contractperiodfrom; im_ctrmax: 2,
let im_spmon1 = contractperiodto; im_waers2: "USD",
let im_ctrmax = 2; im_ctrval: "0",
let im_waers2 = "USD"; im_ctrval2: "0",
let im_ctrval = "0"; im_action: "I",
let im_ctrval2 = "0"; };
let im_action = "I";
const url = // Build URL safely
baseurlsap + const url = `${baseurlsap}/zcpxmm003?${new URLSearchParams(params).toString()}`;
"/zcpxmm003?im_ctrnum=" + const resuri = {
im_ctrnum + method: "POST",
"&im_bukrs=" + url,
im_bukrs + headers: {
"&im_werks=" +
im_werks +
"&im_ctrdsc=" +
im_ctrdsc +
"&im_ctrtor=" +
im_ctrtor +
"&im_contract=" +
im_contract +
"&im_contract2=" +
im_contract2 +
"&im_contdesc=" +
im_contdesc +
"&im_spmon0=" +
im_spmon0 +
"&im_spmon1=" +
im_spmon1 +
"&im_ctrmax=" +
im_ctrmax +
"&im_waers2=" +
im_waers2 +
"&im_ctrval=" +
im_ctrval +
"&im_ctrval2=" +
im_ctrval2 +
"&im_action=" +
im_action;
let resuri = {
"method": "POST",
"url": url,
"headers": {
"Content-Type": "application/json", "Content-Type": "application/json",
"x-api-key": apikeysap, "x-api-key": apikeysap,
}, },