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':
|
if order.state == 'cancel':
|
||||||
raise UserError(_("You cannot refund a cancelled order."))
|
raise UserError(_("You cannot refund a cancelled order."))
|
||||||
return super()._refund()
|
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, {
|
patch(OrderPaymentValidation.prototype, {
|
||||||
async validateOrder(isForceValidate) {
|
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 originalEmployeeId = this.order?.original_employee_id || this.order?.employee_id;
|
||||||
|
|
||||||
const result = await super.validateOrder(...arguments);
|
const result = await super.validateOrder(...arguments);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user