feat: automate payer_id assignment during order processing and payment validation

This commit is contained in:
Suherdy Yacob 2026-06-17 17:42:26 +07:00
parent a8e72ba7fb
commit 0115957631
2 changed files with 18 additions and 0 deletions

View File

@ -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

View File

@ -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);