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):
|
class PosSession(models.Model):
|
||||||
_inherit = 'pos.session'
|
_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):
|
def action_reprint_closing_summary(self):
|
||||||
"""Open the closing summary report for this session (backend reprint)."""
|
"""Open the closing summary report for this session (backend reprint)."""
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
@ -52,7 +79,7 @@ class PosSession(models.Model):
|
|||||||
|
|
||||||
grand_total = sum(m['amount'] for m in sorted_methods)
|
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 = ''
|
closing_time = ''
|
||||||
if session.stop_at:
|
if session.stop_at:
|
||||||
tz = self.env.user.tz or 'UTC'
|
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'])
|
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 = ''
|
closing_time = ''
|
||||||
if session.stop_at:
|
if session.stop_at:
|
||||||
tz = self.env.user.tz or 'UTC'
|
tz = self.env.user.tz or 'UTC'
|
||||||
|
|||||||
@ -307,13 +307,15 @@ patch(ClosePosPopup.prototype, {
|
|||||||
const pos = this.pos;
|
const pos = this.pos;
|
||||||
const formatCurrency = this.env.utils.formatCurrency;
|
const formatCurrency = this.env.utils.formatCurrency;
|
||||||
|
|
||||||
let cashierName = "";
|
let cashierName = this.props.last_cashier_name || "";
|
||||||
|
if (!cashierName) {
|
||||||
try {
|
try {
|
||||||
const cashier = pos.getCashier();
|
const cashier = pos.getCashier();
|
||||||
cashierName = cashier?.name || cashier?.display_name || "";
|
cashierName = cashier?.name || cashier?.display_name || "";
|
||||||
} catch (_) {
|
} catch (_) {
|
||||||
cashierName = pos.user?.name || "";
|
cashierName = pos.user?.name || "";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
const pad = (n) => String(n).padStart(2, "0");
|
const pad = (n) => String(n).padStart(2, "0");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user