From 8a5f7cdbab74aa19c975d31c032758e4c9a7d02c Mon Sep 17 00:00:00 2001 From: harrishragavan Date: Wed, 11 Mar 2026 16:13:26 +0530 Subject: [PATCH 1/2] feat: add POS Shift History dialog with filters and CSV export --- POS/components.d.ts | 1 + POS/src/components/sale/InvoiceCart.vue | 29 + .../components/sale/InvoiceHistoryDialog.vue | 273 ++++++---- .../components/sale/ShiftHistoryDialog.vue | 382 +++++++++++++ POS/src/pages/POSSale.vue | 35 ++ pos_next/api/invoices.py | 76 +-- pos_next/api/shifts.py | 56 ++ .../pos_next/workspace/posnext/posnext.json | 510 +++++++++--------- 8 files changed, 960 insertions(+), 402 deletions(-) create mode 100644 POS/src/components/sale/ShiftHistoryDialog.vue diff --git a/POS/components.d.ts b/POS/components.d.ts index 1f2e8b35..34185d02 100644 --- a/POS/components.d.ts +++ b/POS/components.d.ts @@ -50,6 +50,7 @@ declare module 'vue' { SessionLockScreen: typeof import('./src/components/common/SessionLockScreen.vue')['default'] SettingsSection: typeof import('./src/components/settings/SettingsSection.vue')['default'] ShiftClosingDialog: typeof import('./src/components/ShiftClosingDialog.vue')['default'] + ShiftHistoryDialog: typeof import('./src/components/sale/ShiftHistoryDialog.vue')['default'] ShiftOpeningDialog: typeof import('./src/components/ShiftOpeningDialog.vue')['default'] StatusBadge: typeof import('./src/components/common/StatusBadge.vue')['default'] Toast: typeof import('./src/components/common/Toast.vue')['default'] diff --git a/POS/src/components/sale/InvoiceCart.vue b/POS/src/components/sale/InvoiceCart.vue index d9183515..90d60b9a 100644 --- a/POS/src/components/sale/InvoiceCart.vue +++ b/POS/src/components/sale/InvoiceCart.vue @@ -737,6 +737,35 @@ __("Create Customer") }} + + + diff --git a/POS/src/components/sale/InvoiceHistoryDialog.vue b/POS/src/components/sale/InvoiceHistoryDialog.vue index ae196da3..41b9d268 100644 --- a/POS/src/components/sale/InvoiceHistoryDialog.vue +++ b/POS/src/components/sale/InvoiceHistoryDialog.vue @@ -12,9 +12,10 @@ v-model="searchTerm" type="text" :placeholder="__('Search by invoice number or customer...')" - @input="searchInvoices" + @input="onSearchInput" >