upd
This commit is contained in:
@ -13,16 +13,29 @@ class BastAdapter extends Adapter {
|
|||||||
try {
|
try {
|
||||||
let limit = req.query.limit;
|
let limit = req.query.limit;
|
||||||
let offset = req.query.offset;
|
let offset = req.query.offset;
|
||||||
let keyword = req.query.keyword;
|
let keyword = req.query.keyword ?? "";
|
||||||
|
let division = req.query.division ?? "";
|
||||||
|
let sort = req.query.sort ?? "latest";
|
||||||
|
let sorder = sort === "past" ? "v.idxbudget asc" : "v.idxbudget desc";
|
||||||
|
|
||||||
let qry = "select v.*, COALESCE(c.currency, 'USD') AS currency_code, COALESCE(c.symbol, '$') AS currency_symbol, pr.rate_snapshot AS pr_rate_snapshot " +
|
let qryBase =
|
||||||
"from vw_bastactivitylist v " +
|
"select v.*, COALESCE(c.currency, 'USD') AS currency_code, COALESCE(c.symbol, '$') AS currency_symbol, pr.rate_snapshot AS pr_rate_snapshot ";
|
||||||
"left join tbl_pr pr on pr._idx = v.idxpr " +
|
qryBase += "from vw_bastactivitylist v ";
|
||||||
"left join tbl_currency c on c._idx = pr.currency_id ";
|
qryBase += "left join tbl_pr pr on pr._idx = v.idxpr ";
|
||||||
qry = qry + "where v.activityname like '%" + keyword + "%' ";
|
qryBase += "left join tbl_currency c on c._idx = pr.currency_id ";
|
||||||
qry = qry + "order by v.idxbudget asc limit " + offset + ", " + limit;
|
qryBase += "left join tbl_justification j on j._idx = pr.idxjustification ";
|
||||||
|
let keywordFilter =
|
||||||
|
"(trim(v.activityname) like '%" +
|
||||||
|
keyword +
|
||||||
|
"%' or trim(v.prnumber) like '%" +
|
||||||
|
keyword +
|
||||||
|
"%') ";
|
||||||
|
let divisionFilter = "";
|
||||||
|
if (division && division.trim() !== "") {
|
||||||
|
divisionFilter = "and j.division = '" + division + "' ";
|
||||||
|
}
|
||||||
|
let qry = qryBase + "where " + keywordFilter + divisionFilter;
|
||||||
|
|
||||||
// console.log(qry);
|
|
||||||
db.query(qry, [], function (err, result, fields) {
|
db.query(qry, [], function (err, result, fields) {
|
||||||
if (err) {
|
if (err) {
|
||||||
apires.meta["message"] = err.toString();
|
apires.meta["message"] = err.toString();
|
||||||
@ -34,21 +47,13 @@ class BastAdapter extends Adapter {
|
|||||||
if (!Number.isInteger(pagination)) {
|
if (!Number.isInteger(pagination)) {
|
||||||
pagination = Math.floor(result.length / limit) + 1;
|
pagination = Math.floor(result.length / limit) + 1;
|
||||||
}
|
}
|
||||||
// let pagination = Adapter.getPagination(result.length, limit);
|
|
||||||
apires.success = true;
|
apires.success = true;
|
||||||
apires.data.push({
|
apires.data.push({
|
||||||
"totalpage": pagination,
|
"totalpage": pagination,
|
||||||
"totalrows": result.length,
|
"totalrows": result.length,
|
||||||
});
|
});
|
||||||
qry = "select v.*, COALESCE(c.currency, 'USD') AS currency_code, COALESCE(c.symbol, '$') AS currency_symbol, pr.rate_snapshot AS pr_rate_snapshot " +
|
qry = qryBase + "where " + keywordFilter + divisionFilter;
|
||||||
"from vw_bastactivitylist v " +
|
qry = qry + "order by " + sorder + " limit " + offset + ", " + limit;
|
||||||
"left join tbl_pr pr on pr._idx = v.idxpr " +
|
|
||||||
"left join tbl_currency c on c._idx = pr.currency_id ";
|
|
||||||
qry = qry + "where v.activityname like '%" + keyword + "%' ";
|
|
||||||
qry = qry + "order by v.idxbudget asc limit " + offset + ", " + limit;
|
|
||||||
// qry = "select * from vw_basthandoverlist ";
|
|
||||||
// qry = qry + "where bastnumber like '%" + keyword + "%' ";
|
|
||||||
// qry = qry + "order by _idx asc limit " + offset + ", " + limit;
|
|
||||||
db.query(qry, [], function (err, result, fields) {
|
db.query(qry, [], function (err, result, fields) {
|
||||||
if (err) {
|
if (err) {
|
||||||
apires.meta["message"] = err.toString();
|
apires.meta["message"] = err.toString();
|
||||||
@ -80,19 +85,33 @@ class BastAdapter extends Adapter {
|
|||||||
try {
|
try {
|
||||||
let limit = req.query.limit;
|
let limit = req.query.limit;
|
||||||
let offset = req.query.offset;
|
let offset = req.query.offset;
|
||||||
let keyword = req.query.keyword;
|
let keyword = req.query.keyword ?? "";
|
||||||
|
let division = req.query.division ?? "";
|
||||||
|
let sort = req.query.sort ?? "latest";
|
||||||
|
let sorder = sort === "past" ? "v._idx asc" : "v._idx desc";
|
||||||
|
|
||||||
// let qry = "select * from vw_bastactivitylist ";
|
let qryBase =
|
||||||
// qry = qry + "where activityname like '%" + keyword + "%' ";
|
"select v.*, COALESCE(c.currency, 'USD') AS currency_code, COALESCE(c.symbol, '$') AS currency_symbol, po.rate_snapshot ";
|
||||||
// qry = qry + "order by idxbudget asc limit " + offset + ", " + limit;
|
qryBase += "from vw_basthandoverlist v ";
|
||||||
let qry = "select v.*, COALESCE(c.currency, 'USD') AS currency_code, COALESCE(c.symbol, '$') AS currency_symbol, po.rate_snapshot " +
|
qryBase += "left join tbl_po po on po._idx = v.idxpo ";
|
||||||
"from vw_basthandoverlist v " +
|
qryBase += "left join tbl_currency c on c._idx = po.currency_id ";
|
||||||
"left join tbl_po po on po._idx = v.idxpo " +
|
qryBase += "left join tbl_justification j on j._idx = po.idxjustification ";
|
||||||
"left join tbl_currency c on c._idx = po.currency_id ";
|
let keywordFilter =
|
||||||
qry = qry + "where v.bastnumber like '%" + keyword + "%' ";
|
"(trim(v.bastnumber) like '%" +
|
||||||
qry = qry + "order by v._idx asc";
|
keyword +
|
||||||
|
"%' or trim(v.ponumber) like '%" +
|
||||||
|
keyword +
|
||||||
|
"%' or trim(v.vendorname) like '%" +
|
||||||
|
keyword +
|
||||||
|
"%' or trim(v.description) like '%" +
|
||||||
|
keyword +
|
||||||
|
"%') ";
|
||||||
|
let divisionFilter = "";
|
||||||
|
if (division && division.trim() !== "") {
|
||||||
|
divisionFilter = "and j.division = '" + division + "' ";
|
||||||
|
}
|
||||||
|
let qry = qryBase + "where " + keywordFilter + divisionFilter;
|
||||||
|
|
||||||
// console.log(qry);
|
|
||||||
db.query(qry, [], function (err, result, fields) {
|
db.query(qry, [], function (err, result, fields) {
|
||||||
if (err) {
|
if (err) {
|
||||||
apires.meta["message"] = err.toString();
|
apires.meta["message"] = err.toString();
|
||||||
@ -104,19 +123,14 @@ class BastAdapter extends Adapter {
|
|||||||
if (!Number.isInteger(pagination)) {
|
if (!Number.isInteger(pagination)) {
|
||||||
pagination = Math.floor(result.length / limit) + 1;
|
pagination = Math.floor(result.length / limit) + 1;
|
||||||
}
|
}
|
||||||
// let pagination = Adapter.getPagination(result.length, limit);
|
|
||||||
apires.success = true;
|
apires.success = true;
|
||||||
apires.data.push({
|
apires.data.push({
|
||||||
"totalpage": pagination,
|
"totalpage": pagination,
|
||||||
"totalrows": result.length,
|
"totalrows": result.length,
|
||||||
});
|
});
|
||||||
|
|
||||||
qry = "select v.*, COALESCE(c.currency, 'USD') AS currency_code, COALESCE(c.symbol, '$') AS currency_symbol, po.rate_snapshot " +
|
qry = qryBase + "where " + keywordFilter + divisionFilter;
|
||||||
"from vw_basthandoverlist v " +
|
qry = qry + "order by " + sorder + " limit " + offset + ", " + limit;
|
||||||
"left join tbl_po po on po._idx = v.idxpo " +
|
|
||||||
"left join tbl_currency c on c._idx = po.currency_id ";
|
|
||||||
qry = qry + "where v.bastnumber like '%" + keyword + "%' ";
|
|
||||||
qry = qry + "order by v._idx asc limit " + offset + ", " + limit;
|
|
||||||
db.query(qry, [], function (err, result, fields) {
|
db.query(qry, [], function (err, result, fields) {
|
||||||
if (err) {
|
if (err) {
|
||||||
apires.meta["message"] = err.toString();
|
apires.meta["message"] = err.toString();
|
||||||
|
|||||||
@ -13,16 +13,24 @@ class FinanceAdapter extends Adapter{
|
|||||||
try {
|
try {
|
||||||
let limit = req.query.limit;
|
let limit = req.query.limit;
|
||||||
let offset = req.query.offset;
|
let offset = req.query.offset;
|
||||||
let keyword = req.query.keyword;
|
let keyword = req.query.keyword ?? "";
|
||||||
|
let division = req.query.division ?? "";
|
||||||
|
let sort = req.query.sort ?? "latest";
|
||||||
|
let sorder = sort === "past" ? "v.idxpo asc" : "v.idxpo desc";
|
||||||
|
|
||||||
let qry = "select v.*, COALESCE(c.currency, 'USD') AS currency_code, COALESCE(c.symbol, '$') AS currency_symbol, po.rate_snapshot AS po_rate_snapshot ";
|
let qryBase = "select v.*, COALESCE(c.currency, 'USD') AS currency_code, COALESCE(c.symbol, '$') AS currency_symbol, po.rate_snapshot AS po_rate_snapshot ";
|
||||||
qry += "from vw_popaylist v ";
|
qryBase += "from vw_popaylist v ";
|
||||||
qry += "left join tbl_po po on po._idx = v.idxpo ";
|
qryBase += "left join tbl_po po on po._idx = v.idxpo ";
|
||||||
qry += "left join tbl_currency c on c._idx = po.currency_id ";
|
qryBase += "left join tbl_currency c on c._idx = po.currency_id ";
|
||||||
qry += "where v.podescription like '%" + keyword + "%' ";
|
qryBase += "left join tbl_justification j on j._idx = po.idxjustification ";
|
||||||
// qry += "order by v.idxpo asc limit " + offset + ", " + limit;
|
let keywordFilter =
|
||||||
|
"(trim(v.podescription) like '%" + keyword + "%' or trim(v.ponumber) like '%" + keyword + "%' or trim(v.prnumber) like '%" + keyword + "%' or trim(v.vendorname) like '%" + keyword + "%' or trim(v.sp3number) like '%" + keyword + "%') ";
|
||||||
|
let divisionFilter = "";
|
||||||
|
if (division && division.trim() !== "") {
|
||||||
|
divisionFilter = "and j.division = '" + division + "' ";
|
||||||
|
}
|
||||||
|
let qry = qryBase + "where " + keywordFilter + divisionFilter;
|
||||||
|
|
||||||
// console.log(qry);
|
|
||||||
db.query(qry,[],function(err,result,fields){
|
db.query(qry,[],function(err,result,fields){
|
||||||
if(err){
|
if(err){
|
||||||
apires.meta['message'] = err.toString();
|
apires.meta['message'] = err.toString();
|
||||||
@ -36,18 +44,13 @@ class FinanceAdapter extends Adapter{
|
|||||||
if(!Number.isInteger(pagination)){
|
if(!Number.isInteger(pagination)){
|
||||||
pagination=(Math.floor(result.length / limit))+1;
|
pagination=(Math.floor(result.length / limit))+1;
|
||||||
}
|
}
|
||||||
// let pagination = Adapter.getPagination(result.length, limit);
|
|
||||||
apires.success = true;
|
apires.success = true;
|
||||||
apires.data.push({
|
apires.data.push({
|
||||||
"totalpage": pagination,
|
"totalpage": pagination,
|
||||||
"totalrows": result.length
|
"totalrows": result.length
|
||||||
});
|
});
|
||||||
qry = "select v.*, COALESCE(c.currency, 'USD') AS currency_code, COALESCE(c.symbol, '$') AS currency_symbol, po.rate_snapshot AS po_rate_snapshot ";
|
qry = qryBase + "where " + keywordFilter + divisionFilter;
|
||||||
qry += "from vw_popaylist v ";
|
qry += "order by " + sorder + " limit " + offset + ", " + limit;
|
||||||
qry += "left join tbl_po po on po._idx = v.idxpo ";
|
|
||||||
qry += "left join tbl_currency c on c._idx = po.currency_id ";
|
|
||||||
qry += "where v.podescription like '%" + keyword + "%' ";
|
|
||||||
qry += "order by v.idxpo asc limit " + offset + ", " + limit;
|
|
||||||
db.query(qry,[],function(err,result,fields){
|
db.query(qry,[],function(err,result,fields){
|
||||||
if(err){
|
if(err){
|
||||||
apires.meta['message'] = err.toString();
|
apires.meta['message'] = err.toString();
|
||||||
@ -329,20 +332,24 @@ class FinanceAdapter extends Adapter{
|
|||||||
try {
|
try {
|
||||||
let limit = req.query.limit;
|
let limit = req.query.limit;
|
||||||
let offset = req.query.offset;
|
let offset = req.query.offset;
|
||||||
let keyword = req.query.keyword;
|
let keyword = req.query.keyword ?? "";
|
||||||
|
let division = req.query.division ?? "";
|
||||||
|
let sort = req.query.sort ?? "latest";
|
||||||
|
let sorder = sort === "past" ? "v.idxpo asc" : "v.idxpo desc";
|
||||||
|
|
||||||
// let qry = "select * from vw_financelist ";
|
let qryBase = "select v.*, COALESCE(c.currency, 'USD') AS currency_code, COALESCE(c.symbol, '$') AS currency_symbol, po.rate_snapshot AS po_rate_snapshot ";
|
||||||
// qry = qry + "where podescription like '%" + keyword + "%' ";
|
qryBase += "from vw_financelist v ";
|
||||||
// qry = qry + "order by idxpo asc limit " + offset + ", " + limit;
|
qryBase += "left join tbl_po po on po._idx = v.idxpo ";
|
||||||
|
qryBase += "left join tbl_currency c on c._idx = po.currency_id ";
|
||||||
|
qryBase += "left join tbl_justification j on j._idx = po.idxjustification ";
|
||||||
|
let keywordFilter =
|
||||||
|
"(trim(v.podescription) like '%" + keyword + "%' or trim(v.ponumber) like '%" + keyword + "%' or trim(v.prnumber) like '%" + keyword + "%' or trim(v.vendorname) like '%" + keyword + "%') ";
|
||||||
|
let divisionFilter = "";
|
||||||
|
if (division && division.trim() !== "") {
|
||||||
|
divisionFilter = "and j.division = '" + division + "' ";
|
||||||
|
}
|
||||||
|
let qry = qryBase + "where " + keywordFilter + divisionFilter;
|
||||||
|
|
||||||
let qry = "select v.*, COALESCE(c.currency, 'USD') AS currency_code, COALESCE(c.symbol, '$') AS currency_symbol, po.rate_snapshot AS po_rate_snapshot ";
|
|
||||||
qry += "from vw_financelist v ";
|
|
||||||
qry += "left join tbl_po po on po._idx = v.idxpo ";
|
|
||||||
qry += "left join tbl_currency c on c._idx = po.currency_id ";
|
|
||||||
qry += "where v.podescription like '%" + keyword + "%' ";
|
|
||||||
qry += "order by v.idxpo asc";
|
|
||||||
|
|
||||||
// console.log(qry);
|
|
||||||
db.query(qry,[],function(err,result,fields){
|
db.query(qry,[],function(err,result,fields){
|
||||||
if(err){
|
if(err){
|
||||||
apires.meta['message'] = err.toString();
|
apires.meta['message'] = err.toString();
|
||||||
@ -356,18 +363,13 @@ class FinanceAdapter extends Adapter{
|
|||||||
if(!Number.isInteger(pagination)){
|
if(!Number.isInteger(pagination)){
|
||||||
pagination=(Math.floor(result.length / limit))+1;
|
pagination=(Math.floor(result.length / limit))+1;
|
||||||
}
|
}
|
||||||
// let pagination = Adapter.getPagination(result.length, limit);
|
|
||||||
apires.success = true;
|
apires.success = true;
|
||||||
apires.data.push({
|
apires.data.push({
|
||||||
"totalpage": pagination,
|
"totalpage": pagination,
|
||||||
"totalrows": result.length
|
"totalrows": result.length
|
||||||
});
|
});
|
||||||
qry = "select v.*, COALESCE(c.currency, 'USD') AS currency_code, COALESCE(c.symbol, '$') AS currency_symbol, po.rate_snapshot AS po_rate_snapshot ";
|
qry = qryBase + "where " + keywordFilter + divisionFilter;
|
||||||
qry += "from vw_financelist v ";
|
qry += "order by " + sorder + " limit " + offset + ", " + limit;
|
||||||
qry += "left join tbl_po po on po._idx = v.idxpo ";
|
|
||||||
qry += "left join tbl_currency c on c._idx = po.currency_id ";
|
|
||||||
qry += "where v.podescription like '%" + keyword + "%' ";
|
|
||||||
qry += "order by v.idxpo asc limit " + offset + ", " + limit;
|
|
||||||
db.query(qry,[],function(err,result,fields){
|
db.query(qry,[],function(err,result,fields){
|
||||||
if(err){
|
if(err){
|
||||||
apires.meta['message'] = err.toString();
|
apires.meta['message'] = err.toString();
|
||||||
|
|||||||
@ -2106,21 +2106,39 @@ class PoAdapter extends Adapter {
|
|||||||
try {
|
try {
|
||||||
let limit = req.query.limit;
|
let limit = req.query.limit;
|
||||||
let offset = req.query.offset;
|
let offset = req.query.offset;
|
||||||
let keyword = req.query.keyword;
|
let keyword = req.query.keyword ?? "";
|
||||||
// let nik = req.body.nik;
|
let division = req.query.division ?? "";
|
||||||
|
let sort = req.query.sort ?? "latest";
|
||||||
|
let sorder = sort === "past" ? "v._idx asc" : "v._idx desc";
|
||||||
|
|
||||||
let qryBase = "select v.*, po.currency_id, po.rate_snapshot, c.currency AS currency_code, c.symbol AS currency_symbol ";
|
let qryBase =
|
||||||
|
"select v.*, po.currency_id, po.rate_snapshot, c.currency AS currency_code, c.symbol AS currency_symbol ";
|
||||||
qryBase += "from vw_po v left join tbl_po po on po._idx = v._idx ";
|
qryBase += "from vw_po v left join tbl_po po on po._idx = v._idx ";
|
||||||
qryBase += "left join tbl_currency c on c._idx = po.currency_id ";
|
qryBase += "left join tbl_currency c on c._idx = po.currency_id ";
|
||||||
let qry = qryBase;
|
qryBase += "left join tbl_justification j on j._idx = v.idxjustification ";
|
||||||
qry =
|
let keywordFilter =
|
||||||
qry +
|
"(trim(v.ponumber) like '%" +
|
||||||
"where trim(v.ponumber) like '%" +
|
|
||||||
keyword +
|
keyword +
|
||||||
"%' and v.status in(2,4) and v.ponumber<>'000' and v.ponumber<>'' ";
|
"%' or trim(v.prnumber) like '%" +
|
||||||
// qry = qry +"order by _idx asc limit " + offset + ", " + limit;
|
keyword +
|
||||||
|
"%' or trim(v.identifyprojectnumber) like '%" +
|
||||||
|
keyword +
|
||||||
|
"%' or trim(v.vendorname) like '%" +
|
||||||
|
keyword +
|
||||||
|
"%' or trim(v.contractdescription) like '%" +
|
||||||
|
keyword +
|
||||||
|
"%') ";
|
||||||
|
let divisionFilter = "";
|
||||||
|
if (division && division.trim() !== "") {
|
||||||
|
divisionFilter = "and j.division = '" + division + "' ";
|
||||||
|
}
|
||||||
|
let qry =
|
||||||
|
qryBase +
|
||||||
|
"where " +
|
||||||
|
keywordFilter +
|
||||||
|
"and v.status in(2,4) and v.ponumber<>'000' and v.ponumber<>'' " +
|
||||||
|
divisionFilter;
|
||||||
|
|
||||||
// console.log(qry);
|
|
||||||
db.query(qry, [], function (err, result, fields) {
|
db.query(qry, [], function (err, result, fields) {
|
||||||
if (err) {
|
if (err) {
|
||||||
apires.meta["message"] = err.toString();
|
apires.meta["message"] = err.toString();
|
||||||
@ -2132,19 +2150,18 @@ class PoAdapter extends Adapter {
|
|||||||
if (!Number.isInteger(pagination)) {
|
if (!Number.isInteger(pagination)) {
|
||||||
pagination = Math.floor(result.length / limit) + 1;
|
pagination = Math.floor(result.length / limit) + 1;
|
||||||
}
|
}
|
||||||
// let pagination = Adapter.getPagination(result.length, limit);
|
|
||||||
apires.success = true;
|
apires.success = true;
|
||||||
apires.data.push({
|
apires.data.push({
|
||||||
"totalpage": pagination,
|
"totalpage": pagination,
|
||||||
"totalrows": result.length,
|
"totalrows": result.length,
|
||||||
});
|
});
|
||||||
qry = qryBase;
|
|
||||||
qry =
|
qry =
|
||||||
qry +
|
qryBase +
|
||||||
"where trim(v.ponumber) like '%" +
|
"where " +
|
||||||
keyword +
|
keywordFilter +
|
||||||
"%' and v.status in(2,4) and v.ponumber<>'000' and v.ponumber<>'' ";
|
"and v.status in(2,4) and v.ponumber<>'000' and v.ponumber<>'' " +
|
||||||
qry = qry + "order by v._idx asc limit " + offset + ", " + limit;
|
divisionFilter;
|
||||||
|
qry = qry + "order by " + sorder + " limit " + offset + ", " + limit;
|
||||||
db.query(qry, [], function (err, result, fields) {
|
db.query(qry, [], function (err, result, fields) {
|
||||||
if (err) {
|
if (err) {
|
||||||
apires.meta["message"] = err.toString();
|
apires.meta["message"] = err.toString();
|
||||||
@ -2305,15 +2322,34 @@ class PoAdapter extends Adapter {
|
|||||||
try {
|
try {
|
||||||
let limit = req.query.limit;
|
let limit = req.query.limit;
|
||||||
let offset = req.query.offset;
|
let offset = req.query.offset;
|
||||||
let keyword = req.query.keyword;
|
let keyword = req.query.keyword ?? "";
|
||||||
// let nik = req.body.nik;
|
let division = req.query.division ?? "";
|
||||||
|
let sort = req.query.sort ?? "latest";
|
||||||
|
let sorder = sort === "past" ? "v._idx asc" : "v._idx desc";
|
||||||
|
|
||||||
let qry = "select v.* from vw_poinventoryheader v ";
|
let qryBase = "select v.* from vw_poinventoryheader v ";
|
||||||
qry = qry + "where EXISTS (SELECT 1 FROM tbl_bast b WHERE b.idxpo = v._idx AND b.isdeleted = 0) ";
|
qryBase +=
|
||||||
qry = qry + "and trim(v.ponumber) like '%" + keyword + "%' ";
|
"left join tbl_po po on po._idx = v._idx left join tbl_justification j on j._idx = po.idxjustification ";
|
||||||
// qry = qry +"order by v._idx asc limit " + offset + ", " + limit;
|
let keywordFilter =
|
||||||
|
"(trim(v.ponumber) like '%" +
|
||||||
|
keyword +
|
||||||
|
"%' or trim(v.identifyprojectnumber) like '%" +
|
||||||
|
keyword +
|
||||||
|
"%' or trim(v.vendorname) like '%" +
|
||||||
|
keyword +
|
||||||
|
"%' or trim(v.podescription) like '%" +
|
||||||
|
keyword +
|
||||||
|
"%') ";
|
||||||
|
let divisionFilter = "";
|
||||||
|
if (division && division.trim() !== "") {
|
||||||
|
divisionFilter = "and j.division = '" + division + "' ";
|
||||||
|
}
|
||||||
|
let qry =
|
||||||
|
qryBase +
|
||||||
|
"where EXISTS (SELECT 1 FROM tbl_bast b WHERE b.idxpo = v._idx AND b.isdeleted = 0) and " +
|
||||||
|
keywordFilter +
|
||||||
|
divisionFilter;
|
||||||
|
|
||||||
// console.log(qry);
|
|
||||||
db.query(qry, [], function (err, result, fields) {
|
db.query(qry, [], function (err, result, fields) {
|
||||||
if (err) {
|
if (err) {
|
||||||
apires.meta["message"] = err.toString();
|
apires.meta["message"] = err.toString();
|
||||||
@ -2325,16 +2361,17 @@ class PoAdapter extends Adapter {
|
|||||||
if (!Number.isInteger(pagination)) {
|
if (!Number.isInteger(pagination)) {
|
||||||
pagination = Math.floor(result.length / limit) + 1;
|
pagination = Math.floor(result.length / limit) + 1;
|
||||||
}
|
}
|
||||||
// let pagination = Adapter.getPagination(result.length, limit);
|
|
||||||
apires.success = true;
|
apires.success = true;
|
||||||
apires.data.push({
|
apires.data.push({
|
||||||
"totalpage": pagination,
|
"totalpage": pagination,
|
||||||
"totalrows": result.length,
|
"totalrows": result.length,
|
||||||
});
|
});
|
||||||
qry = "select v.* from vw_poinventoryheader v ";
|
qry =
|
||||||
qry = qry + "where EXISTS (SELECT 1 FROM tbl_bast b WHERE b.idxpo = v._idx AND b.isdeleted = 0) ";
|
qryBase +
|
||||||
qry = qry + "and trim(v.ponumber) like '%" + keyword + "%' ";
|
"where EXISTS (SELECT 1 FROM tbl_bast b WHERE b.idxpo = v._idx AND b.isdeleted = 0) and " +
|
||||||
qry = qry + "order by v._idx asc limit " + offset + ", " + limit;
|
keywordFilter +
|
||||||
|
divisionFilter;
|
||||||
|
qry = qry + "order by " + sorder + " limit " + offset + ", " + limit;
|
||||||
db.query(qry, [], function (err, result, fields) {
|
db.query(qry, [], function (err, result, fields) {
|
||||||
if (err) {
|
if (err) {
|
||||||
apires.meta["message"] = err.toString();
|
apires.meta["message"] = err.toString();
|
||||||
|
|||||||
@ -90,6 +90,26 @@ function extractSapPoNumber(resdata) {
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function extractSapMigoNumber(resdata) {
|
||||||
|
if (!resdata || typeof resdata !== "object") return "";
|
||||||
|
|
||||||
|
const headret = resdata.GOODSMVT_HEADRET || resdata.goodsmvt_headret;
|
||||||
|
if (headret?.MAT_DOC) return String(headret.MAT_DOC).trim();
|
||||||
|
if (headret?.mat_doc) return String(headret.mat_doc).trim();
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractSapMigoDocYear(resdata) {
|
||||||
|
if (!resdata || typeof resdata !== "object") return "";
|
||||||
|
|
||||||
|
const headret = resdata.GOODSMVT_HEADRET || resdata.goodsmvt_headret;
|
||||||
|
if (headret?.DOC_YEAR) return String(headret.DOC_YEAR).trim();
|
||||||
|
if (headret?.doc_year) return String(headret.doc_year).trim();
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
function collectSapErrors(resdata) {
|
function collectSapErrors(resdata) {
|
||||||
const returns = resdata?.RETURN || resdata?.return || [];
|
const returns = resdata?.RETURN || resdata?.return || [];
|
||||||
if (!Array.isArray(returns)) return { errcode: "", errmsg: "" };
|
if (!Array.isArray(returns)) return { errcode: "", errmsg: "" };
|
||||||
@ -382,47 +402,41 @@ exports.createPOSAPold = (req, res) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
exports.createMIGOPOSAP = (req, res) => {
|
exports.createMIGOPOSAP = (req, res) => {
|
||||||
try {
|
exports.createMIGOPOSAPold(req, res);
|
||||||
poadapter.queryUpdateMigoNumber(req, function (err, data) {
|
|
||||||
let statusCode = data != null ? data.meta.code : 200;
|
|
||||||
if (err) statusCode = 500;
|
|
||||||
// data.success = false;
|
|
||||||
// data.meta.message = errmsg;
|
|
||||||
poadapter.sendResponse(statusCode, data, res);
|
|
||||||
});
|
|
||||||
} catch (err) {
|
|
||||||
apireshandler.meta.code = 502;
|
|
||||||
apireshandler.meta.message = " [123] : PO controller, " + err.toString();
|
|
||||||
poadapter.sendResponse(502, apireshandler, res);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.createMIGOPOSAPold = (req, res) => {
|
exports.createMIGOPOSAPold = (req, res) => {
|
||||||
try {
|
try {
|
||||||
poadapter.queryPoManagementListDetail(req, function (err, resdata) {
|
poadapter.queryPoManagementListDetail(req, function (err, poDetail) {
|
||||||
let statusCode = resdata != null ? resdata.meta.code : 200;
|
let statusCode = poDetail != null ? poDetail.meta.code : 200;
|
||||||
if (err) statusCode = 500;
|
if (err) statusCode = 500;
|
||||||
// console.log(resdata.data.length);
|
|
||||||
// poadapter.sendResponse(statusCode,resdata, res);
|
|
||||||
if (resdata.data.length > 0) {
|
|
||||||
const idxpr = resdata.data[0]["idxpr"] ?? 0;
|
|
||||||
|
|
||||||
let gm_code = "01";
|
if (!poDetail?.data?.length) {
|
||||||
let pstng_date = resdata.data[0]["podate"].toString().trim();
|
apireshandler.success = false;
|
||||||
let doc_date = pstng_date;
|
apireshandler.meta.code = statusCode === 200 ? 404 : statusCode;
|
||||||
let header_txt = resdata.data[0]["podescription"].toString().trim();
|
apireshandler.meta.message = poDetail?.meta?.message || "PO record not found";
|
||||||
// let quantity="1";
|
poadapter.sendResponse(apireshandler.meta.code, apireshandler, res);
|
||||||
let quantity = resdata.data[0]["totalqty"].toString().trim();
|
return;
|
||||||
// let po_unit="PKT";
|
}
|
||||||
let po_unit = resdata.data[0]["units"].toString().trim();
|
|
||||||
let po_number = resdata.data[0]["ponumber"].toString().trim();
|
const row = poDetail.data[0];
|
||||||
let po_item = "00010";
|
const idxpr = row.idxpr ?? 0;
|
||||||
let item_text = resdata.data[0]["podescription"].toString().trim();
|
|
||||||
let gr_rcpt = "GRreceipt";
|
const gm_code = "01";
|
||||||
let unload_pt = "unloadpoint";
|
const pstng_date = formatSapDate(row.podate) || String(row.podate || "").trim();
|
||||||
let movement_ind = "B";
|
const doc_date = pstng_date;
|
||||||
let reason = "0001";
|
const header_txt = String(row.podescription || "").trim();
|
||||||
let location = "160301";
|
const quantity = String(row.totalqty || "").trim();
|
||||||
|
const po_unit = String(row.units || "PKT").trim();
|
||||||
|
const po_number = String(row.ponumber || "").trim();
|
||||||
|
const po_item = "00010";
|
||||||
|
const item_text = header_txt;
|
||||||
|
const gr_rcpt = "GRreceipt";
|
||||||
|
const unload_pt = "unloadpoint";
|
||||||
|
const movement_ind = "B";
|
||||||
|
const reason = "0001";
|
||||||
|
const location = "160301";
|
||||||
|
|
||||||
let goodsmvt_item =
|
let goodsmvt_item =
|
||||||
"1603|101|" +
|
"1603|101|" +
|
||||||
quantity +
|
quantity +
|
||||||
@ -435,10 +449,9 @@ exports.createMIGOPOSAPold = (req, res) => {
|
|||||||
"|" +
|
"|" +
|
||||||
item_text +
|
item_text +
|
||||||
"|";
|
"|";
|
||||||
// let goodsmvt_item="1603|101|"+quantity+"|"+po_number+"|"+po_item+"|"+item_text+"|";
|
|
||||||
goodsmvt_item +=
|
goodsmvt_item +=
|
||||||
gr_rcpt + "|" + unload_pt + "|" + movement_ind + "|" + reason + "|" + location + "|";
|
gr_rcpt + "|" + unload_pt + "|" + movement_ind + "|" + reason + "|" + location + "|";
|
||||||
// let zzctrnum = (resdata.data[0]['identifyprojectnumber']).toString().trim();//req.body.podescription;
|
|
||||||
const url =
|
const url =
|
||||||
baseurlsap +
|
baseurlsap +
|
||||||
"/migo?gm_code=" +
|
"/migo?gm_code=" +
|
||||||
@ -448,99 +461,91 @@ exports.createMIGOPOSAPold = (req, res) => {
|
|||||||
"&doc_date=" +
|
"&doc_date=" +
|
||||||
doc_date +
|
doc_date +
|
||||||
"&header_txt=" +
|
"&header_txt=" +
|
||||||
header_txt +
|
encodeURIComponent(header_txt) +
|
||||||
"&goodsmvt_item[]=" +
|
"&goodsmvt_item[]=" +
|
||||||
goodsmvt_item;
|
encodeURIComponent(goodsmvt_item);
|
||||||
|
|
||||||
let resuri = {
|
const resuri = {
|
||||||
"method": "POST",
|
method: "POST",
|
||||||
// 'url': baseurlsap+'/createPo',
|
url,
|
||||||
"url": url,
|
headers: {
|
||||||
"headers": {
|
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
"x-api-key": apikeysap,
|
"x-api-key": apikeysap,
|
||||||
},
|
},
|
||||||
// form: formjson,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const logData = {
|
const logData = {
|
||||||
ref_code: resdata.data[0]["ponumber"].toString().trim(),
|
ref_code: po_number,
|
||||||
request: JSON.stringify(resuri),
|
request: JSON.stringify(resuri),
|
||||||
request_at: new Date(),
|
request_at: new Date(),
|
||||||
request_by: "999999",
|
request_by: req.nik || req.body.nik || "999999",
|
||||||
response: "",
|
response: "",
|
||||||
response_at: "",
|
response_at: "",
|
||||||
url,
|
url,
|
||||||
};
|
};
|
||||||
|
|
||||||
// http://172.20.25.27/sapapi/index.php/api/migo?gm_code=01&pstng_date=20140404&doc_date=20210404&hea
|
|
||||||
// der_txt=test header&goodsmvt_item[]=1603|101|1|BH|4110000019|00010|line itemtext|GRreceipt|unloadp
|
|
||||||
// oint|B|0001|160301|
|
|
||||||
console.log(resuri);
|
|
||||||
request(resuri, function (error, response) {
|
request(resuri, function (error, response) {
|
||||||
logData.response_at = new Date();
|
logData.response_at = new Date();
|
||||||
logData.response = error ? JSON.stringify(error) : response.body;
|
logData.response = error ? JSON.stringify(error) : response.body;
|
||||||
sapadapter.queryInsertSapLog(idxpr, logData, "CREATE_PO_MIGO");
|
sapadapter.queryInsertSapLog(idxpr, logData, "CREATE_PO_MIGO");
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
// console.log(error);
|
apireshandler.success = false;
|
||||||
apireshandler.message = error.toString();
|
apireshandler.meta.code = 400;
|
||||||
|
apireshandler.meta.message = error.toString();
|
||||||
poadapter.sendResponse(400, apireshandler, res);
|
poadapter.sendResponse(400, apireshandler, res);
|
||||||
} else {
|
return;
|
||||||
console.log(response.body);
|
|
||||||
var resdata = JSON.parse(response.body);
|
|
||||||
var errcode = "";
|
|
||||||
var errmsg = "";
|
|
||||||
resdata["RETURN"].forEach((e) => {
|
|
||||||
if (e.TYPE == "E") {
|
|
||||||
errcode += e.NUMBER + ", ";
|
|
||||||
errmsg += e.MESSAGE + " & ";
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
errcode = errcode.substring(0, errcode.length - 2);
|
let sapResult;
|
||||||
errmsg = errmsg.substring(0, errmsg.length - 3);
|
try {
|
||||||
// console.log(errmsg);
|
sapResult = parseSapResponse(response.body);
|
||||||
|
} catch (parseErr) {
|
||||||
|
apireshandler.success = false;
|
||||||
|
apireshandler.meta.code = 500;
|
||||||
|
apireshandler.meta.message = "Invalid SAP response: " + parseErr.toString();
|
||||||
|
poadapter.sendResponse(500, apireshandler, res);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { errmsg } = collectSapErrors(sapResult);
|
||||||
|
const migoNumber = extractSapMigoNumber(sapResult);
|
||||||
|
const docYear = extractSapMigoDocYear(sapResult);
|
||||||
|
|
||||||
if (errmsg.length > 0) {
|
if (errmsg.length > 0) {
|
||||||
poadapter.queryUpdateMigoNumber(
|
apireshandler.success = false;
|
||||||
req,
|
apireshandler.meta.code = 500;
|
||||||
resdata["GOODSMVT_HEADRET"]["MAT_DOC"] || "",
|
apireshandler.meta.message = errmsg;
|
||||||
errmsg,
|
poadapter.sendResponse(500, apireshandler, res);
|
||||||
function (err, data) {
|
return;
|
||||||
let statusCode = data != null ? data.meta.code : 200;
|
|
||||||
if (err) statusCode = 500;
|
|
||||||
data.success = false;
|
|
||||||
data.meta.message = errmsg;
|
|
||||||
poadapter.sendResponse(500, data, res);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
poadapter.queryUpdateMigoNumber(
|
|
||||||
req,
|
|
||||||
resdata["GOODSMVT_HEADRET"]["MAT_DOC"],
|
|
||||||
errmsg,
|
|
||||||
function (err, data) {
|
|
||||||
let statusCode = data != null ? data.meta.code : 200;
|
|
||||||
if (err) statusCode = 500;
|
|
||||||
poadapter.sendResponse(statusCode, data, res);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// if(errcode.length>0){
|
if (!migoNumber) {
|
||||||
// apireshandler.meta.code = errcode;
|
apireshandler.success = false;
|
||||||
// apireshandler.meta.message = errmsg;
|
apireshandler.meta.code = 500;
|
||||||
// poadapter.sendResponse(200, apireshandler, res);
|
apireshandler.meta.message =
|
||||||
// }
|
"MIGO created in SAP but document number was not returned";
|
||||||
// else{
|
poadapter.sendResponse(500, apireshandler, res);
|
||||||
|
return;
|
||||||
// // apireshandler.success = true;
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
req.body.migo = migoNumber;
|
||||||
|
req.body.migosapmessage = docYear
|
||||||
|
? `MIGO ${migoNumber} / DOC_YEAR ${docYear}`
|
||||||
|
: `MIGO ${migoNumber}`;
|
||||||
|
req.body.nik = req.nik || req.body.nik || "999999";
|
||||||
|
|
||||||
|
poadapter.queryUpdateMigoNumber(req, function (updateErr, data) {
|
||||||
|
let saveStatusCode = data != null ? data.meta.code : 200;
|
||||||
|
if (updateErr) saveStatusCode = 500;
|
||||||
|
|
||||||
|
if (data) {
|
||||||
|
data.meta.message = `MIGO ${migoNumber} created successfully`;
|
||||||
|
}
|
||||||
|
|
||||||
|
poadapter.sendResponse(saveStatusCode, data, res);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
poadapter.sendResponse(statusCode, resdata, res);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
apireshandler.meta.code = 502;
|
apireshandler.meta.code = 502;
|
||||||
|
|||||||
Reference in New Issue
Block a user