33 lines
1.4 KiB
Python
33 lines
1.4 KiB
Python
from odoo import models, fields, api, _
|
|
from odoo.exceptions import UserError
|
|
|
|
class PosOrder(models.Model):
|
|
_inherit = 'pos.order'
|
|
|
|
payer_id = fields.Many2one('hr.employee', string='Cashier', help='Employee who processed the payment')
|
|
|
|
# Existing Odoo/POS fields renamed for clarity
|
|
user_id = fields.Many2one('res.users', string='Session User', help='Odoo user who opened the session')
|
|
employee_id = fields.Many2one('hr.employee', string='Order Taker', help='Employee who uses the cash register')
|
|
|
|
def _refund(self):
|
|
for order in self:
|
|
if order.state == 'cancel':
|
|
raise UserError(_("You cannot refund a cancelled order."))
|
|
return super()._refund()
|
|
|
|
@api.model
|
|
def _process_order(self, order, existing_order):
|
|
res = super()._process_order(order, existing_order)
|
|
pos_order = self.browse(res)
|
|
if pos_order.state in ['paid', 'done', 'invoiced'] and not pos_order.payer_id:
|
|
if pos_order.employee_id:
|
|
pos_order.write({'payer_id': pos_order.employee_id.id})
|
|
elif pos_order.session_id.user_id.employee_id:
|
|
pos_order.write({'payer_id': pos_order.session_id.user_id.employee_id.id})
|
|
else:
|
|
employee = self.env['hr.employee'].sudo().search([('user_id', '=', pos_order.user_id.id)], limit=1)
|
|
if employee:
|
|
pos_order.write({'payer_id': employee.id})
|
|
return res
|