From 42d87e2e77108331616d9aad50150f65c1b96120 Mon Sep 17 00:00:00 2001 From: Suherdy Yacob Date: Fri, 12 Jun 2026 07:59:40 +0700 Subject: [PATCH] feat: persist and restore the last active POS cashier across sessions using sessionStorage --- .../src/app/screens/login_screen/login_screen.js | 16 +++++++--------- static/src/app/services/pos_store.js | 4 ++++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/static/src/app/screens/login_screen/login_screen.js b/static/src/app/screens/login_screen/login_screen.js index da5f3c6..2d29f5d 100644 --- a/static/src/app/screens/login_screen/login_screen.js +++ b/static/src/app/screens/login_screen/login_screen.js @@ -19,16 +19,14 @@ patch(LoginScreen.prototype, { if (currentCashier) { this.cashierLogIn(); } else { - const allEmployees = this.pos.models["hr.employee"].getAll(); - if (allEmployees.length) { - const nonWaiterEmployee = allEmployees.find(emp => emp.pos_role !== 'waiter'); - if (nonWaiterEmployee) { - this.pos.setCashier(nonWaiterEmployee); - } else { - this.pos.setCashier(allEmployees[0]); - } + const lastActiveCashierId = sessionStorage.getItem(`last_active_cashier_${this.pos.config.id}`); + const lastActiveCashier = lastActiveCashierId ? this.pos.models["hr.employee"].get(Number(lastActiveCashierId)) : null; + if (lastActiveCashier) { + this.pos.setCashier(lastActiveCashier); + this.cashierLogIn(); + } else { + super.openRegister(); } - this.cashierLogIn(); } } }); diff --git a/static/src/app/services/pos_store.js b/static/src/app/services/pos_store.js index 45e3b44..7a79274 100644 --- a/static/src/app/services/pos_store.js +++ b/static/src/app/services/pos_store.js @@ -15,6 +15,7 @@ patch(PosStore.prototype, { } this.setCashier(cashier); } + sessionStorage.removeItem(`last_active_cashier_${this.config.id}`); return super.closeSession(...arguments); }, @@ -92,6 +93,9 @@ patch(PosStore.prototype, { setCashier(employee) { super.setCashier(...arguments); + if (employee) { + sessionStorage.setItem(`last_active_cashier_${this.config.id}`, employee.id); + } const order = this.getOrder(); if (order && !order.getOrderlines().length) { order.original_employee_id = employee;