feat: include last active cashier name in closing receipt data and frontend display

This commit is contained in:
Suherdy Yacob 2026-06-05 22:54:16 +07:00
parent 527b0f63bf
commit c39ee5abd5
2 changed files with 37 additions and 8 deletions

View File

@ -6,6 +6,33 @@ from odoo import models, api
class PosSession(models.Model):
_inherit = 'pos.session'
def _get_last_active_cashier_name(self):
self.ensure_one()
order_domain = [('session_id', '=', self.id)]
if 'payer_id' in self.env['pos.order']._fields:
last_order = self.env['pos.order'].search(
order_domain + [('payer_id', '!=', False)],
order='id desc',
limit=1
)
if last_order:
return last_order.payer_id.name
last_order = self.env['pos.order'].search(
order_domain + [('employee_id', '!=', False)],
order='id desc',
limit=1
)
if last_order:
return last_order.employee_id.name
return self.employee_id.name or self.user_id.name or ''
def get_closing_control_data(self):
data = super().get_closing_control_data()
data['last_cashier_name'] = self._get_last_active_cashier_name()
return data
def action_reprint_closing_summary(self):
"""Open the closing summary report for this session (backend reprint)."""
self.ensure_one()
@ -52,7 +79,7 @@ class PosSession(models.Model):
grand_total = sum(m['amount'] for m in sorted_methods)
cashier_name = session.user_id.name or ''
cashier_name = session._get_last_active_cashier_name()
closing_time = ''
if session.stop_at:
tz = self.env.user.tz or 'UTC'
@ -118,7 +145,7 @@ class PosSession(models.Model):
key=lambda m: (0 if m['is_cash'] else 1, m['name'])
)
cashier_name = session.user_id.name or ''
cashier_name = session._get_last_active_cashier_name()
closing_time = ''
if session.stop_at:
tz = self.env.user.tz or 'UTC'

View File

@ -307,12 +307,14 @@ patch(ClosePosPopup.prototype, {
const pos = this.pos;
const formatCurrency = this.env.utils.formatCurrency;
let cashierName = "";
try {
const cashier = pos.getCashier();
cashierName = cashier?.name || cashier?.display_name || "";
} catch (_) {
cashierName = pos.user?.name || "";
let cashierName = this.props.last_cashier_name || "";
if (!cashierName) {
try {
const cashier = pos.getCashier();
cashierName = cashier?.name || cashier?.display_name || "";
} catch (_) {
cashierName = pos.user?.name || "";
}
}
const now = new Date();