const state = { paymentTerms: { default: [], values: [] }, loadingPaymentTerms: { default: false, value: true }, amountPaid: { default: 0, value: 0 }, amountResidual: { default: 0, value: 0 } } const getters = { /** * * @param {*} state * @param {*} payload */ paymentTerms(state) { return state.paymentTerms.values }, /** * * @param {*} state */ amountPaid(state) { return state.amountPaid.value }, /** * * @param {*} state */ amountResidual(state) { return state.amountResidual.value }, /** * * @param {*} state */ loadingPaymentTerms(state) { return state.loadingPaymentTerms.value } } const mutations = { /** * * @param {*} state * @param {*} payload */ setPaymentTerms(state, payload) { state.paymentTerms.values = [...payload] }, /** * * @param {*} state * @param {*} payload */ setAmountPaid(state, payload) { state.amountPaid.value = payload }, /** * * @param {*} state * @param {*} payload */ computeAmountResidual(state, payload) { state.amountResidual.value = payload.paymentAmount >= payload.totalAmount ? payload.paymentAmount - payload.totalAmount : 0 }, /** * * @param {*} state * @param {*} payload */ setAmountResidual(state, payload) { state.amountResidual.value = payload }, /** * * @param {*} state * @param {*} payload */ setLoadingPaymentTerms(state, payload) { state.paymentTerms.value = !!payload } } const actions = { /** * * @param {*} param0 * @param {*} payload */ initPaymentTerms({ commit }, payload) { commit('setPaymentTerms', payload) commit('setLoadingPaymentTerms', false) }, /** * * @param {*} param0 * @param {*} payload */ changeAmountPaid({ commit, getters }, payload) { commit('setAmountPaid', payload) commit('computeAmountResidual', { totalAmount: getters.cartTotal, paymentAmount: payload }) } } export default { state, getters, mutations, actions }