From 4e88b4eb040c74ce909f7cf7147e9edaecc180c4 Mon Sep 17 00:00:00 2001 From: Banibrata Santanu Manna Date: Fri, 24 Oct 2025 14:02:20 +0530 Subject: [PATCH 1/8] Showing In Progress Counts in Assigned Page and added base modal to add new session in a count --- src/components/AddNewSessionModal.vue | 52 ++++++++++++ src/services/CountService.ts | 15 +++- src/store/index.ts | 4 +- src/store/modules/count/actions.ts | 4 +- src/views/Count.vue | 110 +++++++++++++++++++------- 5 files changed, 148 insertions(+), 37 deletions(-) create mode 100644 src/components/AddNewSessionModal.vue diff --git a/src/components/AddNewSessionModal.vue b/src/components/AddNewSessionModal.vue new file mode 100644 index 00000000..f8eb943a --- /dev/null +++ b/src/components/AddNewSessionModal.vue @@ -0,0 +1,52 @@ + + + diff --git a/src/services/CountService.ts b/src/services/CountService.ts index df9b6beb..5660f98a 100644 --- a/src/services/CountService.ts +++ b/src/services/CountService.ts @@ -15,13 +15,22 @@ const getAssignedWorkEfforts = async (params: any): Promise => { } const getInventoryCountImportsByWorkEffort = async (params: any): Promise => { return api({ - url: `inventory-cycle-count/cycleCounts/workEfforts/${params.workEffortId}/imports`, + url: `inventory-cycle-count/cycleCounts/workEfforts/${params.workEffortId}/sessions`, method: "get", - params }); } +const addSessionInCount = async (payload: any): Promise => { + return api({ + url: `inventory-cycle-count/cycleCounts/workEfforts/${payload.workEffortId}/sessions`, + method: "post", + data: payload + } + ); +} + export const CountService = { getAssignedWorkEfforts, - getInventoryCountImportsByWorkEffort + getInventoryCountImportsByWorkEffort, + addSessionInCount } \ No newline at end of file diff --git a/src/store/index.ts b/src/store/index.ts index 3ccfc73a..2baf264c 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -6,7 +6,7 @@ import getters from "./getters"; import actions from "./actions"; import userModule from "./modules/user"; // import productModule from "./modules/product"; -// import countModule from "./modules/count"; +import countModule from "./modules/count"; import utilModule from "./modules/util"; import { setPermissions } from "@/authorization" @@ -32,7 +32,7 @@ const store = createStore({ modules: { user: userModule, // product: productModule, - // count: countModule, + count: countModule, util: utilModule, }, }) diff --git a/src/store/modules/count/actions.ts b/src/store/modules/count/actions.ts index 5ba2150b..6b5afd8c 100644 --- a/src/store/modules/count/actions.ts +++ b/src/store/modules/count/actions.ts @@ -37,14 +37,14 @@ const actions: ActionTree = { if (!hasError(inventoryResp)) { assignedWorkEfforts.push({ ...workEffort, - inventoryCountImports: inventoryResp.data || [] + sessions: inventoryResp.data || [] }) } } catch (err) { logger.error(`Error fetching inventory imports for workEffortId ${workEffort.workEffortId}:`, err) } } - + console.log("These are counts: ", assignedWorkEfforts); total = assignedWorkEfforts.length isScrollable = workEfforts.length >= params.pageSize } else { diff --git a/src/views/Count.vue b/src/views/Count.vue index 21178fe3..8bd468c0 100644 --- a/src/views/Count.vue +++ b/src/views/Count.vue @@ -30,7 +30,6 @@ created date - number of items {{ translate("Due date") }} @@ -44,7 +43,7 @@ Sessions - + Start new session @@ -66,7 +65,6 @@ created date - number of items {{ translate("Due date") }} @@ -79,7 +77,7 @@ Sessions - + New @@ -131,7 +129,6 @@ created date - number of items {{ translate("Due date") }} @@ -184,20 +181,19 @@ - +
- + {{ translate("HARD COUNT") }} - {{ count.countImportName }} + {{ count.workEffortName }} {{ getDateWithOrdinalSuffix(count.createdDate) }}
- {{ cycleCountStats(count.inventoryCountImportId)?.totalItems }} {{ translate("items") }}
{{ translate("Due date") }} @@ -205,7 +201,37 @@

