feat: prevent refunding cancelled pos orders on both server and client side
This commit is contained in:
parent
3ce178a631
commit
383bf63f19
@ -1,4 +1,5 @@
|
|||||||
from odoo import models, fields, api
|
from odoo import models, fields, api, _
|
||||||
|
from odoo.exceptions import UserError
|
||||||
|
|
||||||
class PosOrder(models.Model):
|
class PosOrder(models.Model):
|
||||||
_inherit = 'pos.order'
|
_inherit = 'pos.order'
|
||||||
@ -8,3 +9,9 @@ class PosOrder(models.Model):
|
|||||||
# Existing Odoo/POS fields renamed for clarity
|
# Existing Odoo/POS fields renamed for clarity
|
||||||
user_id = fields.Many2one('res.users', string='Session User', help='Odoo user who opened the session')
|
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')
|
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()
|
||||||
|
|||||||
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
import { patch } from "@web/core/utils/patch";
|
import { patch } from "@web/core/utils/patch";
|
||||||
import { TicketScreen } from "@point_of_sale/app/screens/ticket_screen/ticket_screen";
|
import { TicketScreen } from "@point_of_sale/app/screens/ticket_screen/ticket_screen";
|
||||||
|
import { AlertDialog } from "@web/core/confirmation_dialog/confirmation_dialog";
|
||||||
|
import { _t } from "@web/core/l10n/translation";
|
||||||
|
|
||||||
patch(TicketScreen.prototype, {
|
patch(TicketScreen.prototype, {
|
||||||
async setOrder(order) {
|
async setOrder(order) {
|
||||||
@ -25,5 +27,17 @@ patch(TicketScreen.prototype, {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return super.setOrder(order);
|
return super.setOrder(order);
|
||||||
|
},
|
||||||
|
|
||||||
|
async onDoRefund() {
|
||||||
|
const order = this.getSelectedOrder();
|
||||||
|
if (order && order.state === 'cancel') {
|
||||||
|
this.dialog.add(AlertDialog, {
|
||||||
|
title: _t("Refund Blocked"),
|
||||||
|
body: _t("You cannot refund a cancelled order."),
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return super.onDoRefund();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user