From a532743c22a38d11d3798d6fbae013a527a95681 Mon Sep 17 00:00:00 2001 From: naochizuki Date: Mon, 23 Sep 2024 10:20:05 +0700 Subject: [PATCH] Feat: Inject Jurnal Ar --- source/lib_jurnalar.ts | 43 ++++++++++++++++++++++++++++ source/server.ts | 63 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 source/lib_jurnalar.ts diff --git a/source/lib_jurnalar.ts b/source/lib_jurnalar.ts new file mode 100644 index 0000000..ce8e0f9 --- /dev/null +++ b/source/lib_jurnalar.ts @@ -0,0 +1,43 @@ +import axios from "axios"; +import config from "./config/config"; +import logging from "./config/logging"; +import { NAME_SPACE } from "./server"; + +export const getJurnalAr = async (date: string) => { + const url = `${config.base_url}mockup/accounting/injectjurnalar/getJurnal/${date}`; + logging.info(NAME_SPACE, `\t INFO : ${url}`); + + try { + const resp = await axios.get(url, { + responseType: "arraybuffer", + }); + const jresp = JSON.parse(resp.data.toString()); + return jresp; + } catch (e) { + if (axios.isAxiosError(e)) { + logging.error(NAME_SPACE, e.response?.data.toString()); + } else if (e instanceof Error) { + logging.error(NAME_SPACE, e.message); + } + } +}; + +export const injectJurnalAr = async (prm: any) => { + const url = `${config.base_url}mockup/accounting/injectjurnalar/inject`; + logging.info(NAME_SPACE, `\t INFO : ${url}`); + + try { + const resp = await axios.post(url, prm, { + headers: { "Content-Type": "application/json; charset=UTF-8" }, + responseType: "arraybuffer", + }); + const jresp = JSON.parse(resp.data.toString()); + return jresp; + } catch (e) { + if (axios.isAxiosError(e)) { + logging.error(NAME_SPACE, e.response?.data.toString()); + } else if (e instanceof Error) { + logging.error(NAME_SPACE, e.message); + } + } +}; diff --git a/source/server.ts b/source/server.ts index b054ac2..3421270 100644 --- a/source/server.ts +++ b/source/server.ts @@ -3,6 +3,7 @@ import logging from "./config/logging"; import * as Xcron from "node-cron"; import { getJurnal, injectJurnalTx } from "./lib_jurnaltx"; +import { getJurnalAr, injectJurnalAr } from "./lib_jurnalar"; import axios from "axios"; export const NAME_SPACE = "Point Member Gateway"; @@ -16,6 +17,7 @@ const on_init = async () => { logging.info(NAME_SPACE, "On Init Start"); await jurnalTxJob(); + await jurnalArJob(); logging.info(NAME_SPACE, "On Init End"); }; @@ -28,7 +30,7 @@ async function jurnalTxJob() { } isRunning = true; try { - logging.info(NAME_SPACE, "Starting Job Jurbal TX" + VERSION); + logging.info(NAME_SPACE, "Starting Job Jurnal TX" + VERSION); // UPLOAD logging.info(NAME_SPACE, "Start Get Jurnal Tx"); // 2024 - 09 - 17; @@ -81,12 +83,71 @@ async function jurnalTxJob() { } } } +async function jurnalArJob() { + if (isRunning) { + logging.info(NAME_SPACE, "Still Running"); + return; + } + isRunning = true; + try { + logging.info(NAME_SPACE, "Starting Job Jurnal AR" + VERSION); + // UPLOAD + logging.info(NAME_SPACE, "Start Get Jurnal AR"); + // 2024 - 09 - 17; + var respJurnal = await getJurnalAr(""); + if (respJurnal["status"] != "OK") { + logging.error(NAME_SPACE, "\t Error", respJurnal); + } else { + logging.info(NAME_SPACE, "\t Success Get Jurnal AR"); + } + logging.info(NAME_SPACE, "\t wait 1s"); + if (respJurnal["data"].length === 0) { + logging.info(NAME_SPACE, "\t Tidak ada jurnal"); + } else { + for (let i = 0; i < respJurnal["data"].length; i++) { + const e = respJurnal["data"][i]; + e.jurnalID = respJurnal["jurnalID"]; + logging.info( + NAME_SPACE, + "Start Insert Jurnal AR, JURNAL ID :" + + respJurnal["jurnalID"].toString() + ); + var respInsert = await injectJurnalAr(e); + if (respInsert["status"] != "OK") { + logging.error(NAME_SPACE, "\t Error", respInsert); + } else { + logging.info(NAME_SPACE, "\t " + respInsert["data"]); + } + //Sleep + logging.info(NAME_SPACE, "\t wait 1s"); + logging.info( + NAME_SPACE, + "End Insert Jurnal AR, JURNAL ID :" + + respJurnal["jurnalID"].toString() + ); + await delay(1000); + } + } + + logging.info(NAME_SPACE, "End Job Jurnal AR"); + + isRunning = false; + } catch (e) { + isRunning = false; + if (e instanceof Error) { + logging.error(NAME_SPACE, e.message); + } else { + logging.error(NAME_SPACE, "Unknown"); + } + } +} // console.log(config); for (const sched of config.schedule) { Xcron.schedule( sched, async () => { await jurnalTxJob(); + await jurnalArJob(); }, { timezone: "Asia/Jakarta",