import * as api from "../api/paymentmanual.js"

export default {
    namespaced: true,
    state: {
        lookup_status: 0,
        lookup_error_message: '',
        types: [],
        total_payment: 0,
        reload_after_save: false,
        dialog_pay_success: false,
        paynumber: '',
        notes: [],
        tagihans: [],
        dialog_delete: false,
        msg_delete: '',
        note_delete: '',
        nota_delete: {},
        dialog_edit: false,
        msg_edit: '',
        note_edit: '',
        nota_edit: {},
        open_print_note: false,
        idx: 0,
        last_payments: {},
        payment_total: 0,
        banks: [],
        disable_btn_pay: 'Y',
        ordertests: [],
        isauto: 'N',
        paymenttypes: [],
        paymenttype: {},
        paymenttypes_edit: [],
        paymenttype_edit: {},
        suppliers: [],
        supplier: {},
        cards: [],
        card: {},
        edcs: [],
        edc: {},
        accounts: [],
        account: {},
        bar_chx_all: false,
        selected_tagihan: {},
        indeterminatex: false,
        in_saving: false,
        xbayar: 0,
        xrounding: 0,
        open_dialog_info:false,
        msg_info:'',
        a_coa_search: '',
        a_supplier_search: '',
        a_loading_coa: false,
        a_loading_supplier: false,
        xtanggalbayar: ''
    },
    mutations: {
        update_xtanggalbayar(state, val) {
            state.xtanggalbayar = val
        },
        update_a_coa_search(state, val) {
            state.a_coa_search = val
        },
        update_a_supplier_search(state, val) {
            state.a_supplier_search = val
        },
        update_a_loading_coa(state, val) {
            state.a_loading_coa = val
        },
        update_a_loading_supplier(state, val) {
            state.a_loading_supplier = val
        },
        update_open_dialog_info(state,val){
            state.open_dialog_info = val
         },
         update_msg_info(state,val){
            state.msg_info = val
         },
        update_xbayar(state, val) {
            state.xbayar = val
        },
        update_xrounding(state, val) {
            state.xrounding = val
        },
        update_in_saving(state, val) {
            state.in_saving = val
        },
        update_disable_btn_pay(state, val) {
            state.disable_btn_pay = val
        },
        update_banks(state, val) {
            state.banks = val
        },
        update_lookup_error_message(state, val) {
            state.lookup_error_message = val
        },
        update_lookup_status(state, status) {
            state.lookup_status = status
        },
        update_types(state, data) {
            state.types = data.records
            state.total_type = data.total
        },
        update_selected_status(state, val) {
            state.selected_status = val
        },
        update_total_payment(state, val) {
            state.total_payment = val
        },
        update_reload_after_save(state, val) {
            state.reload_after_save = val
        },
        update_dialog_pay_success(state, val) {
            state.dialog_pay_success = val
        },
        update_paynumber(state, val) {
            state.paynumber = val
        },
        update_notes(state, val) {
            state.notes = val
        },
        update_tagihans(state, val) {
            state.tagihans = val
        },
        update_dialog_delete(state, val) {
            state.dialog_delete = val
        },
        update_note_delete(state, val) {
            state.note_delete = val
        },
        update_msg_delete(state, val) {
            state.msg_delete = val
        },
        update_nota_delete(state, val) {
            state.nota_delete = val
        },
        update_dialog_edit(state, val) {
            state.dialog_edit = val
        },
        update_note_edit(state, val) {
            state.note_edit = val
        },
        update_msg_edit(state, val) {
            state.msg_edit = val
        },
        update_nota_edit(state, val) {
            state.nota_edit = val
        },
        update_open_print_note(state, val) {
            state.open_print_note = val
        },
        update_idx(state, val) {
            state.idx = val
        },
        update_last_payments(state, val) {
            state.last_payments = val
        },
        update_ordertests(state, data) {
            state.ordertests = data
        },
        update_isauto(state, val) {
            state.isauto = val
        },
        update_suppliers(state, data) {
            state.suppliers = data
        },
        update_supplier(state, val) {
            state.supplier = val
        },
        update_paymenttypes(state, data) {
            state.paymenttypes = data
        },
        update_paymenttype(state, val) {
            state.paymenttype = val
        },
        update_paymenttypes_edit(state, data) {
            state.paymenttypes_edit = data
        },
        update_paymenttype_edit(state, val) {
            state.paymenttype_edit = val
        },
        update_cards(state, data) {
            state.cards = data
        },
        update_card(state, val) {
            state.card = val
        },
        update_edcs(state, data) {
            state.edcs = data
        },
        update_edc(state, val) {
            state.edc = val
        },
        update_accounts(state, data) {
            state.accounts = data
        },
        update_account(state, val) {
            state.account = val
        },
        update_bar_chx_all(state, val) {
            state.bar_chx_all = val
        },
        update_indeterminatex(state, val) {
            state.indeterminatex = val
        },
        update_selected_tagihan(state, val) {
            state.selected_tagihan = val
        }
    },
    actions: {
        async lookup_type(context, prm) {
            context.commit("update_lookup_status", 1)
            try {
                let resp = await api.lookup_type(one_token())
                if (resp.status != "OK") {
                    context.commit("update_lookup_status", 3)
                    context.commit("update_lookup_error_message", resp.message)
                } else {
                    context.commit("update_lookup_status", 2)
                    context.commit("update_lookup_error_message", "")
                    let data = {
                        records: resp.data.records,
                        total: resp.data.total
                    }
                    context.commit("update_types", data)

                }
            } catch (e) {
                context.commit("update_lookup_status", 3)
                context.commit("update_lookup_error_message", e.message)
            }
        },
        async lookup_banks(context) {
            context.commit("bill/update_get_data_status", 1, {
                root: true
            })
            try {
                let resp = await api.lookup_banks(one_token())
                if (resp.status != "OK") {
                    context.commit("bill/update_get_data_status", 3, {
                        root: true
                    })
                    context.commit("bill/update_get_data_error_message", resp.message, {
                        root: true
                    })
                } else {
                    context.commit("bill/update_get_data_status", 2, {
                        root: true
                    })
                    context.commit("bill/update_get_data_error_message", "", {
                        root: true
                    })
                    context.commit("update_paymenttypes", resp.data.records.paymenttypes)
                    context.commit("update_paymenttypes_edit", resp.data.records.paymenttypes_edit)
                }
            } catch (e) {
                context.commit("bill/update_get_data_status", 3, {
                    root: true
                })
                context.commit("bill/update_get_data_error_message", e.message, {
                    root: true
                })
                console.log(e)
            }
        },
        async lookup_accounts(context) {
            context.commit("update_lookup_status", 1)
            try {
                let resp = await api.lookup_accounts(one_token())
                if (resp.status != "OK") {
                    context.commit("update_lookup_status", 3)
                    context.commit("update_lookup_error_message", resp.message)
                } else {
                    context.commit("update_lookup_status", 2)
                    context.commit("update_lookup_error_message", "")
                    let data = {
                        records: resp.data.records,
                        total: resp.data.total
                    }
                    context.commit("update_accounts", data.records)
                }
            } catch (e) {
                context.commit("update_lookup_status", 3)
                context.commit("update_lookup_error_message", e.message)
            }
        },
        async searchcard(context, prm) {
            context.commit("update_lookup_status", 1)
            try {
                let resp = await api.searchcard(one_token(), prm)
                if (resp.status != "OK") {
                    context.commit("update_lookup_status", 3)
                } else {
                    context.commit("update_lookup_status", 2)
                    let data = {
                        records: resp.data.records,
                        total: resp.data.total
                    }
                    context.commit("update_cards", resp.data.records)
                }
            } catch (e) {
                context.commit("update_lookup_status", 3)
            }
        },
        async pay(context, prm) {
            context.commit("update_lookup_status", 1)
            try {
                prm.token = one_token()
                let resp = await api.pay(prm)
                if (resp.status != "OK") {
                    context.commit("update_lookup_status", 3)
                    context.commit("update_lookup_error_message", resp.message)
                } else {
                    context.commit("update_lookup_status", 2)
                    context.commit("update_lookup_error_message", "")

                    // let data = {
                    //     records: resp.data.records.types,
                    //     total: resp.data.total
                    // }

                    let xnumber = prm.xnumber
                    let id = prm.orderid

                    context.commit("update_disable_btn_pay", 'Y')
                    context.commit("update_idx", id)
                    context.commit("update_total_payment", 0)
                    context.commit("update_paynumber", "Pembayaran nomor <span style='color:red'>" + xnumber + "</span> telah berhasil")
                    context.commit("update_dialog_pay_success", true)

                    console.log("dialogtext", context.state.paynumber)
                    console.log("dialogsuccesss", context.state.dialog_pay_success)

                    context.commit("update_in_saving", false)
                    context.commit("update_xbayar", 0)

                    this.$store.dispatch("bill/search", {
                        supplier: context.rootState.bill.searchsupplier,
                        search: context.rootState.bill.searchnamelab,
                        status: context.rootState.bill.status.value,
                        current_page: context.rootState.bill.current_page,
                        startdate: context.rootState.bill.init_sdate,
                        enddate: context.rootState.bill.init_edate,
                        lastidx: id
                    }, { root: true })
                }
            } catch (e) {
                context.commit("update_lookup_status", 3)
                context.commit("update_lookup_error_message", e.message)
            }
        },
        async edit_note(context, prm) {
            context.commit("update_lookup_status", 1)
            try {
                prm.token = one_token()
                let resp = await api.edit_note(prm)
                if (resp.status != "OK") {
                    context.commit("update_lookup_status", 3)
                    context.commit("update_lookup_error_message", resp.message)
                } else {
                    context.commit("update_lookup_status", 2)
                    context.commit("update_lookup_error_message", "")
                    let xmsg = "Nota nomor <span style='color:green'>" + prm.note_number + "</span> telah diubah"
                    context.commit("update_msg_edit", xmsg)
                    //context.commit("update_dialog_edit", false)
                    context.commit("update_nota_edit", {})
                }
            } catch (e) {
                context.commit("update_lookup_status", 3)
                context.commit("update_lookup_error_message", e.message)
            }
        },
        async delete_note(context, prm) {
            context.commit("update_lookup_status", 1)
            try {
                prm.token = one_token()
                let resp = await api.delete_note(prm)
                if (resp.status != "OK") {
                    context.commit("update_lookup_status", 3)
                    context.commit("update_lookup_error_message", resp.message)
                } else {
                    context.commit("update_lookup_status", 2)
                    context.commit("update_lookup_error_message", "")
                    let xmsg = "Nota nomor <span style='color:red'>" + prm.nota.note_number + "</span> telah dihapus"
                    context.commit("update_msg_delete", xmsg)
                    context.commit("update_note_delete", '')
                    context.commit("update_nota_delete", {})
                }
            } catch (e) {
                context.commit("update_lookup_status", 3)
                context.commit("update_lookup_error_message", e.message)
            }
        },
        async selecttagihan(context,payload) {
            context.commit("bill/update_get_data_status", 1, {
                root: true
            })
            try {
                let prm = {};
                prm.token = one_token()
                prm.id = payload.id
                let resp = await api.selecttagihan(prm)
                if (resp.status != "OK") {
                    context.commit("bill/update_get_data_status", 3, {
                        root: true
                    })
                    context.commit("bill/update_get_data_error_message", resp.message, {
                        root: true
                    })
                } else {
                    context.commit("bill/update_get_data_status", 2, {
                        root: true
                    })
                    context.commit("bill/update_get_data_error_message", "", {
                        root: true
                    })
                    context.commit("update_tagihans", resp.data.records.tagihans)

                }
            } catch (e) {
                context.commit("bill/update_get_data_status", 3, {
                    root: true
                })
                context.commit("bill/update_get_data_error_message", e.message, {
                    root: true
                })
                console.log(e)
            }
        },
        async selectpaymenttype(context,payload) {
            context.commit("bill/update_get_data_status", 1, {
                root: true
            })
            try {
                let prm = {};
                prm.token = one_token()
                prm.search = payload.search
                let resp = await api.selectpaymenttype(prm)
                if (resp.status != "OK") {
                    context.commit("bill/update_get_data_status", 3, {
                        root: true
                    })
                    context.commit("bill/update_get_data_error_message", resp.message, {
                        root: true
                    })
                } else {
                    context.commit("bill/update_get_data_status", 2, {
                        root: true
                    })
                    context.commit("bill/update_get_data_error_message", "", {
                        root: true
                    })
                    context.commit("update_paymenttypes", resp.data.records.paymenttypes)
                    context.commit("update_paymenttypes_edit", resp.data.records.paymenttypes)

                }
            } catch (e) {
                context.commit("bill/update_get_data_status", 3, {
                    root: true
                })
                context.commit("bill/update_get_data_error_message", e.message, {
                    root: true
                })
                console.log(e)
            }
        },
        async selectsupplier(context,payload) {
            context.commit("bill/update_get_data_status", 1, {
                root: true
            })
            try {
                let prm = {};
                prm.token = one_token()
                prm.search = payload.search
                let resp = await api.selectsupplier(prm)
                if (resp.status != "OK") {
                    context.commit("bill/update_get_data_status", 3, {
                        root: true
                    })
                    context.commit("bill/update_get_data_error_message", resp.message, {
                        root: true
                    })
                } else {
                    context.commit("bill/update_get_data_status", 2, {
                        root: true
                    })
                    context.commit("bill/update_get_data_error_message", "", {
                        root: true
                    })
                    context.commit("update_suppliers", resp.data.records.suppliers)

                }
            } catch (e) {
                context.commit("bill/update_get_data_status", 3, {
                    root: true
                })
                context.commit("bill/update_get_data_error_message", e.message, {
                    root: true
                })
                console.log(e)
            }
        },
        async selectpaymenttypeold(context) {
            context.commit("bill/update_get_data_status", 1, {
                root: true
            })
            try {
                let resp = await api.selectpaymenttype(one_token())
                if (resp.status != "OK") {
                    context.commit("bill/update_get_data_status", 3, {
                        root: true
                    })
                    context.commit("bill/update_get_data_error_message", resp.message, {
                        root: true
                    })
                } else {
                    context.commit("bill/update_get_data_status", 2, {
                        root: true
                    })
                    context.commit("bill/update_get_data_error_message", "", {
                        root: true
                    })
                    context.commit("update_paymenttypes", resp.data.records.paymenttypes)
                    context.commit("update_paymenttypes_edit", resp.data.records.paymenttypes)

                    context.commit("update_paymenttype", resp.data.records.paymenttypes[0])
                }
            } catch (e) {
                context.commit("bill/update_get_data_status", 3, {
                    root: true
                })
                context.commit("bill/update_get_data_error_message", e.message, {
                    root: true
                })
                console.log(e)
            }
        },
        async selectcard(context) {
            context.commit("bill/update_get_data_status", 1, {
                root: true
            })
            try {
                let resp = await api.selectcard(one_token())
                if (resp.status != "OK") {
                    context.commit("bill/update_get_data_status", 3, {
                        root: true
                    })
                    context.commit("bill/update_get_data_error_message", resp.message, {
                        root: true
                    })
                } else {
                    context.commit("bill/update_get_data_status", 2, {
                        root: true
                    })
                    context.commit("bill/update_get_data_error_message", "", {
                        root: true
                    })
                    context.commit("update_cards", resp.data.records.banks)
                }
            } catch (e) {
                context.commit("bill/update_get_data_status", 3, {
                    root: true
                })
                context.commit("bill/update_get_data_error_message", e.message, {
                    root: true
                })
                console.log(e)
            }
        },
        async selectedc(context) {
            context.commit("bill/update_get_data_status", 1, {
                root: true
            })
            try {
                let resp = await api.selectedc(one_token())
                if (resp.status != "OK") {
                    context.commit("bill/update_get_data_status", 3, {
                        root: true
                    })
                    context.commit("bill/update_get_data_error_message", resp.message, {
                        root: true
                    })
                } else {
                    context.commit("bill/update_get_data_status", 2, {
                        root: true
                    })
                    context.commit("bill/update_get_data_error_message", "", {
                        root: true
                    })
                    context.commit("update_edcs", resp.data.records.accounts)
                    context.commit("update_accounts", resp.data.records.accounts)
                }
            } catch (e) {
                context.commit("bill/update_get_data_status", 3, {
                    root: true
                })
                context.commit("bill/update_get_data_error_message", e.message, {
                    root: true
                })
                console.log(e)
            }
        }
    }
}
