|
@@ -1,80 +1,88 @@
|
|
|
const state = {
|
|
|
- paymentTerms: [],
|
|
|
loadingPaymentTerms: true,
|
|
|
+ paymentTerms: [],
|
|
|
+ paymentMethods: ['Efectivo', 'Banco'],
|
|
|
selectedPaymentTerm: null,
|
|
|
paymentType: 'cash',
|
|
|
+ paymentMethod: 'Efectivo',
|
|
|
+ amountToPay: 0,
|
|
|
initialPayment: 0,
|
|
|
- paymentLines: []
|
|
|
+ amountResidual: 0,
|
|
|
+ paymentLines: [],
|
|
|
+ bankPaymentData: null
|
|
|
}
|
|
|
|
|
|
const getters = {
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} state
|
|
|
- * @param {*} payload
|
|
|
- */
|
|
|
paymentTerms(state) {
|
|
|
return state.paymentTerms
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} state
|
|
|
- */
|
|
|
+ paymentMethods(state) {
|
|
|
+ return state.paymentMethods.filter(p => p !== state.paymentMethod)
|
|
|
+ },
|
|
|
selectedPaymentTerm(state) {
|
|
|
return state.selectedPaymentTerm
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} state
|
|
|
- */
|
|
|
paymentType(state) {
|
|
|
return state.paymentType
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} state
|
|
|
- */
|
|
|
+ paymentMethod(state) {
|
|
|
+ return state.paymentMethod
|
|
|
+ },
|
|
|
+ amountToPay(state) {
|
|
|
+ return state.amountToPay
|
|
|
+ },
|
|
|
+ // amountToPayInOtherCurrencies(state, { settings, currencies, user, selectedCurrency, cartTotal }) {
|
|
|
+ // console.log(settings)
|
|
|
+ // console.log(currencies)
|
|
|
+ // console.log(user)
|
|
|
+ // console.log(selectedCurrency)
|
|
|
+ // console.log(cartTotal)
|
|
|
+
|
|
|
+
|
|
|
+ // let values = []
|
|
|
+
|
|
|
+ // if (!user || !selectedCurrency || cartTotal === 0) {
|
|
|
+ // return values
|
|
|
+ // }
|
|
|
+
|
|
|
+ // const base = currencies.find(c => c.id === user.company.currencyId)
|
|
|
+
|
|
|
+ // for (let currency of settings.currencies) {
|
|
|
+ // if (currency.id === selectedCurrency.id) {
|
|
|
+ // continue
|
|
|
+ // }
|
|
|
+
|
|
|
+ // const rate = base.rateSilent / currency.rateSilent
|
|
|
+
|
|
|
+ // values.push({
|
|
|
+ // currency,
|
|
|
+ // amount: cartTotal / rate,
|
|
|
+ // })
|
|
|
+ // }
|
|
|
+
|
|
|
+ // return values
|
|
|
+ // },
|
|
|
initialPayment(state) {
|
|
|
return state.initialPayment
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} state
|
|
|
- */
|
|
|
+ amountResidual(state) {
|
|
|
+ return state.amountResidual
|
|
|
+ },
|
|
|
paymentLines(state) {
|
|
|
return state.paymentLines
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} state
|
|
|
- */
|
|
|
loadingPaymentTerms(state) {
|
|
|
return state.loadingPaymentTerms
|
|
|
}
|
|
|
}
|
|
|
|
|
|
const mutations = {
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} state
|
|
|
- * @param {*} payload
|
|
|
- */
|
|
|
setPaymentTerms(state, payload) {
|
|
|
state.paymentTerms = [...payload]
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} state
|
|
|
- * @param {*} payload
|
|
|
- */
|
|
|
setLoadingPaymentTerms(state, payload) {
|
|
|
state.loadingPaymentTerms = !!payload
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} state
|
|
|
- * @param {*} payload
|
|
|
- */
|
|
|
autoSelectPaymentTerm(state, payload) {
|
|
|
if (!payload || payload === 'cash') {
|
|
|
state.selectedPaymentTerm = state.paymentTerms.find(t => t.lines.length === 1 && t.lines[0].days === 0) || state.paymentTerms.find(t => t.lines.length === 1 && t.lines[0].days >= 0)
|
|
@@ -82,40 +90,55 @@ const mutations = {
|
|
|
state.selectedPaymentTerm = state.paymentTerms.find(t => t.lines[0].days > 0)
|
|
|
}
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} state
|
|
|
- * @param {*} payload
|
|
|
- */
|
|
|
- setSelectedPaymentTerm(state, payload) {
|
|
|
- if (!payload) {
|
|
|
- state.selectedPaymentTerm = payload
|
|
|
+ setSelectedPaymentTerm(state, termId) {
|
|
|
+ if (!termId) {
|
|
|
+ state.selectedPaymentTerm = null
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- state.selectedPaymentTerm = state.paymentTerms.find(item => item.id === payload)
|
|
|
+ state.selectedPaymentTerm = state.paymentTerms.find(item => item.id === termId)
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} state
|
|
|
- * @param {*} payload
|
|
|
- */
|
|
|
setPaymentType(state, payload) {
|
|
|
state.paymentType = payload
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} state
|
|
|
- * @param {*} payload
|
|
|
- */
|
|
|
+ setPaymentMethod(state, payload) {
|
|
|
+ state.paymentMethod = payload
|
|
|
+ },
|
|
|
+ setAmountToPay(state, amount) {
|
|
|
+ if (!this.getters.baseCurrency) {
|
|
|
+ this.amountToPay = amount
|
|
|
+
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ let rate = 1
|
|
|
+
|
|
|
+ if (this.getters.baseCurrency.id !== this.getters.selectedCurrency.id) {
|
|
|
+ rate = this.getters.baseCurrency.rateSilent / this.getters.selectedCurrency.rateSilent
|
|
|
+ }
|
|
|
+
|
|
|
+ state.amountToPay = amount / rate
|
|
|
+ },
|
|
|
+ setAmountResidual(state) {
|
|
|
+ state.amountResidual = state.initialPayment < state.amountToPay ? 0 : state.initialPayment - state.amountToPay
|
|
|
+ },
|
|
|
+ computePaymentInCurrency(state, { fromSymbol, toSymbol }) {
|
|
|
+ const fromCurrency = this.getters.currencies.find(c => c.symbol === fromSymbol)
|
|
|
+ const toCurrency = this.getters.currencies.find(c => c.symbol === toSymbol)
|
|
|
+
|
|
|
+ if (!fromCurrency || !toCurrency) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ const rate = fromCurrency.rateSilent / toCurrency.rateSilent
|
|
|
+
|
|
|
+ state.amountToPay = state.amountToPay / rate
|
|
|
+ state.initialPayment = state.initialPayment / rate
|
|
|
+ state.amountResidual = state.amountResidual / rate
|
|
|
+ },
|
|
|
setInitialPayment(state, payload) {
|
|
|
state.initialPayment = payload
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} state
|
|
|
- * @param {*} payload
|
|
|
- */
|
|
|
setPaymentLines(state, payload) {
|
|
|
state.paymentLines = []
|
|
|
|
|
@@ -166,25 +189,25 @@ const mutations = {
|
|
|
|
|
|
totals = []
|
|
|
}
|
|
|
+ },
|
|
|
+ setBankPaymentData(state, bankPaymentData) {
|
|
|
+ state.bankPaymentData = bankPaymentData
|
|
|
}
|
|
|
}
|
|
|
|
|
|
const actions = {
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} param0
|
|
|
- * @param {*} payload
|
|
|
- */
|
|
|
initPaymentTerms({ commit }, payload) {
|
|
|
commit('setPaymentTerms', payload)
|
|
|
commit('autoSelectPaymentTerm')
|
|
|
commit('setLoadingPaymentTerms', false)
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} param0
|
|
|
- * @param {*} payload
|
|
|
- */
|
|
|
+ autoSelectPaymentTerm(state, payload) {
|
|
|
+ if (!payload || payload === 'cash') {
|
|
|
+ state.paymentTerm = state.paymentTerms.find(t => t.lines.length === 1 && t.lines[0].days === 0) || state.paymentTerms.find(t => t.lines.length === 1 && t.lines[0].days >= 0)
|
|
|
+ } else {
|
|
|
+ state.paymentTerm = state.paymentTerms.find(t => t.lines[0].days > 0)
|
|
|
+ }
|
|
|
+ },
|
|
|
selectPaymentTerm({ commit }, payload) {
|
|
|
if (!payload) {
|
|
|
return
|
|
@@ -192,46 +215,52 @@ const actions = {
|
|
|
|
|
|
commit('setSelectedPaymentTerm', payload)
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} param0
|
|
|
- * @param {*} payload
|
|
|
- */
|
|
|
- changePaymentType({ commit }, payload) {
|
|
|
+ changePaymentType({ getters, commit, dispatch }, payload) {
|
|
|
commit('setPaymentType', payload),
|
|
|
commit('autoSelectPaymentTerm', payload)
|
|
|
commit('setInitialPayment', 0)
|
|
|
commit('setPaymentLines')
|
|
|
+
|
|
|
+ if (getters.paymentType === 'credit') {
|
|
|
+ dispatch('computePaymentLines')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ changePaymentMethod({ commit, dispatch }, methodName) {
|
|
|
+ if (methodName === 'Banco') {
|
|
|
+ dispatch('toggleBankPayment')
|
|
|
+ }
|
|
|
+
|
|
|
+ commit('setPaymentMethod', methodName)
|
|
|
+ dispatch('changeInitialPayment', 0)
|
|
|
+ },
|
|
|
+ changeAmountToPay({ commit }, amount) {
|
|
|
+ commit('setAmountToPay', amount)
|
|
|
+ },
|
|
|
+ changeInitialPayment({ commit, dispatch, getters }, initialPayment) {
|
|
|
+ commit('setInitialPayment', initialPayment)
|
|
|
+ commit('setAmountResidual')
|
|
|
+
|
|
|
+ if (getters.paymentType === 'credit') {
|
|
|
+ dispatch('computePaymentLines')
|
|
|
+ }
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} param0
|
|
|
- * @param {*} payload
|
|
|
- */
|
|
|
- changeInitialPayment({ commit }, payload) {
|
|
|
- commit('setInitialPayment', payload)
|
|
|
- },
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} param0
|
|
|
- * @param {*} payload
|
|
|
- */
|
|
|
computePaymentLines({ commit, getters }) {
|
|
|
commit('setPaymentLines', {
|
|
|
date: getters.date,
|
|
|
total: getters.cartTotal
|
|
|
})
|
|
|
},
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param {*} param0
|
|
|
- */
|
|
|
resetPayment({ commit }) {
|
|
|
commit('setLoadingPaymentTerms', true)
|
|
|
commit('setPaymentTerms', [])
|
|
|
commit('setSelectedPaymentTerm', null)
|
|
|
commit('setPaymentType', 'cash')
|
|
|
+ commit('setPaymentMethod', 'Efectivo')
|
|
|
+ commit('setAmountToPay', 0)
|
|
|
commit('setInitialPayment', 0)
|
|
|
+ commit('setAmountResidual')
|
|
|
+
|
|
|
+ commit('autoSelectPaymentTerm')
|
|
|
}
|
|
|
}
|
|
|
|