diff --git a/src/components/BulkInventoryAdjustmentModal.vue b/src/components/BulkInventoryAdjustmentModal.vue index e0865167..63106ef1 100644 --- a/src/components/BulkInventoryAdjustmentModal.vue +++ b/src/components/BulkInventoryAdjustmentModal.vue @@ -90,6 +90,7 @@ export default defineComponent({ }, async save() { const facilityLocations = await this.store.dispatch('user/fetchFacilityLocations', [this.facilityId]); + const locationSeqId = facilityLocations[this.facilityId] && facilityLocations[this.facilityId][0] ? facilityLocations[this.facilityId][0].locationSeqId : ''; await this.stock.parsed.map((item: any) => { if (item.isSelected) { if(this.quantityBuffer != '') @@ -97,8 +98,7 @@ export default defineComponent({ if(this.facilityId) { item.facilityId = this.facilityId; item.externalFacilityId = ""; - //TODO: Need to improve the handling of locationSeqId. - item.locationSeqId = facilityLocations && facilityLocations[0] && facilityLocations[0].locationSeqId ? facilityLocations[0].locationSeqId : ""; + item.locationSeqId = locationSeqId; } } }) diff --git a/src/components/MissingFacilitiesModal.vue b/src/components/MissingFacilitiesModal.vue index c7860250..a966f5f2 100644 --- a/src/components/MissingFacilitiesModal.vue +++ b/src/components/MissingFacilitiesModal.vue @@ -81,7 +81,6 @@ export default defineComponent({ ...mapGetters({ purchaseOrders: 'order/getPurchaseOrders', stock: 'stock/getItemsStock', - getFacilityLocationsByFacilityId: 'user/getFacilityLocationsByFacilityId', }) }, mounted(){ @@ -100,9 +99,9 @@ export default defineComponent({ }) this.store.dispatch('order/updatePurchaseOrders', this.purchaseOrders); } else { - await this.store.dispatch('user/fetchFacilityLocations', Object.values(this.facilityMapping)); + const facilityLocations = await this.store.dispatch('user/fetchFacilityLocations', Object.values(this.facilityMapping)); Object.keys(this.facilityMapping).map((facilityId: any) => { - const locationSeqId = this.getFacilityLocationsByFacilityId(this.facilityMapping[facilityId]).length ? this.getFacilityLocationsByFacilityId(this.facilityMapping[facilityId])[0].locationSeqId : ''; + const locationSeqId = facilityLocations[this.facilityMapping[facilityId]].length ? facilityLocations[this.facilityMapping[facilityId]][0].locationSeqId : ''; this.stock.parsed.map((item: any) => { if(item.externalFacilityId === facilityId){ item.externalFacilityId = ""; diff --git a/src/store/modules/user/actions.ts b/src/store/modules/user/actions.ts index bb0e147f..96cdf2d7 100644 --- a/src/store/modules/user/actions.ts +++ b/src/store/modules/user/actions.ts @@ -128,11 +128,14 @@ const actions: ActionTree = { updateInstanceUrl(payload) }, - async fetchFacilityLocations({ commit }, facilityId){ + async fetchFacilityLocations({ commit, state }, facilityIds){ + facilityIds = facilityIds.filter((facilityId: any) => !state.facilityLocationsByFacilityId[facilityId]) + if(!facilityIds.length) return state.facilityLocationsByFacilityId; + let resp; const params = { "inputFields": { - facilityId, + facilityId: facilityIds, "facilityId_op": 'in' }, // Assuming we will not have more than 20 facility locations, hardcoded the viewSize value 20. @@ -142,7 +145,7 @@ const actions: ActionTree = { "distinct": "Y", "noConditionFind": "Y" } - try{ + try { resp = await UserService.getFacilityLocations(params); if(resp.status === 200 && !hasError(resp) && resp.data?.count > 0) { let facilityLocations = resp.data.docs @@ -152,18 +155,17 @@ const actions: ActionTree = { locationSeqId: location.locationSeqId, locationPath: locationPath } - locations.push(facilityLocation); + locations[location.facilityId] ? locations[location.facilityId].push(facilityLocation) : locations[location.facilityId] = [facilityLocation]; return locations; - }, []); - commit(types.USER_FACILITY_LOCATIONS_BY_FACILITY_ID, { facilityLocations, facilityId }); - return facilityLocations; + }, {}); + commit(types.USER_FACILITY_LOCATIONS_BY_FACILITY_ID, facilityLocations); } else { console.error(resp); } } catch(err) { console.error(err); - return []; } + return state.facilityLocationsByFacilityId; }, async getFieldMappings({ commit }) { diff --git a/src/store/modules/user/mutations.ts b/src/store/modules/user/mutations.ts index eba46219..f07817f8 100644 --- a/src/store/modules/user/mutations.ts +++ b/src/store/modules/user/mutations.ts @@ -27,8 +27,10 @@ const mutations: MutationTree = { [types.USER_DATETIME_FORMAT_UPDATED] (state, payload) { state.preferredDateTimeFormat = payload; }, - [types.USER_FACILITY_LOCATIONS_BY_FACILITY_ID] (state, payload) { - state.facilityLocationsByFacilityId[payload.facilityId] = payload.facilityLocations; + [types.USER_FACILITY_LOCATIONS_BY_FACILITY_ID] (state, facilityLocations) { + Object.keys(facilityLocations).map((facilityId: any) => { + state.facilityLocationsByFacilityId[facilityId] = facilityLocations[facilityId]; + }) }, [types.USER_CURRENT_FIELD_MAPPING_UPDATED] (state, payload) { state.currentMapping = payload diff --git a/src/views/InventoryDetail.vue b/src/views/InventoryDetail.vue index 6fea1d16..35a1350d 100644 --- a/src/views/InventoryDetail.vue +++ b/src/views/InventoryDetail.vue @@ -116,7 +116,7 @@ - {{ facilityLocation.locationSeqId }} + {{ facilityLocation.locationPath }} @@ -347,11 +347,11 @@ export default defineComponent({ async apply() { if(this.facilityId) { const facilityLocations = await this.store.dispatch('user/fetchFacilityLocations', [this.facilityId]); - await this.stock.parsed.map((item: any) => { + const locationSeqId = facilityLocations[this.facilityId] && facilityLocations[this.facilityId][0] && facilityLocations[this.facilityId][0].locaionSeqId ? facilityLocations[this.facilityId][0].locaionSeqId : ''; + this.stock.parsed.map((item: any) => { if (item.isSelected) { item.facilityId = this.facilityId; - //TODO: Need to improve the handling of locationSeqId. - item.locationSeqId = facilityLocations && facilityLocations[0] && facilityLocations[0].locationSeqId ? facilityLocations[0].locationSeqId : ""; + item.locationSeqId = locationSeqId; item.externalFacilityId = ""; } })