From f82f03e4dfdf08216625c41125ea31e2bf122113 Mon Sep 17 00:00:00 2001 From: Juan Ignacio Carreras Date: Fri, 7 Nov 2025 12:43:45 +0000 Subject: [PATCH] [IMP]purchase_ux: Prevent cancelling done purchase orders --- purchase_ux/models/purchase_order.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/purchase_ux/models/purchase_order.py b/purchase_ux/models/purchase_order.py index 569bb419..c91ae703 100644 --- a/purchase_ux/models/purchase_order.py +++ b/purchase_ux/models/purchase_order.py @@ -129,3 +129,12 @@ def _prepare_invoice(self): if self.internal_notes: result["internal_notes"] = self.internal_notes return result + + def button_cancel(self): + # Check if any of the selected purchase orders are in 'done' state + done_orders = self.filtered(lambda po: po.state == "done") + if done_orders: + raise UserError( + _("Cannot cancel purchase order(s) that are already done: %s") % ", ".join(done_orders.mapped("name")) + ) + return super().button_cancel()