feat: include last active cashier name in closing receipt data and frontend display
This commit is contained in:
parent
527b0f63bf
commit
c39ee5abd5
@ -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'
|
||||
|
||||
@ -307,13 +307,15 @@ patch(ClosePosPopup.prototype, {
|
||||
const pos = this.pos;
|
||||
const formatCurrency = this.env.utils.formatCurrency;
|
||||
|
||||
let cashierName = "";
|
||||
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();
|
||||
const pad = (n) => String(n).padStart(2, "0");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user