procurement-vuex
Version:
Commerce vuex module
83 lines (77 loc) • 2.58 kB
JavaScript
import { snakeCase } from 'lodash'
import humps from 'lodash-humps'
import createHumps from 'lodash-humps/lib/createHumps'
import { getField, updateField } from 'vuex-map-fields'
import paymentRecordService from './purchase_order_payment_record.service'
const { doPostOne, doPatchOne } = paymentRecordService
const snakes = createHumps(snakeCase)
export default {
namespaced: true,
state: {
one: null,
inProgress: true,
paymentReport: [],
currentPaymentItem: null
},
getters: {
getField,
},
mutations: {
updateField,
setOne(state, one) {
state.one = one;
},
setCurrentPaymentItem(state, item) {
state.currentPaymentItem = item;
},
inProgress(state, yesOrNo) {
state.inProgress = yesOrNo
},
},
actions: {
new({ commit }, { appId, purchaseOrderId, paymentTerm, currencyIso3, recordDate, purchaseOrderPaymentTermId, amount }) {
commit('inProgress', false);
// debugger
commit('setOne', {
"appId": appId,
"purchaseOrderId": purchaseOrderId,
"paymentTerm": paymentTerm,
"currencyIso3": currencyIso3,
"recordDate": recordDate,
"purchaseOrderPaymentTermId": purchaseOrderPaymentTermId,
"amount": amount
});
},
save: async({ commit, state }, { referenceId, referenceType }) => {
commit('inProgress', true)
// debugger
try {
// debugger
if (undefined === state.one.id) {
let postParams = snakes(Object.assign({}, state.one, { referenceId: referenceId,
referenceType: referenceType }))
let payment= await doPostOne(postParams)
commit('inProgress', false)
return ({ new: true,payment:payment })
} else {
let payment=await doPatchOne(snakes(state.one))
commit('inProgress', false)
return ({ update: true,payment:payment })
}
}
// eslint-disable-next-line no-useless-catch
catch (err) {
throw err
}
finally {
commit('inProgress', false)
}
},
setCurrentPaymentItem({ commit }, { currentItem }) {
commit('setCurrentPaymentItem', currentItem);
},
setPaymentOne({ commit }, { item }) {
commit('setOne', item);
},
},
}