procurement-vuex
Version:
Commerce vuex module
116 lines (114 loc) • 3.9 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 purchaseOrderChangesetService from './purchase_order_changeset.service'
const { doPostOne,doFetchOne, doPatchOne, doPurchaseOrderReflectChangeset, doDeleteChangeset, doPurchaseOrderAutomateWithChangeset } = purchaseOrderChangesetService
const snakes = createHumps(snakeCase)
export default {
namespaced: true,
state: {
one:null,
inProgress: true,
},
getters: {
getField,
},
mutations: {
updateField,
setOne(state, one) {
state.one = one
},
inProgress(state, yesOrNo) {
state.inProgress = yesOrNo
}
},
actions: {
fetchOne: async ({ commit}, { changesetId }) => {
commit('inProgress', true);
try {
let details = await doFetchOne({ changesetId });
if(details){
commit('setOne', humps(details))
commit('inProgress', false)
return ({ data: humps(details) })
}else{
commit('inProgress', false)
return ({ data: {} })
}
} catch (err) {
throw 'error'
}
finally {
commit('inProgress', false);
}
},
updateChangeset: async ({ commit }, { changesetId, params }) => {
commit('inProgress', true);
try {
let changedData = await doPatchOne({ changesetId, params: snakes(params) });
return (humps(changedData))
} catch (err) {
throw 'error'
}
finally {
commit('inProgress', false);
}
},
createChangeset: async ({ commit }, { changesetOne }) => {
// debugger
commit('inProgress', true);
try {
let changedData = await doPostOne({ one: snakes(changesetOne) });
return (humps(changedData))
} catch (err) {
throw 'error'
}
finally {
commit('inProgress', false);
}
},
reflectChangesToPurchase: async ({ commit }, { wholesaleOrderChangesetId, purchaseOrderId, context }) => {
commit('inProgress', true);
try {
let changedData = await doPurchaseOrderReflectChangeset({ one: snakes({
wholesaleOrderChangesetId,
purchaseOrderId,
context
})
});
return (humps(changedData))
} catch (err) {
throw 'error'
}
finally {
commit('inProgress', false);
}
},
deleteCurrentChangeset: async ({ commit }, { changesetId }) => {
commit('inProgress', true);
try {
await doDeleteChangeset({ changesetId });
return ({ deleteSelected: true })
} catch (err) {
throw 'error'
}
finally {
commit('inProgress', false);
}
},
purchaseOrderAutomateWithChangeset: async ({ commit }, { poId, poChangesetId, specs }) => {
commit('inProgress', true)
try {
const resp = await doPurchaseOrderAutomateWithChangeset({ poId, poChangesetId, specs })
return humps(resp)
}
// eslint-disable-next-line no-useless-catch
catch (err) {
throw err
} finally {
commit('inProgress', false)
}
},
},
}