Files
backend-Eprocurement/adapter/financeadapter.js
2025-12-05 06:21:42 +07:00

534 lines
23 KiB
JavaScript

const db=require('../config/dbproc.js');
const Adapter=require('./dbadapter.js');
const fs = require("fs");
class FinanceAdapter extends Adapter{
constructor(){
super();
}
async queryPoPayList(req,callback){
var apires = this.getApiResultDefined();
try {
let limit = req.query.limit;
let offset = req.query.offset;
let keyword = req.query.keyword;
let qry = "select * from vw_popaylist ";
qry = qry + "where podescription like '%" + keyword + "%' ";
// qry = qry + "order by idxpo asc limit " + offset + ", " + limit;
// console.log(qry);
db.query(qry,[],function(err,result,fields){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
if(result.length>0){
let pagination = result.length / limit;
if(!Number.isInteger(pagination)){
pagination=(Math.floor(result.length / limit))+1;
}
// let pagination = Adapter.getPagination(result.length, limit);
apires.success = true;
apires.data.push({
"totalpage": pagination,
"totalrows": result.length
});
qry = "select * from vw_popaylist ";
qry = qry + "where podescription like '%" + keyword + "%' ";
qry = qry + "order by idxpo asc limit " + offset + ", " + limit;
db.query(qry,[],function(err,result,fields){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
apires.data.push({
"results": JSON.parse(JSON.stringify(result))
});
callback(null, apires);
}
});
}
else{
apires.meta.code = 200;
apires.meta.message = "Record Not Found";
callback(null, apires);
}
}
});
}
catch(err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
}
}
async queryPoPayListDetail(req,callback){
var apires = this.getApiResultDefined();
try {
let idxpo = req.query.idxpo;
let qry = "select * from vw_popaylist ";
qry = qry + "where idxpo='" + idxpo + "' ";
qry = qry + "order by idxpo asc";
// console.log(qry);
db.query(qry,[],function(err,result,fields){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
if(result.length>0){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
apires.data.push({
"results": JSON.parse(JSON.stringify(result))
});
callback(null, apires);
}
}
else{
apires.meta.code = 200;
apires.meta.message = "Record Not Found";
callback(null, apires);
}
}
});
}
catch(err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
}
}
async queryPayChecklist(req,callback){
var apires = this.getApiResultDefined();
try {
// let limit = req.query.limit;
// let offset = req.query.offset;
// let keyword = req.query.keyword;
let qry = "select _idx, checklistname from tbl_financechecklist where isdeleted=0";
// console.log(qry);
db.query(qry,[],function(err,result,fields){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
if(result.length>0){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
apires.data.push({
"results": JSON.parse(JSON.stringify(result))
});
callback(null, apires);
}
}
else{
apires.meta.code = 200;
apires.meta.message = "Record Not Found";
callback(null, apires);
}
}
});
}
catch(err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
}
}
async queryCurrencyList(req,callback){
var apires = this.getApiResultDefined();
try {
// let limit = req.query.limit;
// let offset = req.query.offset;
// let keyword = req.query.keyword;
let qry = "select _idx, currency from tbl_currency where isdeleted=0";
// console.log(qry);
db.query(qry,[],function(err,result,fields){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
if(result.length>0){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
apires.data.push({
"results": JSON.parse(JSON.stringify(result))
});
callback(null, apires);
}
}
else{
apires.meta.code = 200;
apires.meta.message = "Record Not Found";
callback(null, apires);
}
}
});
}
catch(err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
}
}
async querySubmitPayPo(req,callback){
var apires = this.getApiResultDefined();
try {
let idxpo = req.body.idxpo;
let ponumber = req.body.ponumber;
let idxvendor = req.body.idxvendor;
let vendorname = req.body.vendorname;
let totalpo = req.body.totalpo;
let contractnumber = req.body.contractnumber;
let percentpay = req.body.percentpay;
let totalinvoice = req.body.totalinvoice;
let payto = req.body.payto;
let paymentdate = req.body.paymentdate;
let payperiod = req.body.payperiod;
let whtvalue = req.body.whtvalue;
let costcenter = req.body.costcenter;
let description = req.body.description;
let status = req.body.status;
let statusdescription = req.body.statusdescription;
let nikpreparedby = req.body.nikpreparedby;
let prepareddate = req.body.prepareddate;
let nikreviewby = req.body.nikreviewby;
let reviewdate = req.body.reviewdate;
let nikreviewdirby = req.body.nikreviewdirby;
let reviewdirdate = req.body.reviewdirdate;
let reviewdescription = req.body.reviewdescription;
let nik = req.body.nik;
let checklistdata = req.body.checklistdata;
// console.log(checklistdata)
let qry = "insert into tbl_finance set idxpo='"+idxpo+"',ponumber='"+ponumber+"',idxvendor='"+idxvendor+"',";
qry = qry + "vendorname='"+vendorname+"',totalpo='"+totalpo+"',contractnumber='"+contractnumber+"',";
qry = qry + "percentpay='"+percentpay+"',totalinvoice='"+totalinvoice+"',payto='"+payto+"',paymentdate='"+paymentdate+"',";
qry = qry + "payperiod='"+payperiod+"',whtvalue='"+whtvalue+"',costcenter='"+costcenter+"',";
qry = qry + "description='"+description+"',status='"+status+"',statusdescription='"+statusdescription+"',";
qry = qry + "laststatusupdate=now(),nikpreparedby='"+nikpreparedby+"',prepareddate='"+prepareddate+"',";
qry = qry + "nikreviewby='"+nikreviewby+"',reviewdate='"+reviewdate+"',nikreviewdirby='"+nikreviewdirby+"',";
qry = qry + "reviewdirdate='"+reviewdirdate+"',reviewdescription='"+reviewdescription+"',iby='"+nik+"',idt=now()";
console.log(qry);
db.query(qry,[],function(err,result,fields){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
var idxheader = result.insertId;
Object.keys(checklistdata).forEach(function(key){
var idxchecklist = checklistdata[key]['idxchecklist'];
var checklistname = checklistdata[key]['checklistname'];
var iscomplete = checklistdata[key]['iscomplete'];
var isvalid = checklistdata[key]['isvalid'];
qry = "insert into tbl_financedetailchecklist set idxheader='"+idxheader+"',";
qry = qry + "idxchecklist='"+idxchecklist+"',checklistname='"+checklistname+"',";
qry = qry + "iscomplete='"+iscomplete+"',isvalid='"+isvalid+"',iby='"+nik+"',idt=now()";
db.query(qry,[],function(err2,result2,fields2){return result2;});
});
apires.success = true;
apires.data={
"idxfinance":idxheader,
"status" : "Data Has Been Submitted"
};
callback(null, apires);
// if(result.length>0){
// if(err){
// apires.meta['message'] = err.toString();
// apires.meta['code'] = 500;
// callback('err',apires);
// }
// else
// {
// apires.data.push({
// "results": JSON.parse(JSON.stringify(result))
// });
// callback(null, apires);
// }
// }
// else{
// apires.meta.code = 200;
// apires.meta.message = "Record Not Found";
// callback(null, apires);
// }
}
});
}
catch(err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
}
}
async queryFinanceList(req,callback){
var apires = this.getApiResultDefined();
try {
let limit = req.query.limit;
let offset = req.query.offset;
let keyword = req.query.keyword;
// let qry = "select * from vw_financelist ";
// qry = qry + "where podescription like '%" + keyword + "%' ";
// qry = qry + "order by idxpo asc limit " + offset + ", " + limit;
let qry = "select * from vw_financelist ";
qry = qry + "where podescription like '%" + keyword + "%' ";
qry = qry + "order by idxpo asc";
// console.log(qry);
db.query(qry,[],function(err,result,fields){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
if(result.length>0){
let pagination = result.length / limit;
if(!Number.isInteger(pagination)){
pagination=(Math.floor(result.length / limit))+1;
}
// let pagination = Adapter.getPagination(result.length, limit);
apires.success = true;
apires.data.push({
"totalpage": pagination,
"totalrows": result.length
});
qry = "select * from vw_financelist ";
qry = qry + "where podescription like '%" + keyword + "%' ";
qry = qry + "order by idxpo asc limit " + offset + ", " + limit;
db.query(qry,[],function(err,result,fields){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
apires.data.push({
"results": JSON.parse(JSON.stringify(result))
});
callback(null, apires);
}
});
}
else{
apires.meta.code = 200;
apires.meta.message = "Record Not Found";
callback(null, apires);
}
}
});
}
catch(err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
}
}
async queryFinanceListDetail(req,callback){
var apires = this.getApiResultDefined();
try {
let limit = req.query.limit;
let offset = req.query.offset;
let idxpo = req.query.idxpo;
let qry = "select * from vw_financelistdetail ";
qry = qry + "where idxpo='"+idxpo+"'";
// console.log(qry);
db.query(qry,[],function(err,result,fields){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
if(result.length>0){
let pagination = result.length / limit;
if(!Number.isInteger(pagination)){
pagination=(Math.floor(result.length / limit))+1;
}
// let pagination = Adapter.getPagination(result.length, limit);
apires.success = true;
apires.data.push({
"totalpage": pagination,
"totalrows": result.length
});
qry = "select * from vw_financelistdetail ";
qry = qry + "where idxpo='"+idxpo+"' ";
qry = qry + "order by idxfinance asc limit " + offset + ", " + limit;
db.query(qry,[],function(err,result,fields){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
apires.data.push({
"results": JSON.parse(JSON.stringify(result))
});
callback(null, apires);
}
});
}
else{
apires.meta.code = 200;
apires.meta.message = "Record Not Found";
callback(null, apires);
}
}
});
}
catch(err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
}
}
async queryFinanceDetailUpload(req,callback){
var apires = this.getApiResultDefined();
try {
let idxfinance = req.query.idxfinance;
let qry = "select * from vw_financelistdetail ";
qry = qry + "where idxfinance='"+idxfinance+"'";
// console.log(qry);
db.query(qry,[],function(err,result,fields){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
if(result.length>0){
apires.data = JSON.parse(JSON.stringify(result));
qry = "select _idx,idxchecklist,checklistname,iscomplete,isvalid ";
qry = qry +"from tbl_financedetailchecklist where idxheader='"+idxfinance+"' and isdeleted=0 ";
qry = qry +"order by _idx asc";
db.query(qry,[],function(err1,result1,fields1){
if(err1){
apires.meta['message'] = err1.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
apires.success = true;
apires.data[0]['checklistinfo'] = JSON.parse(JSON.stringify(result1));
callback(null,apires);
}
});
// apires.success = true;
// apires.data = JSON.parse(JSON.stringify(result));
// callback(null, apires);
}
else{
apires.meta.code = 200;
apires.meta.message = "Record Not Found";
callback(null, apires);
}
}
});
}
catch(err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
}
}
async queryUploadDocFin(req,filedoc, callback) {
try {
var apires = this.getApiResultDefined();
var idxfinance = req.body.idxfinance;
var paymentdate = req.body.paymentdate;
var nik = req.body.nik;
var qry = "update tbl_finance set status=2,statusdescription='Verify By Fin',filedoc='"+filedoc+"',paymentdate='"+paymentdate+"',uby='"+nik+"',udt=now() ";
qry = qry +"where _idx='" + idxfinance +"'";
db.query(qry,[],function(err,result,fields){
if(err){
apires.meta['message'] = err.toString();
apires.meta['code'] = 500;
callback('err',apires);
}
else
{
apires.success = true;
apires.data = JSON.parse(JSON.stringify(result));
callback(null, apires);
}
});
} catch (err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback('error',apires);
}
}
}
module.exports = FinanceAdapter;