feat: persist and restore the last active POS cashier across sessions using sessionStorage

This commit is contained in:
Suherdy Yacob 2026-06-12 07:59:40 +07:00
parent 6c0592af82
commit 42d87e2e77
2 changed files with 11 additions and 9 deletions

View File

@ -19,16 +19,14 @@ patch(LoginScreen.prototype, {
if (currentCashier) { if (currentCashier) {
this.cashierLogIn(); this.cashierLogIn();
} else { } else {
const allEmployees = this.pos.models["hr.employee"].getAll(); const lastActiveCashierId = sessionStorage.getItem(`last_active_cashier_${this.pos.config.id}`);
if (allEmployees.length) { const lastActiveCashier = lastActiveCashierId ? this.pos.models["hr.employee"].get(Number(lastActiveCashierId)) : null;
const nonWaiterEmployee = allEmployees.find(emp => emp.pos_role !== 'waiter'); if (lastActiveCashier) {
if (nonWaiterEmployee) { this.pos.setCashier(lastActiveCashier);
this.pos.setCashier(nonWaiterEmployee); this.cashierLogIn();
} else { } else {
this.pos.setCashier(allEmployees[0]); super.openRegister();
}
} }
this.cashierLogIn();
} }
} }
}); });

View File

@ -15,6 +15,7 @@ patch(PosStore.prototype, {
} }
this.setCashier(cashier); this.setCashier(cashier);
} }
sessionStorage.removeItem(`last_active_cashier_${this.config.id}`);
return super.closeSession(...arguments); return super.closeSession(...arguments);
}, },
@ -92,6 +93,9 @@ patch(PosStore.prototype, {
setCashier(employee) { setCashier(employee) {
super.setCashier(...arguments); super.setCashier(...arguments);
if (employee) {
sessionStorage.setItem(`last_active_cashier_${this.config.id}`, employee.id);
}
const order = this.getOrder(); const order = this.getOrder();
if (order && !order.getOrderlines().length) { if (order && !order.getOrderlines().length) {
order.original_employee_id = employee; order.original_employee_id = employee;