UNPKG

procurement-vuex

Version:
370 lines (352 loc) 12.3 kB
import { snakeCase } from "lodash"; import humps from "lodash-humps"; import createHumps from "lodash-humps/lib/createHumps"; import { getField, updateField } from "vuex-map-fields"; import { formateDateToYMDFormat } from './common.service'; import purchaseOrderSnapshotService from "./purchase_order_snapshot.service"; const { doFetchOne,doPostPurchaseOrderGetSnapshot } = purchaseOrderSnapshotService; const snakes = createHumps(snakeCase); export default { namespaced: true, state: { orderSnapshotObj:null, inProgress: false, snapShotFilteredItems: [], seasonList: [], areaList: [], zoneList: [], poNumberList: [], orderMasterSnapshotObj:null, itemsProcessingCount: { processed: 0, notProcessed: 0 }, }, getters: { getField, }, mutations: { updateField, inProgress(state, yesOrNo) { state.inProgress = yesOrNo; }, setSnapshotObj(state, one) { state.orderSnapshotObj = one; }, setSnapshotMasterObj(state, one) { state.orderMasterSnapshotObj = one; }, setProcessItemCount(state, flagObj) { if (flagObj.isNewProcessed) { state.itemsProcessingCount.processed += 1; state.itemsProcessingCount.notProcessed -= 1; } else { state.itemsProcessingCount.processed -= 1; state.itemsProcessingCount.notProcessed += 1; } }, setSnapShotItems(state) { if ( state.orderSnapshotObj && state.orderSnapshotObj.items && state.orderSnapshotObj.items.length ) { state.snapShotFilteredItems = []; if ( state.orderSnapshotObj && state.orderSnapshotObj.details && state.orderSnapshotObj.details.itemsFormat === "variant_size_color" && state.orderSnapshotObj.items ) { const list = state.orderSnapshotObj.items; const dataList = []; state.seasonList = []; state.poNumberList = []; state.areaList = []; state.zoneList = []; state.itemsProcessingCount = { processed: 0, notProcessed: 0 }; list.map((item) => { if (item.icpData) { if ( item.icpData.poNumber && state.poNumberList.indexOf(item.icpData.poNumber) === -1 ){ state.poNumberList.push(item.icpData.poNumber); } if ( item.icpData.season && state.seasonList.indexOf(item.icpData.season) === -1 ) state.seasonList.push(item.icpData.season); if ( item.icpData.area && state.areaList.indexOf(item.icpData.area) === -1 ) state.areaList.push(item.icpData.area); if ( item.icpData.zoneCode && state.zoneList.indexOf(item.icpData.zone) === -1 ) state.zoneList.push(item.icpData.zoneCode); } if (item.variants) { for (let i = 0; i < item.variants.length; i++) { const isExist = localStorage.getItem( item.id + "_" + item.variants[i].category + "_" + item.variants[i].size + "_" + item.variants[i].color ); if (isExist === "true" || isExist === true) { item.variants[i].processedItem = true; state.itemsProcessingCount.processed += 1; } else { item.variants[i].processedItem = false; state.itemsProcessingCount.notProcessed += 1; } item.variants[i].id = item.id; item.variants[i].name = item.name; item.variants[i].indexKey = item.name + "-" + item.variants[i].color + "-" + item.variants[i].size + "-" + item.variants[i].category + i; item.variants[i].poNumber = item.icpData ? item.icpData.poNumber : ''; item.variants[i].season = item.icpData ? item.icpData.season : []; item.variants[i].area = item.icpData ? item.icpData.area : []; item.variants[i].zoneCode = item.icpData ? item.icpData.zoneCode : []; item.variants[i].startDate = item.shipmentStartDate; item.variants[i].endDate = item.shipmentCancelDate; dataList.push(item.variants[i]); // 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.snapShotFilteredItems = dataList; state.originalSnapShotItems = dataList; } if ( state.orderSnapshotObj && state.orderSnapshotObj.details && state.orderSnapshotObj.details.itemsFormat === "sku" && state.orderSnapshotObj.items ) { state.snapShotFilteredItems = state.orderSnapshotObj.items; state.originalSnapShotItems = state.orderSnapshotObj.items; } } }, searchSnapShotItems(state, filterObj) { if ( filterObj.styleRef || filterObj.season || filterObj.poNumber || filterObj.area || filterObj.zone || filterObj.shipmentDates || filterObj.color || filterObj.processedItem ) { state.snapShotFilteredItems = state.originalSnapShotItems; if (filterObj.styleRef) { let items = []; state.snapShotFilteredItems.filter((variant) => { if ( variant.name && variant.name .toLowerCase() .search(filterObj.styleRef.toLowerCase()) !== -1 ) items.push(variant); }); state.snapShotFilteredItems = items; } if (filterObj.poNumber) { let items = []; state.snapShotFilteredItems.filter((variant) => { if ( variant.poNumber && variant.poNumber .toLowerCase() .search(filterObj.poNumber.toLowerCase()) !== -1 ){ items.push(variant); } }); state.snapShotFilteredItems = items; } if (filterObj.color) { let items = []; state.snapShotFilteredItems.filter((variant) => { if ( variant.color && variant.color .toLowerCase() .search(filterObj.color.toLowerCase()) !== -1 ) items.push(variant); }); state.snapShotFilteredItems = items; } if (filterObj.area) { let items = []; state.snapShotFilteredItems.filter((variant) => { if (variant.area === filterObj.area) items.push(variant); }); state.snapShotFilteredItems = items; } if (filterObj.season) { let items = []; state.snapShotFilteredItems.filter((variant) => { if (variant.season === filterObj.season) items.push(variant); }); state.snapShotFilteredItems = items; } if (filterObj.zone) { let items = []; state.snapShotFilteredItems.filter((variant) => { if (variant.zoneCode === filterObj.zone) items.push(variant); }); state.snapShotFilteredItems = items; } if (filterObj.processedItem) { if (filterObj.processedItem !== "all") { state.itemsProcessingCount = { processed: 0, notProcessed: 0 }; let items = []; state.snapShotFilteredItems.filter((variant) => { const isExist = localStorage.getItem( variant.id + "_" + variant.category + "_" + variant.size + "_" + variant.color ); if (isExist === "true" || isExist === true) { variant.processedItem = true; state.itemsProcessingCount.processed += 1; } else { variant.processedItem = false; state.itemsProcessingCount.notProcessed += 1; } if (filterObj.processedItem == "processed") { if (variant.processedItem) items.push(variant); } else if (filterObj.processedItem == "not processed") { if (!variant.processedItem) items.push(variant); } }); state.snapShotFilteredItems = items; } } if (filterObj.shipmentDates) { let items = []; state.snapShotFilteredItems.filter((variant) => { if ( variant.startDate === formateDateToYMDFormat(filterObj.shipmentDates[0]) && variant.endDate === formateDateToYMDFormat(filterObj.shipmentDates[1]) ) items.push(variant); }); state.snapShotFilteredItems = items; } state.snapShotFilteredItems = [...new Set(state.snapShotFilteredItems)]; } // filtered onlly current shipment window else if (filterObj.currentShippingWindow) { let items = []; state.snapShotFilteredItems.filter((variant) => { if ( variant.startDate === filterObj.currentShippingWindow.startDate && variant.endDate === filterObj.currentShippingWindow.cancelDate ) items.push(variant); }); state.snapShotFilteredItems = items; } // send all items if no filter else { state.snapShotFilteredItems = []; state.snapShotFilteredItems = state.originalSnapShotItems; } }, }, actions: { fetchOne: async ( { commit }, { purchaseOrderId,specs } ) => { commit("inProgress", true); try { let snapshot = await doPostPurchaseOrderGetSnapshot({ purchaseOrderId,specs }); if (snapshot) { commit("setSnapshotObj", humps(snapshot)); commit("setSnapshotMasterObj", (snapshot)); commit("inProgress", false); return humps(snapshot); } else { return null; } } catch (err) { throw "error"; } finally { commit("inProgress", false); } }, snapShotOrderItemsForFilter: ({ commit }, {}) => { commit("setSnapShotItems"); }, searchSnapShotItems: ( { commit }, { season, poNumber, area, zone, styleRef, shipmentDates, color, currentShippingWindow, processedItem, } ) => { commit("searchSnapShotItems", { season, poNumber, area, zone, styleRef, shipmentDates, color, currentShippingWindow, processedItem, }); }, changeProcessItemCount: ({ commit }, { isNewProcessed }) => { commit("setProcessItemCount", { isNewProcessed }); } } };