wholesale-vuex
Version:
Commerce vuex module
262 lines (255 loc) • 12.4 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 wholesalePackingListService from './wholesale_packing_list.service'
const { doPostPackingListItems, doFetchPackingItemsList, doDeleteSelectedPackingListItems } = wholesalePackingListService
const snakes = createHumps(snakeCase)
const _ = require('lodash')
export default {
namespaced: true,
state: {
one: null,
inProgress: true,
packingItemsList: [],
orderItemVariantsList: [],
originalOrderItemVariants: [],
exceedQuantitySku: []
},
getters: {
getField,
},
mutations: {
updateField,
setOne(state, one) {
state.one = one;
},
inProgress(state, yesOrNo) {
state.inProgress = yesOrNo
},
setPackingListItems(state, list) {
state.packingItemsList = []
state.packingItemsList = list
},
// setOrderItemsVariantList(state, data) {
// state.orderItemVariantsList = []
// if (data.salesOrderItemList && data.salesOrderItemList.length) {
// const dataList = []
// data.salesOrderItemList.map((item) => {
// for (let i = 0; i < item.variants.length; i++) {
// item.variants[i].id = item.id
// item.variants[i].name = item.name
// dataList.push(item.variants[i])
// }
// })
// state.originalOrderItemVariants = _.cloneDeep(dataList)
// state.orderItemVariantsList = _.cloneDeep(dataList)
// }
// },
// setItemListAsPerQuantity(state, data) {
// state.originalOrderItemVariants.filter((originalVrnt) => {
// let editedItem = _.cloneDeep(data.item)
// if (originalVrnt.sku === editedItem.sku) {
// let qty = 0
// data.variantsItemList.filter((variant) => {
// if (variant.sku === editedItem.sku)
// qty += Number(variant.qty)
// })
// if (Number(originalVrnt.qty) > Number(qty)) {
// editedItem.qty = Number(originalVrnt.qty) - Number(qty)
// data.variantsItemList.push(editedItem)
// }
// if (Number(originalVrnt.qty) >= Number(qty)) {
// if(state.exceedQuantitySku.length){
// let newSkus = []
// newSkus = state.exceedQuantitySku.filter((item)=>{
// return item != originalVrnt.sku;
// });
// state.exceedQuantitySku = []
// state.exceedQuantitySku = newSkus
// }
// }
// // edited qty is greater then delete that record from list
// if (Number(originalVrnt.qty) < Number(qty)) {
// state.exceedQuantitySku.push(originalVrnt.sku)
// // let cnt = 0
// // let newList = data.variantsItemList.filter((variant) => {
// // if (variant.sku === editedItem.sku) {
// // cnt++
// // if (cnt === 1) {
// // return variant
// // }
// // }
// // else
// // return variant
// // })
// // state.orderItemVariantsList = []
// // state.orderItemVariantsList = newList
// }
// }
// })
// },
// checkExceedQuantity(state, data) {
// state.originalOrderItemVariants.filter((originalVrnt) => {
// let editedItem = _.cloneDeep(data.item)
// if (originalVrnt.sku === editedItem.sku) {
// let qty = 0
// data.variantsItemList.filter((variant) => {
// if (variant.sku === editedItem.sku)
// qty += Number(variant.qty)
// })
// if (Number(originalVrnt.qty) >= Number(qty)) {
// if(state.exceedQuantitySku.length){
// let newSkus = []
// newSkus = state.exceedQuantitySku.filter((item)=>{
// return item != originalVrnt.sku;
// });
// state.exceedQuantitySku = []
// state.exceedQuantitySku = newSkus
// }
// }
// // edited qty is greater then delete that record from list
// if (Number(originalVrnt.qty) < Number(qty)) {
// state.exceedQuantitySku.push(originalVrnt.sku)
// }
// }
// })
// if(state.exceedQuantitySku && state.exceedQuantitySku.length){
// state.exceedQuantitySku = [...new Set(state.exceedQuantitySku)]
// }
// },
modifyPackingListItems(state, data) {
state.packingItemsList = []
if (data.packingList && data.dataList && data.dataList.length) {
let orderItemIds = []
// storing unique ids
data.dataList.filter((item) => {
if (!orderItemIds.includes(item.id)) {
orderItemIds.push(item.id)
}
})
// storing same ids data in variants
orderItemIds.filter((uniqueId) => {
let packedItem = {
appId: data.packingList.appId,
providerBusinessEntityId: data.packingList.providerBusinessEntityId,
salesteamServiceId: data.packingList.salesteamServiceId,
purchaserBusinessEntityId: data.packingList.purchaserBusinessEntityId,
packingListId: data.packingList.id
}
let variants = []
data.dataList.filter((item) => {
if (uniqueId === item.id) {
if (!item.notIncluded || item.notIncluded === null) {
if (data.itemsFormat === 'variant_size_color') {
variants.push({
sku: item.sku,
name: item.name,
size: item.size,
color: item.color,
qty: item.qty,
boxNumber: item.boxNumber,
hsCode: item.hsCode,
unitPrice: item.wholesalePrice,
totalPrice: Number(item.qty) * Number(item.wholesalePrice)
})
} else if (data.itemsFormat === 'sku') {
//for (let i = 0; i < item.variants.length; i++) {
variants.push({
sku: item.sku,
name: item.name,
size: item.size,
color: item.color,
qty: item.qty,
boxNumber: item.boxNumber,
hsCode: item.hsCode,
unitPrice: item.wholesalePrice,
totalPrice: Number(item.qty) * Number(item.wholesalePrice)
})
//}
}
}
}
})
//assinging a varinats to new record
packedItem.variants = variants
// collecting records for unique ids as per api requirement
state.packingItemsList.push(packedItem)
})
state.exceedQuantitySku = []
}
},
},
actions: {
// New packing list changes
savePackingListItems: async ({ commit, state }, { packingList, dataList, itemsFormat }) => {
commit('modifyPackingListItems', { dataList, packingList: humps(packingList), itemsFormat });
if (state.packingItemsList.length) {
let packingItemList = await doPostPackingListItems(snakes(Object.assign([], state.packingItemsList)))
commit('inProgress', false)
return ({ new: true, packingItemList: packingItemList })
}
},
// new({ commit }, { salesOrderOne }) {
// commit('inProgress', false);
// commit('setOne', {
// appId: salesOrderOne.appId,
// providerBusinessEntityId: salesOrderOne.providerBusinessEntityId,
// purchaserBusinessEntityId: salesOrderOne.purchaserBusinessEntityId,
// salesteamServiceId : salesOrderOne.salesteamServiceId,
// packingListId: '',
// variants: [],
// });
// },
// fetchVariantsList: async ({ commit }, { salesOrderItemList }) => {
// commit('setOrderItemsVariantList', { salesOrderItemList });
// },
// modifyListAsPerQuantity: async ({ commit }, { item, variantsItemList }) => {
// commit('setItemListAsPerQuantity', { item, variantsItemList });
// },
// checkExceedQuantity: async ({ commit }, { item, variantsItemList }) => {
// commit('checkExceedQuantity', { item, variantsItemList });
// },
// savePackingItemList: async ({ commit, state }, { packingList, dataList, itemsFormat }) => {
// commit('modifyPackingListItems', { dataList, packingList: humps(packingList), itemsFormat });
// if (state.packingItemsList.length) {
// let packingItemList = await doPostPackingListItems(snakes(Object.assign([], state.packingItemsList)))
// commit('inProgress', false)
// return ({ new: true, packingItemList: packingItemList })
// }
// },
// fetchList: async ({ commit }, { appId, packingListId }) => {
// commit('inProgress', true);
// try {
// const list = await doFetchPackingItemsList({ appId, packingListId });
// if (list) {
// commit('setPackingListItems', humps((list)));
// commit('inProgress', false);
// return { packingItemList: humps(list) }
// } else {
// commit('setPackingListItems', []);
// commit('inProgress', false);
// }
// }
// // eslint-disable-next-line no-useless-catch
// catch (err) {
// throw err
// }
// finally {
// commit('inProgress', false)
// }
// },
// deletePackingListItems: async ({ commit }, { packingListId }) => {
// commit('inProgress', true);
// try {
// await doDeleteSelectedPackingListItems({ packingListId });
// return ({ deleteSelected: true })
// } catch (err) {
// return ({ deleteSelected: false })
// }
// finally {
// commit('inProgress', false);
// }
// },
},
}