UNPKG

procurement-vuex

Version:
493 lines (467 loc) 16.7 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 purchaseOrderService from "./purchase_order_snapshot.service"; const { doPurchaseOrderApplyChanges } = purchaseOrderService const snakes = createHumps(snakeCase); export default { namespaced: true, state: { masterOne:null, details:null, shipments:null, orderSnapshotObj: null, items:null, inProgress: false, filteredItems: null, originalItems: null, poNumberList: [], seasonList: [], areaList: [], zoneList: [], itemsProcessingCount: { processed: 0, notProcessed: 0 }, originalSnapShotItems: [], snapShotResponseItems: [], orderItemList:[], orderItemMasterList:[] // filteredItems: [], }, getters: { getField, }, mutations: { updateField, inProgress(state, yesOrNo) { state.inProgress = yesOrNo; }, setMasterOne(state, one) { state.masterOne = one; }, setSnapshotObj(state, one) { state.orderSnapshotObj = one; }, setOrderItemList(state, itemList){ state.orderItemList = itemList; state.orderItemMasterList=JSON.stringify(itemList) }, setDetails(state, details) { state.details = details; }, setItems(state, items) { state.items = items }, setSnapShotResponseItems(state, {items}){ state.snapShotResponseItems = items }, setShipments(state, shipments) { state.shipments = shipments }, setProcessItemCount(state, flagObj) { if (flagObj.isNewProcessed) { state.itemsProcessingCount.processed += 1; state.itemsProcessingCount.notProcessed -= 1; } else { state.itemsProcessingCount.processed -= 1; state.itemsProcessingCount.notProcessed += 1; } }, setAndExpandItems(state, { details, items }) { state.filteredItems = []; if ( details.itemsFormat === "variant_size_color" && items ) { // expand const list = 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.filteredItems = dataList; state.originalItems = dataList; } if ( details.itemsFormat === "sku" && items ) { state.filteredItems = items; state.originalItems = items; } }, setSnapShotItems(state) { if ( state.orderSnapshotObj && state.orderSnapshotObj.items && state.orderSnapshotObj.items.length ) { state.filteredItems = []; 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.shipmentStartDateOld ? item.shipmentStartDateOld: item.shipmentStartDate; item.variants[i].endDate = item.shipmentCancelDateOld ? item.shipmentCancelDateOld: item.shipmentCancelDate; dataList.push(item.variants[i]); } } }); state.filteredItems = dataList; state.originalSnapShotItems = dataList; } if ( state.orderSnapshotObj && state.orderSnapshotObj.details && state.orderSnapshotObj.details.itemsFormat === "sku" && state.orderSnapshotObj.items ) { state.filteredItems = 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.filteredItems = state.originalSnapShotItems; if (filterObj.styleRef) { let items = []; state.filteredItems.filter((variant) => { if ( variant.name && variant.name .toLowerCase() .search(filterObj.styleRef.toLowerCase()) !== -1 ) items.push(variant); }); state.filteredItems = items; } if (filterObj.poNumber) { let items = []; state.filteredItems.filter((variant) => { if ( variant.poNumber && variant.poNumber .toLowerCase() .search(filterObj.poNumber.toLowerCase()) !== -1 ) items.push(variant); }); state.filteredItems = items; } if (filterObj.color) { let items = []; state.filteredItems.filter((variant) => { if ( variant.color && variant.color .toLowerCase() .search(filterObj.color.toLowerCase()) !== -1 ) items.push(variant); }); state.filteredItems = items; } if (filterObj.area) { let items = []; state.filteredItems.filter((variant) => { if (variant.area === filterObj.area) items.push(variant); }); state.filteredItems = items; } if (filterObj.season) { let items = []; state.filteredItems.filter((variant) => { if (variant.season === filterObj.season) items.push(variant); }); state.filteredItems = items; } if (filterObj.zone) { let items = []; state.filteredItems.filter((variant) => { if (variant.zoneCode === filterObj.zone) items.push(variant); }); state.filteredItems = items; } if (filterObj.processedItem) { if (filterObj.processedItem !== "all") { state.itemsProcessingCount = { processed: 0, notProcessed: 0 }; let items = []; state.filteredItems.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.filteredItems = items; } } if (filterObj.shipmentDates) { let items = []; state.filteredItems.filter((variant) => { if ( variant.startDate === filterObj.shipmentDates[0] && variant.endDate === filterObj.shipmentDates[1] ) items.push(variant); }); state.filteredItems = items; } state.filteredItems = [...new Set(state.filteredItems)]; } // filtered onlly current shipment window else if (filterObj.currentShippingWindow) { let items = []; state.filteredItems.filter((variant) => { if ( variant.startDate === filterObj.currentShippingWindow.shipmentStartDate && variant.endDate === filterObj.currentShippingWindow.shipmentCancelDate ) items.push(variant); }); state.filteredItems = items; } // send all items if no filter else { state.filteredItems = []; state.filteredItems = state.originalSnapShotItems; } }, }, actions: { fetchProcessingSnapshot: async ({ commit }, { purchaseOrderId,purchaseOrderChangesetId, specs }) => { commit("inProgress", true); try { let snapshot = await doPurchaseOrderApplyChanges( { purchaseOrderId,purchaseOrderChangesetId,specs } ); if (snapshot) { commit("setSnapshotObj", humps(snapshot)); commit("setDetails", humps(snapshot.details)); commit("setMasterOne", humps(snapshot.details)); commit("setAndExpandItems", {details: humps(snapshot.details), items: humps(snapshot.items)}); commit("setOrderItemList", (snapshot.items)); commit("setShipments", humps(snapshot.shipments)); commit("setSnapShotResponseItems", {items: humps(snapshot.items)}); return humps(snapshot) } } catch (err) { throw "error"; } finally { commit("inProgress", false); } }, snapShotOrderItemsForFilter: ({ commit }, {}) => { commit("setSnapShotItems"); }, searchSnapShotItems: ( { commit }, { season, area, zone, styleRef, shipmentDates, color, currentShippingWindow, processedItem, poNumber, } ) => { commit("searchSnapShotItems", { season, area, zone, styleRef, shipmentDates, color, currentShippingWindow, processedItem, poNumber }); }, changeProcessItemCount: ({ commit }, { isNewProcessed }) => { commit("setProcessItemCount", { isNewProcessed }); } } };