This commit is contained in:
Iki
2026-06-16 14:58:57 +09:00
parent 270a157627
commit eb4b84e8f9

View File

@ -1414,6 +1414,13 @@ class PoAdapter extends Adapter {
} }
} }
parseBoqIds(idxpoboq) {
return String(idxpoboq || "")
.split(",")
.map((id) => id.trim())
.filter((id) => id && id !== "0");
}
async queryUpdatePoNumberold(req, posapnumber, sapmessage, callback) { async queryUpdatePoNumberold(req, posapnumber, sapmessage, callback) {
try { try {
var apires = this.getApiResultDefined(); var apires = this.getApiResultDefined();
@ -1421,8 +1428,10 @@ class PoAdapter extends Adapter {
var idxpoboq = req.body.idxpoboq; var idxpoboq = req.body.idxpoboq;
var nik = req.nik || req.body.nik || ""; var nik = req.nik || req.body.nik || "";
const poNumber = String(posapnumber || "").trim(); const poNumber = String(posapnumber || "").trim();
const finalStatus = 0; // status 1 = Create PO SAP — required for approval-po list (filters status 1-6)
const finalStatusDescription = "Submitted"; const finalStatus = req.body.status ?? 1;
const finalStatusDescription =
req.body.statusdescription || "Create PO SAP";
const safeSapMessage = String(sapmessage || "").replace(/'/g, "''"); const safeSapMessage = String(sapmessage || "").replace(/'/g, "''");
const safePoNumber = poNumber.replace(/'/g, "''"); const safePoNumber = poNumber.replace(/'/g, "''");
@ -1433,11 +1442,10 @@ class PoAdapter extends Adapter {
return; return;
} }
const boqIds = String(idxpoboq || "") const self = this;
.split(",") let boqIds = self.parseBoqIds(idxpoboq);
.map((id) => id.trim())
.filter((id) => id && id !== "0");
const persistPoNumber = (resolvedBoqIds) => {
const qryPo = const qryPo =
"update tbl_po set ponumber='" + "update tbl_po set ponumber='" +
safePoNumber + safePoNumber +
@ -1480,11 +1488,11 @@ class PoAdapter extends Adapter {
"',udt=now() where idxheader='" + "',udt=now() where idxheader='" +
idxpo + idxpo +
"' and isdeleted=0"; "' and isdeleted=0";
if (boqIds.length > 0) { if (resolvedBoqIds.length > 0) {
qryBoq += " and _idx in (" + boqIds.join(",") + ")"; qryBoq += " and _idx in (" + resolvedBoqIds.join(",") + ")";
} }
db.query(qryBoq, [], function (errBoq) { db.query(qryBoq, [], function (errBoq, boqResult) {
if (errBoq) { if (errBoq) {
apires.meta.message = errBoq.toString(); apires.meta.message = errBoq.toString();
apires.meta.code = 500; apires.meta.code = 500;
@ -1492,10 +1500,18 @@ class PoAdapter extends Adapter {
return; return;
} }
if (!boqResult || boqResult.affectedRows === 0) {
apires.meta.code = 500;
apires.meta.message =
"BOQ line not found for update. Save vendor PO line before creating SAP PO number.";
callback("err", apires);
return;
}
let qrySelect = let qrySelect =
boqIds.length > 0 resolvedBoqIds.length > 0
? "select idxpoboq,ponumber from vw_poboq where idxpoboq in(" + ? "select idxpoboq,ponumber from vw_poboq where idxpoboq in(" +
boqIds.join(",") + resolvedBoqIds.join(",") +
")" ")"
: "select _idx as idxpoboq, ponumber from tbl_poboq where idxheader='" + : "select _idx as idxpoboq, ponumber from tbl_poboq where idxheader='" +
idxpo + idxpo +
@ -1512,7 +1528,12 @@ class PoAdapter extends Adapter {
apires.success = true; apires.success = true;
apires.data = JSON.parse(JSON.stringify(result1)); apires.data = JSON.parse(JSON.stringify(result1));
if (apires.data.length === 0) { if (apires.data.length === 0) {
apires.data = [{ idxpoboq: boqIds[0] || idxpo, ponumber: poNumber }]; apires.data = [
{
idxpoboq: resolvedBoqIds[0] || idxpo,
ponumber: poNumber,
},
];
} else { } else {
apires.data.forEach((row) => { apires.data.forEach((row) => {
row.ponumber = poNumber; row.ponumber = poNumber;
@ -1522,6 +1543,32 @@ class PoAdapter extends Adapter {
}); });
}); });
}); });
};
if (boqIds.length > 0) {
persistPoNumber(boqIds);
return;
}
db.query(
"select idxpoboq from tbl_po where _idx='" +
idxpo +
"' and isdeleted=0 limit 1",
[],
function (errLookup, rows) {
if (errLookup) {
apires.meta.message = errLookup.toString();
apires.meta.code = 500;
callback("err", apires);
return;
}
if (rows && rows.length > 0 && rows[0].idxpoboq) {
boqIds = self.parseBoqIds(rows[0].idxpoboq);
}
persistPoNumber(boqIds);
},
);
} catch (err) { } catch (err) {
apires.meta.code = 500; apires.meta.code = 500;
apires.meta.message = err.toString(); apires.meta.message = err.toString();