{{ getDateWithOrdinalSuffix(count.dueDate) }}

+ + + + Sessions + + + + New + + + + + Start new session + + + + + + {{ session.countImportName }} + {{ session.facilityAreaId }} +

+ created By {{ session.uploadedByUserLogin }} +

+
+ + {{ getSessionStatusDescription(session.statusId) }} + +
+
+
+ - {{ getCycleCountStats(count.inventoryCountImportId, count.countTypeEnumId === "HARD_COUNT") }} -

{{ translate("counted") }}

- {{ getDateWithOrdinalSuffix(count.dueDate) }} @@ -44,7 +38,7 @@ - {{ translate(getDerivedStatusForCount(count)?.label) }} + {{ count.currentStatusId }} @@ -63,11 +57,12 @@ import { filterOutline, storefrontOutline } from "ionicons/icons"; import { IonBadge, IonButtons, IonChip, IonContent, IonHeader, IonIcon, IonItem, IonInfiniteScroll, IonInfiniteScrollContent, IonLabel, IonList, IonMenuButton, IonPage, IonTitle, IonToolbar, onIonViewDidEnter, onIonViewWillLeave } from "@ionic/vue"; import store from "@/store" import { getCycleCountStats, getDateWithOrdinalSuffix, getDerivedStatusForCount, getFacilityName } from "@/utils" +// import { useInventoryCountImport } from "@/composables/useInventoryCountImportItem"; // import Filters from "@/components/Filters.vue" import router from "@/router" // import SearchBarAndSortBy from "@/components/SearchBarAndSortBy.vue"; -const cycleCounts = computed(() => store.getters["count/getCounts"]) +const cycleCounts = computed(() => store.getters["count/getAssignedWorkEfforts"]) const isScrollable = computed(() => store.getters["count/isCycleCountListScrollable"]) const isScrollingEnabled = ref(false); @@ -76,6 +71,7 @@ const infiniteScrollRef = ref({}) as any onIonViewDidEnter(async () => { await fetchAssignedCycleCount(); + // useInventoryCountImport(); }) onIonViewWillLeave(async () => { @@ -113,9 +109,9 @@ async function fetchAssignedCycleCount(vSize?: any, vIndex?: any) { const payload = { pageSize, pageIndex, - statusId: "INV_COUNT_ASSIGNED" + currentStatusId: "CYCLE_CNT_IN_PRGS" } - await store.dispatch("count/fetchCycleCounts", payload) + await store.dispatch("count/getCycleCounts", payload) } diff --git a/src/views/Closed.vue b/src/views/Closed.vue new file mode 100644 index 00000000..ade2ca0a --- /dev/null +++ b/src/views/Closed.vue @@ -0,0 +1,77 @@ + + + + + \ No newline at end of file diff --git a/src/views/Count.vue b/src/views/Count.vue index cf965bed..cbf99a20 100644 --- a/src/views/Count.vue +++ b/src/views/Count.vue @@ -274,6 +274,7 @@ import { useRouter } from 'vue-router' import { getDateWithOrdinalSuffix, showToast } from "@/utils" import { useUserStore } from '@hotwax/dxp-components'; import AddNewSessionModal from '@/components/AddNewSessionModal.vue'; +// import { useInventoryCountImport } from '@/composables/useInventoryCountImportItem'; const store = useStore(); const router = useRouter() @@ -296,6 +297,7 @@ onIonViewDidEnter(async() => { isLoading.value = true; await fetchCycleCounts(); isLoading.value = false; + // useInventoryCountImport(); }) // TODO: Fetch the status description when the app loads. diff --git a/src/views/Draft.vue b/src/views/Draft.vue new file mode 100644 index 00000000..6dff59a4 --- /dev/null +++ b/src/views/Draft.vue @@ -0,0 +1,60 @@ + + + + + \ No newline at end of file diff --git a/src/views/PendingReview.vue b/src/views/PendingReview.vue index 7328787d..6a385060 100644 --- a/src/views/PendingReview.vue +++ b/src/views/PendingReview.vue @@ -13,7 +13,7 @@ - + @@ -22,21 +22,15 @@ -

