// 1 => LOADING // 2 => DONE // 3 => ERROR import * as api from "../api/journal.js"; export default { namespaced: true, state: { search_status: 0, current_page: 1, x_search: "", search_error_message: "", last_id: -1, coas: [], total_coas: 0, selected_coa: {}, dialog_form_coa: false, act: "new", save_status: 0, save_error_message: "", errors: [], alert_success: false, msg_success: "", alert_error: false, dialog_error: false, open_print: false, // ---- xdate: moment(new Date()).format("YYYY-MM-DD"), end_date: moment(new Date()).format("YYYY-MM-DD"), journals: [], selected_journal: {}, summary: { debit: 0, credit: 0, balance: 0 }, dialog_form_detail: false, periodeList: [], selected_periode: {}, loading: false, dialog_form_periode: false, autocomplete_status: 0, search_status: 0, total_journal: 0, user: one_user(), jurnaldetails: [], dialog_error_jurnal: false, msgerrjurnallist: [], regionals: [], selected_regional: {}, branchs: [], selected_branch: {}, xsearch: "", open_dialog_info: false, msg_info: "", // -- dialog_edit_journal: false, user_level: {}, list_coa: [], journal_edit: [], dialog_confirm_posting: false, total_jurnal_not_posted: [], dialog_request_edit: false, // --- dialog_close_jurnal: false, jurnal_to_close: [] }, mutations: { update_search_status(state, val) { state.search_status = val; }, update_current_page(state, val) { state.current_page = val; }, update_x_search(state, val) { state.x_search = val; state.current_page = 1; }, update_search_error_message(state, val) { state.search_error_message = val; }, update_last_id(state, val) { state.last_id = val; }, update_coas(state, val) { state.coas = val; }, update_total_coas(state, val) { state.total_coas = val; }, update_selected_coa(state, val) { state.selected_coa = val; }, update_dialog_form_coa(state, val) { state.dialog_form_coa = val; }, update_act(state, val) { state.act = val; }, update_save_status(state, val) { state.save_status = val; }, update_save_error_message(state, val) { state.save_error_message = val; }, update_errors(state, val) { state.errors = val; }, update_alert_success(state, val) { state.alert_success = val; }, update_msg_success(state, val) { state.msg_success = val; }, update_alert_error(state, val) { state.alert_error = val; }, update_dialog_error(state, val) { state.dialog_error = val; }, update_open_print(state, value) { state.open_print = value; }, // --- update_xdate(state, val) { state.xdate = val; }, update_end_date(state, val) { state.end_date = val; }, update_journals(state, val) { state.journals = val; }, update_selected_journal(state, val) { state.selected_journal = val; }, update_summary(state, val) { state.summary = val; }, update_dialog_form_detail(state, val) { state.dialog_form_detail = val; }, update_periodeList(state, val) { state.periodeList = val; }, update_selected_periode(state, val) { state.selected_periode = val; }, update_loading(state, val) { state.loading = val; }, update_dialog_form_periode(state, val) { state.dialog_form_periode = val; }, update_autocomplete_status(state, val) { state.autocomplete_status = val; }, update_search_status(state, val) { state.search_status = val; }, update_total_journal(state, val) { state.total_journal = val; }, update_user(state, val) { state.user = val; }, update_jurnaldetails(state, val) { state.jurnaldetails = val; }, update_dialog_error_jurnal(state, val) { state.dialog_error_jurnal = val; }, update_msgerrjurnallist(state, val) { state.msgerrjurnallist = val; }, update_regionals(state, val) { state.regionals = val; }, update_selected_regional(state, val) { state.selected_regional = val; }, update_branchs(state, val) { state.branchs = val; }, update_selected_branch(state, val) { state.selected_branch = val; }, update_xsearch(state, val) { state.xsearch = val; state.current_page = 1; }, update_open_dialog_info(state, val) { state.open_dialog_info = val; }, update_msg_info(state, val) { state.msg_info = val; }, // -- update_dialog_edit_journal(state, val) { state.dialog_edit_journal = val; }, update_user_level(state, val) { state.user_level = val; }, update_list_coa(state, val) { state.list_coa = val; }, update_journal_edit(state, val) { state.journal_edit = val; }, update_dialog_confirm_posting(state, val) { state.dialog_confirm_posting = val; }, update_total_jurnal_not_posted(state, val) { state.total_jurnal_not_posted = val; }, update_dialog_request_edit(state, val) { state.dialog_request_edit = val; }, update_dialog_close_jurnal(state, val) { state.dialog_close_jurnal = val; }, update_jurnal_to_close(state, val) { state.jurnal_to_close = val; } }, actions: { async getPeriode(context) { context.commit("update_autocomplete_status", 1); try { let prm = {}; prm.token = one_token(); let resp = await api.getPeriode(prm); if (resp.status != "OK") { context.commit("update_autocomplete_status", 3); } else { context.commit("update_autocomplete_status", 2); let data = resp.data; context.commit("update_periodeList", resp.data); // Ambil bulan dan tahun sekarang let now = new Date(); let currentMonth = now.getMonth() + 1; // getMonth() dimulai dari 0 (Jan = 0) let currentYear = now.getFullYear().toString(); // Ambil tahun dalam bentuk string // Cari data dengan periodeMonth dan periodeYear yang cocok let selectedPeriode = data.find( (p) => p.periodeMonth == currentMonth.toString() && p.periodeYear == currentYear ); // Jika tidak ditemukan, gunakan data pertama sebagai default if (!selectedPeriode) { selectedPeriode = data[0]; } context.commit("update_selected_periode", selectedPeriode); } } catch (e) { context.commit("update_autocomplete_status", 3); } }, async search(context, prm) { context.commit("update_search_status", 1); try { let resp = await api.search( one_token(), prm.xdate, prm.periodeid, prm.current_page, prm.search, prm.branchCode, prm.regionalId ); if (resp.status != "OK") { context.commit("update_search_status", 3); context.commit("update_search_error_message", resp.message); } else { context.commit("update_search_status", 2); context.commit("update_search_error_message", ""); let data = { records: resp.data.records, total: resp.data.total }; context.commit("update_journals", data.records); context.commit("update_total_journal", data.total); } } catch (e) { context.commit("update_search_status", 3); context.commit("update_search_error_message", e.message); } }, async insertSales(context, prm) { context.commit("update_save_status", 1); try { let branchCode = prm.branchCode; let date = prm.date; let jurnalno = prm.jurnalno; let resp = await api.insertSales(branchCode, date, jurnalno); if (resp.status != "OK") { context.commit("update_save_status", 3); context.commit("update_save_error_message", resp.message); context.commit("update_alert_error", true); } else { context.commit("update_save_status", 2); context.commit("update_save_error_message", resp.message); let data = { total: resp.data.total }; context.commit("update_alert_success", true); var msg = resp.data.msg; context.commit("update_msg_success", msg); context.dispatch("search", { current_page: context.state.current_page, xdate: context.state.xdate, periodeid: context.state.selected_periode.id }); } } catch (e) { context.commit("update_save_status", 3); context.commit("update_save_error_message", e.message); context.commit("update_alert_error", true); } }, async getRegional(context) { context.commit("update_autocomplete_status", 1); try { let resp = await api.getRegional({ token: one_token(), regionalId: context.state.user.S_RegionalID }); if (resp.status != "OK") { context.commit("update_search_error_message", resp.message); context.commit("update_autocomplete_status", 3); } else { context.commit("update_search_error_message", ""); context.commit("update_autocomplete_status", 2); let data = { records: resp.data.records, selected: resp.data.selected }; context.commit("update_regionals", data.records); context.commit("update_selected_regional", data.selected); } } catch (e) { context.commit("update_search_error_message", e.message); context.commit("update_autocomplete_status", 3); } }, async getBranch(context) { context.commit("update_autocomplete_status", 1); try { let resp = await api.getBranch({ token: one_token(), regionalId: context.state.selected_regional.S_RegionalID, branchCode: context.state.user.M_BranchCode }); if (resp.status != "OK") { context.commit("update_search_error_message", resp.message); context.commit("update_autocomplete_status", 3); } else { context.commit("update_search_error_message", ""); context.commit("update_autocomplete_status", 2); let data = { records: resp.data.records, selected: resp.data.selected }; context.commit("update_branchs", data.records); context.commit("update_selected_branch", data.selected); } } catch (e) { context.commit("update_search_error_message", e.message); context.commit("update_autocomplete_status", 3); } }, async postingJurnal(context, typeid) { try { let param = { token: one_token(), jurnalTypeID: typeid, periodeID: context.state.selected_periode.id }; const resp = await api.changeJurnalToPosted(param); if (resp.status != "OK") { context.commit("update_alert_error", true); context.commit("update_save_error_message", resp.message); } else { context.commit("update_msg_success", resp.data); context.commit("update_alert_success", true); context.dispatch("search", { branchCode: context.state.selected_branch.M_BranchCode ?? "", regionalId: context.state.selected_regional.S_RegionalID, search: context.state.x_search, current_page: context.state.current_page, xdate: context.state.xdate, periodeid: context.state.selected_periode.id }); context.commit("update_total_jurnal_not_posted", []); context.commit("update_dialog_confirm_posting", false); } } catch (error) { context.commit("update_alert_error", true); context.commit("update_save_error_message", error.message); } }, async getUserApprovalLevel(context) { try { let param = { token: one_token() }; const resp = await api.getUserApproveLevel(param); if (resp.status != "OK") { context.commit("update_alert_error", true); context.commit("update_save_error_message", resp.message); } else { context.commit("update_user_level", resp.data); } } catch (error) { context.commit("update_alert_error", true); context.commit("update_save_error_message", error.message); } }, async getListingCOA(context) { try { let param = { token: one_token(), keyword: "" }; const resp = await api.getListingCOA(param); if (resp.status != "OK") { context.commit("update_alert_error", true); context.commit("update_save_error_message", resp.message); } else { context.commit("update_list_coa", resp.data); } } catch (error) { context.commit("update_alert_error", true); context.commit("update_save_error_message", error.message); } }, async requestEditJurnal(context) { try { let param = { token: one_token(), jurnalID: context.state.selected_journal.jurnalID, staffID: context.state.user.M_UserID, staffName: context.state.user.M_UserUsername }; const resp = await api.requestEditJurnal(param); if (resp.status != "OK") { context.commit("update_alert_error", true); context.commit("update_save_error_message", resp.message); } else { context.commit("update_msg_success", resp.data); context.commit("update_alert_success", true); context.commit("update_dialog_request_edit", false); } } catch (error) { context.commit("update_alert_error", true); context.commit("update_save_error_message", error.message); } }, async saveEditJurnal(context, newdetail) { try { let param = { token: one_token(), jurnalID: context.state.selected_journal.jurnalID, jurnalRequestEditID: context.state.selected_journal.JurnalRequestEditID, oldjurnaltx: context.state.selected_journal.detailtx, newjurnaltx: newdetail }; const resp = await api.saveEditJurnal(param); if (resp.status != "OK") { context.commit("update_alert_error", true); context.commit("update_save_error_message", resp.message); } else { context.dispatch("search", { branchCode: context.state.selected_branch.M_BranchCode ?? "", regionalId: context.state.selected_regional.S_RegionalID, search: context.state.x_search, current_page: context.state.current_page, xdate: context.state.xdate, periodeid: context.state.selected_periode.id }); context.commit("update_dialog_edit_journal", false); context.commit("update_msg_success", resp.data); context.commit("update_alert_success", true); } } catch (error) { context.commit("update_alert_error", true); context.commit("update_save_error_message", error.message); } }, async totalJurnalNotPostedPerPeriod(context) { try { let param = { token: one_token(), periodeID: context.state.selected_periode.id }; const resp = await api.getTotalJurnalNotPostedPerPeriod(param); if (resp.status != "OK") { context.commit("update_alert_error", true); context.commit("update_save_error_message", resp.message); } else { context.commit("update_total_jurnal_not_posted", resp.data ?? []); } } catch (error) { context.commit("update_alert_error", true); context.commit("update_save_error_message", error.message); } }, async getDataJurnalNotClosedPerPeriod(context) { try { let param = { token: one_token(), periodeID: context.state.selected_periode.id }; const resp = await api.getDataJurnalNotClosedPerPeriod(param); if (resp.status != "OK") { context.commit("update_alert_error", true); context.commit("update_save_error_message", resp.message); } else { context.commit("update_jurnal_to_close", resp.data ?? []); } } catch (error) { context.commit("update_alert_error", true); context.commit("update_save_error_message", error.message); } }, async closeJurnalPerPeriode(context, typeid) { try { let param = { token: one_token(), jurnalTypeID: typeid, periodeID: context.state.selected_periode.id }; const resp = await api.closeJurnalPerPeriode(param); if (resp.status != "OK") { context.commit("update_alert_error", true); context.commit("update_save_error_message", resp.message); } else { context.commit("update_msg_success", resp.data); context.commit("update_alert_success", true); context.dispatch("search", { branchCode: context.state.selected_branch.M_BranchCode ?? "", regionalId: context.state.selected_regional.S_RegionalID, search: context.state.x_search, current_page: context.state.current_page, xdate: context.state.xdate, periodeid: context.state.selected_periode.id }); context.commit("update_jurnal_to_close", []); context.commit("update_dialog_close_jurnal", false); } } catch (error) { context.commit("update_alert_error", true); context.commit("update_save_error_message", error.message); } } } };