feat: automate payer_id assignment during order processing and payment validation
This commit is contained in:
parent
a8e72ba7fb
commit
0115957631
@ -15,3 +15,18 @@ class PosOrder(models.Model):
|
||||
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
|
||||
|
||||
@ -3,6 +3,9 @@ import { patch } from "@web/core/utils/patch";
|
||||
|
||||
patch(OrderPaymentValidation.prototype, {
|
||||
async validateOrder(isForceValidate) {
|
||||
if (this.order) {
|
||||
this.order.update({ payer_id: this.pos.getCashier() });
|
||||
}
|
||||
const originalEmployeeId = this.order?.original_employee_id || this.order?.employee_id;
|
||||
|
||||
const result = await super.validateOrder(...arguments);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user