upd
This commit is contained in:
@ -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) {
|
||||
try {
|
||||
var apires = this.getApiResultDefined();
|
||||
@ -1421,8 +1428,10 @@ class PoAdapter extends Adapter {
|
||||
var idxpoboq = req.body.idxpoboq;
|
||||
var nik = req.nik || req.body.nik || "";
|
||||
const poNumber = String(posapnumber || "").trim();
|
||||
const finalStatus = 0;
|
||||
const finalStatusDescription = "Submitted";
|
||||
// status 1 = Create PO SAP — required for approval-po list (filters status 1-6)
|
||||
const finalStatus = req.body.status ?? 1;
|
||||
const finalStatusDescription =
|
||||
req.body.statusdescription || "Create PO SAP";
|
||||
const safeSapMessage = String(sapmessage || "").replace(/'/g, "''");
|
||||
const safePoNumber = poNumber.replace(/'/g, "''");
|
||||
|
||||
@ -1433,95 +1442,133 @@ class PoAdapter extends Adapter {
|
||||
return;
|
||||
}
|
||||
|
||||
const boqIds = String(idxpoboq || "")
|
||||
.split(",")
|
||||
.map((id) => id.trim())
|
||||
.filter((id) => id && id !== "0");
|
||||
const self = this;
|
||||
let boqIds = self.parseBoqIds(idxpoboq);
|
||||
|
||||
const qryPo =
|
||||
"update tbl_po set ponumber='" +
|
||||
safePoNumber +
|
||||
"',status='" +
|
||||
finalStatus +
|
||||
"',statusdescription='" +
|
||||
finalStatusDescription +
|
||||
"',sapmessages='" +
|
||||
safeSapMessage +
|
||||
"',uby='" +
|
||||
nik +
|
||||
"',udt=now() where _idx='" +
|
||||
idxpo +
|
||||
"' and isdeleted=0";
|
||||
|
||||
db.query(qryPo, [], function (err, result) {
|
||||
if (err) {
|
||||
apires.meta.message = err.toString();
|
||||
apires.meta.code = 500;
|
||||
callback("err", apires);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!result || result.affectedRows === 0) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = "PO header not found for update";
|
||||
callback("err", apires);
|
||||
return;
|
||||
}
|
||||
|
||||
let qryBoq =
|
||||
"update tbl_poboq set ponumber='" +
|
||||
const persistPoNumber = (resolvedBoqIds) => {
|
||||
const qryPo =
|
||||
"update tbl_po set ponumber='" +
|
||||
safePoNumber +
|
||||
"',status='" +
|
||||
finalStatus +
|
||||
"',statusdescription='" +
|
||||
finalStatusDescription +
|
||||
"',sapmessages='" +
|
||||
safeSapMessage +
|
||||
"',uby='" +
|
||||
nik +
|
||||
"',udt=now() where idxheader='" +
|
||||
"',udt=now() where _idx='" +
|
||||
idxpo +
|
||||
"' and isdeleted=0";
|
||||
if (boqIds.length > 0) {
|
||||
qryBoq += " and _idx in (" + boqIds.join(",") + ")";
|
||||
}
|
||||
|
||||
db.query(qryBoq, [], function (errBoq) {
|
||||
if (errBoq) {
|
||||
apires.meta.message = errBoq.toString();
|
||||
db.query(qryPo, [], function (err, result) {
|
||||
if (err) {
|
||||
apires.meta.message = err.toString();
|
||||
apires.meta.code = 500;
|
||||
callback("err", apires);
|
||||
return;
|
||||
}
|
||||
|
||||
let qrySelect =
|
||||
boqIds.length > 0
|
||||
? "select idxpoboq,ponumber from vw_poboq where idxpoboq in(" +
|
||||
boqIds.join(",") +
|
||||
")"
|
||||
: "select _idx as idxpoboq, ponumber from tbl_poboq where idxheader='" +
|
||||
idxpo +
|
||||
"' and isdeleted=0";
|
||||
if (!result || result.affectedRows === 0) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = "PO header not found for update";
|
||||
callback("err", apires);
|
||||
return;
|
||||
}
|
||||
|
||||
db.query(qrySelect, [], function (errSelect, result1) {
|
||||
if (errSelect) {
|
||||
apires.meta.message = errSelect.toString();
|
||||
let qryBoq =
|
||||
"update tbl_poboq set ponumber='" +
|
||||
safePoNumber +
|
||||
"',status='" +
|
||||
finalStatus +
|
||||
"',statusdescription='" +
|
||||
finalStatusDescription +
|
||||
"',uby='" +
|
||||
nik +
|
||||
"',udt=now() where idxheader='" +
|
||||
idxpo +
|
||||
"' and isdeleted=0";
|
||||
if (resolvedBoqIds.length > 0) {
|
||||
qryBoq += " and _idx in (" + resolvedBoqIds.join(",") + ")";
|
||||
}
|
||||
|
||||
db.query(qryBoq, [], function (errBoq, boqResult) {
|
||||
if (errBoq) {
|
||||
apires.meta.message = errBoq.toString();
|
||||
apires.meta.code = 500;
|
||||
callback("err", apires);
|
||||
return;
|
||||
}
|
||||
|
||||
apires.success = true;
|
||||
apires.data = JSON.parse(JSON.stringify(result1));
|
||||
if (apires.data.length === 0) {
|
||||
apires.data = [{ idxpoboq: boqIds[0] || idxpo, ponumber: poNumber }];
|
||||
} else {
|
||||
apires.data.forEach((row) => {
|
||||
row.ponumber = poNumber;
|
||||
});
|
||||
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;
|
||||
}
|
||||
callback(null, apires);
|
||||
|
||||
let qrySelect =
|
||||
resolvedBoqIds.length > 0
|
||||
? "select idxpoboq,ponumber from vw_poboq where idxpoboq in(" +
|
||||
resolvedBoqIds.join(",") +
|
||||
")"
|
||||
: "select _idx as idxpoboq, ponumber from tbl_poboq where idxheader='" +
|
||||
idxpo +
|
||||
"' and isdeleted=0";
|
||||
|
||||
db.query(qrySelect, [], function (errSelect, result1) {
|
||||
if (errSelect) {
|
||||
apires.meta.message = errSelect.toString();
|
||||
apires.meta.code = 500;
|
||||
callback("err", apires);
|
||||
return;
|
||||
}
|
||||
|
||||
apires.success = true;
|
||||
apires.data = JSON.parse(JSON.stringify(result1));
|
||||
if (apires.data.length === 0) {
|
||||
apires.data = [
|
||||
{
|
||||
idxpoboq: resolvedBoqIds[0] || idxpo,
|
||||
ponumber: poNumber,
|
||||
},
|
||||
];
|
||||
} else {
|
||||
apires.data.forEach((row) => {
|
||||
row.ponumber = poNumber;
|
||||
});
|
||||
}
|
||||
callback(null, apires);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
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) {
|
||||
apires.meta.code = 500;
|
||||
apires.meta.message = err.toString();
|
||||
|
||||
Reference in New Issue
Block a user