diff --git a/account_move_protect_deleting/models/account_move.py b/account_move_protect_deleting/models/account_move.py index abd24e9..e2e4545 100644 --- a/account_move_protect_deleting/models/account_move.py +++ b/account_move_protect_deleting/models/account_move.py @@ -1,5 +1,6 @@ from odoo import models, api, _ from odoo.exceptions import UserError +import re class AccountMove(models.Model): _inherit = 'account.move' @@ -7,9 +8,21 @@ class AccountMove(models.Model): @api.ondelete(at_uninstall=False) def _check_posted(self): """ Prevent deletion of a account move if it has been posted + exeptions : Check deposit or Cash deposit. In V16 in odoo the account move is deleted + when the check deposit is reset to draft. + This work the same with Cash deposit """ - if (self.posted_before): + pattern_CHQ_DEPOSIT = r"DEP\d{3}" + pattern_CASH_DEPOSIT = r"CASH-DEP-\d{3}" + + if ( + self.posted_before and + ( + not re.search(pattern_CHQ_DEPOSIT, self.ref) + and not re.search(pattern_CASH_DEPOSIT, self.ref) + ) + ): raise UserError(_("" "You cannot delete this account move because it has been posted." ))