from odoo import api, models, _ from odoo.exceptions import UserError class AccountBankStatement(models.Model): _inherit = "account.bank.statement" def unlink(self): for statement in self: if not statement.journal_id.allow_bank_statement_deletion: raise UserError( _("The deletion of bank statements is not allowed for the journal %s.") % statement.journal_id.display_name ) # we delete all the statement lines before deleting the statement itself for line in statement.line_ids: line.unlink() return super(AccountBankStatement, self).unlink() class AccountBankStatementLine(models.Model): _inherit = "account.bank.statement.line" # This function is called when a user opens the form to create a new bank statement line @api.model def default_get(self, fields_list): res = super().default_get(fields_list) journal_id = self._context.get('default_journal_id') or res.get('journal_id') if journal_id: journal = self.env["account.journal"].browse(journal_id) if not journal.allow_bank_statement_line_creation: raise UserError( _("Manual creation of bank statement lines is not allowed for the journal %s.") % journal.display_name ) return res def unlink(self): for line in self: if not line.journal_id.allow_bank_statement_deletion: raise UserError( _("The deletion of bank statement lines is not allowed for the journal %s.") % line.journal_id.display_name ) return super(AccountBankStatementLine, self).unlink()