{{ translate("HARD COUNT") }}

- {{ count.countImportName }} -

{{ count.inventoryCountImportId }}

+

{{ translate("HARD COUNT") }}

+ {{ count.workEffortName }} +

{{ count.workEffortId }}

{{ getFacilityName(count?.facilityId) }} - - - - {{ getCycleCountStats(count.inventoryCountImportId, count.countTypeEnumId === "HARD_COUNT") }} -

{{ translate("counted") }}

-
{{ getDateWithOrdinalSuffix(count.dueDate) }} @@ -44,7 +38,7 @@ - {{ translate(getDerivedStatusForCount(count)?.label) }} + {{ translate(count.currentStatusId) }} @@ -67,7 +61,7 @@ import Filters from "@/components/Filters.vue" import { getCycleCountStats, getDateWithOrdinalSuffix, getDerivedStatusForCount, getFacilityName } from "@/utils" import SearchBarAndSortBy from "@/components/SearchBarAndSortBy.vue"; -const cycleCounts = computed(() => store.getters["count/getCounts"]) +const cycleCounts = computed(() => store.getters["count/getInReviewCounts"]) const isScrollable = computed(() => store.getters["count/isCycleCountListScrollable"]) const isScrollingEnabled = ref(false); @@ -113,9 +107,9 @@ async function fetchPendingCycleCounts(vSize?: any, vIndex?: any) { const payload = { pageSize, pageIndex, - statusId: "INV_COUNT_REVIEW" + currentStatusId: "CYCLE_CNT_IN_CMPLTD" } - await store.dispatch("count/fetchCycleCounts", payload) + await store.dispatch("count/getCycleCounts", payload) } From 7be247c1c49f876a7ba4ac70a7bde4f8234768fc Mon Sep 17 00:00:00 2001 From: Banibrata Santanu Manna Date: Sat, 25 Oct 2025 10:26:28 +0530 Subject: [PATCH 7/8] Code Cleanup --- src/composables/useInventoryCountImportItem.ts | 5 ----- src/views/Assigned.vue | 2 -- src/views/Count.vue | 4 +--- 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/composables/useInventoryCountImportItem.ts b/src/composables/useInventoryCountImportItem.ts index 0863d4e1..e2b9e201 100644 --- a/src/composables/useInventoryCountImportItem.ts +++ b/src/composables/useInventoryCountImportItem.ts @@ -44,7 +44,6 @@ interface InventoryCountRecord { interface RecordScanParams { inventoryCountImportId: string; - scannedValue: string, sku: string; qty: number; locationSeqId?: string | null; @@ -68,8 +67,6 @@ class InventoryCountDB extends Dexie { const db = new InventoryCountDB(); -console.log("This is you db: ", db); - /** * Utility Functions */ @@ -125,7 +122,6 @@ export function useInventoryCountImport() { async function recordScan(params: RecordScanParams): Promise { const event: ScanEvent = { inventoryCountImportId: params.inventoryCountImportId, - scannedValue: params.scannedValue, locationSeqId: params.locationSeqId || null, qty: params.qty, createdAt: currentMillis(), @@ -261,7 +257,6 @@ export function useInventoryCountImport() { } async function createSessionOnServer (payload: any) { - console.log("This is from the ", maargInstanceUrl, " and ", omsRedirectionInfo); const resp = await client({ url: `rest/s1/inventory-cycle-count/cycleCounts/workEfforts/${payload.workEffortId}/sessions`, diff --git a/src/views/Assigned.vue b/src/views/Assigned.vue index 4ca93f1b..b6129a0e 100644 --- a/src/views/Assigned.vue +++ b/src/views/Assigned.vue @@ -57,7 +57,6 @@ import { filterOutline, storefrontOutline } from "ionicons/icons"; import { IonBadge, IonButtons, IonChip, IonContent, IonHeader, IonIcon, IonItem, IonInfiniteScroll, IonInfiniteScrollContent, IonLabel, IonList, IonMenuButton, IonPage, IonTitle, IonToolbar, onIonViewDidEnter, onIonViewWillLeave } from "@ionic/vue"; import store from "@/store" import { getCycleCountStats, getDateWithOrdinalSuffix, getDerivedStatusForCount, getFacilityName } from "@/utils" -// import { useInventoryCountImport } from "@/composables/useInventoryCountImportItem"; // import Filters from "@/components/Filters.vue" import router from "@/router" // import SearchBarAndSortBy from "@/components/SearchBarAndSortBy.vue"; @@ -71,7 +70,6 @@ const infiniteScrollRef = ref({}) as any onIonViewDidEnter(async () => { await fetchAssignedCycleCount(); - // useInventoryCountImport(); }) onIonViewWillLeave(async () => { diff --git a/src/views/Count.vue b/src/views/Count.vue index cbf99a20..f65be01f 100644 --- a/src/views/Count.vue +++ b/src/views/Count.vue @@ -181,7 +181,7 @@
- +
@@ -274,7 +274,6 @@ import { useRouter } from 'vue-router' import { getDateWithOrdinalSuffix, showToast } from "@/utils" import { useUserStore } from '@hotwax/dxp-components'; import AddNewSessionModal from '@/components/AddNewSessionModal.vue'; -// import { useInventoryCountImport } from '@/composables/useInventoryCountImportItem'; const store = useStore(); const router = useRouter() @@ -297,7 +296,6 @@ onIonViewDidEnter(async() => { isLoading.value = true; await fetchCycleCounts(); isLoading.value = false; - // useInventoryCountImport(); }) // TODO: Fetch the status description when the app loads. From 19283e9689c6dcfae2e49c0a58f2629b675ed5f5 Mon Sep 17 00:00:00 2001 From: Banibrata Santanu Manna Date: Mon, 27 Oct 2025 11:50:10 +0530 Subject: [PATCH 8/8] Added router links to session to session detail page --- src/components/AddNewSessionModal.vue | 5 +++-- src/views/Count.vue | 16 ++++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/components/AddNewSessionModal.vue b/src/components/AddNewSessionModal.vue index 24b72255..ecd872b0 100644 --- a/src/components/AddNewSessionModal.vue +++ b/src/components/AddNewSessionModal.vue @@ -42,6 +42,7 @@ import { IonButtons, IonModal, IonIcon, IonFab, IonFabButton, IonContent, IonHea import { closeOutline, saveOutline, checkmarkDoneOutline } from "ionicons/icons"; import { showToast } from '@/utils'; import { useInventoryCountImport } from '@/composables/useInventoryCountImportItem'; +import store from '@/store'; const props = defineProps({ isOpen: { @@ -61,8 +62,8 @@ const closeModal = () => emit('update:isOpen', false); async function addNewSession() { const resp = await useInventoryCountImport().createSessionOnServer({ countImportName: countName.value, - statusId: "CYCLE_CNT_ASSIGNED", - uploadedByUserLogin: "hotwax.user", + statusId: "SESSION_ASSIGNED", + uploadedByUserLogin: store.getters["user/getUserProfile"].username, facilityAreaId: selectedArea.value, createdDate: Date.now(), dueDate: Date.now(), diff --git a/src/views/Count.vue b/src/views/Count.vue index f65be01f..760330d3 100644 --- a/src/views/Count.vue +++ b/src/views/Count.vue @@ -216,8 +216,9 @@ Start new session + - + {{ session.countImportName }} + {{ session.facilityAreaId }}

@@ -303,14 +304,14 @@ function getSessionStatusDescription(statusId) { if (!statusId) { return ""; } - if (statusId === "CYCLE_CNT_CREATED") { + if (statusId === "SESSION_CREATED") { return "Created"; - } else if (statusId === "CYCLE_CNT_IN_PRGS") { + } else if (statusId === "SESSION_ASSIGNED") { return "In Progress"; - } else if (statusId === "CYCLE_CNT_IN_CMPLTD") { - return "Completed"; - } else { - return "Cancelled" + } else if (statusId === "SESSION_SUBMITTED") { + return "Submitted"; + } else if (statusId === "SESSION_VOIDED") { + return "Voided"; } } @@ -369,7 +370,6 @@ async function fetchCycleCounts(vSize, vIndex) { facilityId, currentStatusId: getStatusIdForCountsToBeFetched() }; - console.log("This is store: ", store); await store.dispatch("count/getAssignedWorkEfforts", payload); }