procurement-vuex
Version:
Commerce vuex module
272 lines (259 loc) • 8.37 kB
JavaScript
import purchaseOrderItemService from "./purchase_order_item.service";
const { doFetchList, doFetchStyleRefItems, doSearchByStyleRef } =
purchaseOrderItemService;
import humps from "lodash-humps";
export default {
namespaced: true,
state: {
list: [],
dateWiseiList: [],
selected: [],
recordsCount: 0,
inProgress: false,
error: null,
styleRefList: [],
styleRefListItems: [],
searchItemInList: [],
originalItemsList: []
},
mutations: {
inProgress(state, yesOrNo) {
state.inProgress = yesOrNo;
},
setStyleRefItems(state, list) {
if (list.length > 0) {
let arrayMap = list
.map((obj) => obj.variantsRefCode)
.filter((obj) => obj);
state.styleRefListItems = [...new Set(arrayMap)];
} else {
state.styleRefListItems = [];
}
},
setList(state, list) {
/* state.selected = [];
for (let i in state.list) {
state.selected.push(false);
state.selected[i] = false;
}*/
state.list = list;
/* let newData=[...list];
state.dateWiseiList=[];
for(var i=0 ; i < newData.length ;i++)
{
if (newData && newData[i].shipmentStartDate)
{
var newObj={};
newObj['shipmentStartDate']=newData[i].shipmentStartDate;
newObj['shipmentCancelDate']=newData[i].shipmentCancelDate;
newObj['list']=[];
(newObj.list).push(newData[i]);
state.dateWiseiList.push(newObj);
for(var j= i+1 ; j < newData.length ;j++)
{
if(state.dateWiseiList[i] && state.dateWiseiList[i].shipmentStartDate === newData[j].shipmentStartDate && state.dateWiseiList[i].shipmentCancelDate ===newData[j].shipmentCancelDate)
{
(state.dateWiseiList[i].list).push(newData[j]);
newData[j]={};
}
}
}
}*/
// console.log('newarry',JSON.stringify(newarry));
if (list.length > 0) {
let arrayMap = state.list.map((obj) => obj.variantsRefCode);
state.styleRefList = [...new Set(arrayMap)];
} else {
state.styleRefList = [];
}
},
setItemsVariantsList(state) {
if (state.list && state.list.length) {
let itemsFormat = state.list[0].format;
if (itemsFormat === "variant_size_color") {
const dataList = [];
state.list.map((item) => {
if (item.variants) {
for (let i = 0; i < item.variants.length; i++) {
item.variants[i].id = item.id;
item.variants[i].name = item.name;
if (item.variants[i].qty > 0) {
dataList.push(item.variants[i]);
}
const checkVariantsQty = item.variants.filter(
(val) => val.qty > 0
);
if (checkVariantsQty.length === 0) {
if (dataList.length > 0) {
for (let j = 0; j < dataList.length; j++) {
const checkDataExist = dataList
.map((val) => val.id)
.includes(item.variants[i].id);
if (
dataList[j].id !== item.variants[i].id &&
item.variants[i].qty === "0" &&
!checkDataExist
) {
dataList.push(item.variants[i]);
}
}
} else {
dataList.push(item.variants[i]);
}
}
}
}
});
state.searchItemInList = dataList;
state.originalItemsList = dataList;
} else {
state.searchItemInList = state.list;
state.originalItemsList = state.list;
}
state.recordsCount = state.searchItemInList.length;
}
},
setListCount(state, number) {
state.recordsCount = number;
},
setSearchItemInList(state, searchParams) {
state.searchItemInList = state.originalItemsList;
if (searchParams.name || searchParams.color) {
if (searchParams.name) {
let items = [];
state.searchItemInList.filter((variant) => {
if (
variant.name &&
variant.name
.toLowerCase()
.search(searchParams.name.toLowerCase()) !== -1
)
items.push(variant);
});
state.searchItemInList = items;
}
if (searchParams.color) {
let items = [];
state.searchItemInList.filter((variant) => {
if (
variant.color &&
variant.color
.toLowerCase()
.search(searchParams.color.toLowerCase()) !== -1
)
items.push(variant);
});
state.searchItemInList = items;
}
state.recordsCount = state.searchItemInList.length;
}
},
},
actions: {
fetchList: async (
{ commit },
{ nameLike, purchaseOrderId, appId, pageNumber, limit, date, styleRef }
) => {
commit("inProgress", true);
try {
const offset = (pageNumber - 1) * limit;
const response = await doFetchList({
nameLike,
purchaseOrderId,
appId,
limit,
offset,
date,
styleRef,
});
if (response.range !== null) {
const recordsCount = response.range.split("/");
commit("setListCount", Number(recordsCount[1]));
const list = await response.data;
if (list) {
commit("setList", humps(list));
commit("inProgress", false);
return humps(list);
} else commit("setList", []);
commit("inProgress", false);
return [];
}
} catch (err) {
// eslint-disable-next-line no-useless-catch
throw err;
} finally {
commit("inProgress", false);
}
},
searchInItemList: async ({ commit }, { name, color }) => {
commit("setSearchItemInList", { name, color });
},
setItemsVariantsList: async ({ commit }) =>{
commit("setItemsVariantsList");
},
fetchStyleRefItems: async (
{ commit },
{ nameLike, purchaseOrderId, appId, styleRefItems }
) => {
commit("inProgress", true);
try {
const response = await doFetchStyleRefItems({
nameLike,
purchaseOrderId,
appId,
styleRefItems,
});
if (response) {
const list = await response;
if (list) {
commit("setStyleRefItems", humps(list));
commit("inProgress", false);
return humps(list);
} else commit("setStyleRefItems", []);
commit("inProgress", false);
return [];
}
} catch (err) {
// eslint-disable-next-line no-useless-catch
throw err;
} finally {
commit("inProgress", false);
}
},
searchByStyleRef: async (
{ commit },
{ nameLike, purchaseOrderId, appId, pageNumber, limit, date, styleRef }
) => {
commit("inProgress", true);
try {
const offset = (pageNumber - 1) * limit;
const response = await doSearchByStyleRef({
nameLike,
purchaseOrderId,
appId,
limit,
offset,
date,
styleRef,
});
if (response.range !== null) {
const recordsCount = response.range.split("/");
commit("setListCount", Number(recordsCount[1]));
const list = await response.data;
if (list) {
commit("setList", humps(list));
commit("inProgress", false);
return humps(list);
} else commit("setList", []);
commit("inProgress", false);
return [];
}
} catch (err) {
// eslint-disable-next-line no-useless-catch
throw err;
} finally {
commit("inProgress", false);
}
},
},
};