Files

245 lines
9.9 KiB
JavaScript

import * as api from '../api/api.js'
export default {
namespaced: true,
state: {
snacbar: {
message: '',
color: 'success',
active: false
},
filter: {
startdate: moment(new Date()).format('YYYY-MM-DD'),
enddate: moment(new Date()).format('YYYY-MM-DD'),
typejournal_id: 0,
search: '',
periode_id: 0,
},
list_jurnaltype: [],
list_periode: [],
selected_periode: {},
listjournal: {
records: [],
total: 0
},
currpage: 1,
selected_jurnal: {},
selected_jurnal_detail: {},
summary_jurnal_detail: {
total_debit: 0,
total_kredit: 0,
balance: 0
},
dialog_verifikasi: false,
dialog_pick_periode: false,
dialog_edit_request: false
},
mutations: {
update_filter(state, val) {
state.filter = val
},
update_list_jurnaltype(state, val) {
state.list_jurnaltype = val
},
update_list_periode(state, val) {
state.list_periode = val
},
update_selected_periode(state, val) {
state.selected_periode = val
},
update_listjournal(state, val) {
state.listjournal = val
},
update_currpage(state, val) {
state.currpage = val
},
update_selected_jurnal(state, val) {
state.selected_jurnal = val
},
update_selected_jurnal_detail(state, val) {
state.selected_jurnal_detail = val
},
update_summary_jurnal_detail(state, val) {
state.summary_jurnal_detail = val
},
update_dialog_verifikasi(state, val) {
state.dialog_verifikasi = val
},
update_snacbar(state, val) {
state.snacbar = val
},
update_dialog_pick_periode(state, val) {
state.dialog_pick_periode = val
},
update_dialog_edit_request(state, val) {
state.dialog_edit_request = val
}
},
actions: {
async getListPeriode(context) {
try {
let snac = { color: 'error', message: '', active: false };
context.commit("update_snacbar", snac);
var resp = await api.getListPeriode({token: one_token()});
if (resp.status != 'OK') {
let snac = { color: 'error', message: resp.message, active: true };
context.commit("update_snacbar", snac);
} else {
context.commit("update_list_periode", resp.data);
// update to latest periode id in masterdata
let filter = context.state.filter
filter.periode_id = resp.data[0].periodeID
context.commit("update_filter", filter);
context.commit("update_selected_periode", resp.data[0]);
}
} catch (error) {
let snac = { color: 'error', message: error.message, active: true };
context.commit("update_snacbar", snac);
}
},
async getListTypeJurnal(context) {
try {
let snac = { color: 'error', message: '', active: false };
context.commit("update_snacbar", snac);
var resp = await api.getListTypeJurnal({token: one_token()});
if (resp.status != 'OK') {
let snac = { color: 'error', message: resp.message, active: true };
context.commit("update_snacbar", snac);
} else {
context.commit("update_list_jurnaltype", resp.data);
}
} catch (error) {
let snac = { color: 'error', message: error.message, active: true };
context.commit("update_snacbar", snac);
}
},
async getListJournalEdit(context) {
try {
let snac = { color: 'error', message: '', active: false };
context.commit("update_snacbar", snac);
let param = {
periodeID: context.state.filter.periode_id,
typeJournalID: context.state.filter.typejournal_id,
search: context.state.filter.search,
startdate: context.state.filter.startdate,
enddate: context.state.filter.enddate,
page: context.state.currpage,
token: one_token()
}
var resp = await api.getListJournalEdit(param);
if (resp.status != "OK") {
let snac = { color: 'error', message: resp.message, active: true };
context.commit("update_snacbar", snac);
} else {
context.commit("update_listjournal", resp.data);
}
} catch (error) {
let snac = { color: 'error', message: error.message, active: true };
context.commit("update_snacbar", snac);
}
},
async getDetailJournalEdit(context, jurnalid) {
try {
let snac = { color: 'error', message: '', active: false };
context.commit("update_snacbar", snac);
let param = {
jurnalID: jurnalid,
token: one_token()
}
var resp = await api.getDetailJournalEdit(param);
if (resp.status != "OK") {
let snac = { color: 'error', message: resp.message, active: true };
context.commit("update_snacbar", snac);
} else {
const data = resp.data;
context.commit("update_selected_jurnal_detail", data);
// summary total kredit & debit jurnal
// changeAfter & changeBefore harusnya sama
const summary = data.changeAfter.reduce((acc, item) => {
const debit = Number(item.jurnalTxDebit) || 0;
const kredit = Number(item.jurnalTxCredit) || 0;
acc.total_debit += debit;
acc.total_kredit += kredit;
return acc;
}, {total_debit: 0, total_kredit: 0});
summary.balance = summary.total_debit - summary.total_kredit;
context.commit("update_summary_jurnal_detail", summary);
}
} catch (error) {
let snac = { color: 'error', message: error.message, active: true };
context.commit("update_snacbar", snac);
}
},
async updateRequestEditStatus(context, status) {
try {
let snac = { color: 'error', message: '', active: false };
context.commit("update_snacbar", snac);
let param = {
JurnalRequestEditID: context.state.selected_jurnal.JurnalRequestEditID,
jurnalID: context.state.selected_jurnal.jurnalID,
status: status.status,
token: one_token()
}
var resp = await api.updateRequestEditStatus(param);
if (resp.status != "OK") {
let snac = { color: 'error', message: resp.message, active: true };
context.commit("update_snacbar", snac);
} else {
context.dispatch("getListJournalEdit");
let snac = { color: 'success', message: resp.data, active: true };
context.commit("update_snacbar", snac);
context.commit("update_dialog_edit_request", false)
}
} catch (error) {
let snac = { color: 'error', message: error.message, active: true };
context.commit("update_snacbar", snac);
}
},
async verifEditJurnal(context, status) {
try {
let snac = { color: 'error', message: '', active: false };
context.commit("update_snacbar", snac);
let param = {
jurnalID: context.state.selected_jurnal.jurnalID,
newtrx: context.state.selected_jurnal_detail.changeAfter,
JurnalRequestEditID: context.state.selected_jurnal.JurnalRequestEditID,
status: status,
token: one_token()
}
var resp = await api.verifEditJurnal(param);
if (resp.status != "OK") {
let snac = { color: 'error', message: resp.message, active: true };
context.commit("update_snacbar", snac);
} else {
context.dispatch("getListJournalEdit");
let snac = { color: 'success', message: resp.data, active: true };
context.commit("update_snacbar", snac);
context.commit("update_summary_jurnal_detail", {
total_debit: 0,
total_kredit: 0,
balance: 0
});
context.commit("update_selected_jurnal_detail", {});
context.commit("update_selected_jurnal", {})
context.commit("update_dialog_verifikasi", false);
}
} catch (error) {
let snac = { color: 'error', message: error.message, active: true };
context.commit("update_snacbar", snac);
}
}
}
}