From 4a89241b133479c03c1fce6be751b5bcca84b819 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Ba=C3=B1=C3=B3n?= Date: Mon, 7 Jul 2025 17:07:28 +0200 Subject: [PATCH] [FIX] hr_expense_advance_clearing: Check approval before other modules might intervene. TT55529 --- .../models/hr_expense_sheet.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/hr_expense_advance_clearing/models/hr_expense_sheet.py b/hr_expense_advance_clearing/models/hr_expense_sheet.py index 805ac4f12..1ae2221d5 100644 --- a/hr_expense_advance_clearing/models/hr_expense_sheet.py +++ b/hr_expense_advance_clearing/models/hr_expense_sheet.py @@ -243,7 +243,9 @@ def _prepare_bills_vals(self): # Advance Sheets with no residual left if self.advance_sheet_residual <= 0.0: raise ValidationError( - self.env._(f"Advance: {self.name} has no amount to clear") + self.env._( + "Advance: %(name)s has no amount to clear", name=self.name + ) ) res.update( { @@ -255,6 +257,18 @@ def _prepare_bills_vals(self): ) return res + def _check_can_approve(self): + """Check advance residual before approval""" + for sheet in self.filtered("advance_sheet_id"): + if sheet.advance_sheet_residual <= 0.0: + raise ValidationError( + self.env._( + "Advance: %(name)s has no amount to clear", + name=sheet.advance_sheet_id.name, + ) + ) + return super()._check_can_approve() + def open_clear_advance(self): self.ensure_one() result = self.env["ir.actions.act_window"]._for_xml_id(