pos_custom_access/models/pos_order.py

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