22 lines
973 B
Python
22 lines
973 B
Python
from odoo import _, api, models
|
|
from odoo.exceptions import UserError
|
|
|
|
|
|
class IrAttachment(models.Model):
|
|
_inherit = "ir.attachment"
|
|
|
|
@api.ondelete(at_uninstall=False)
|
|
def _unlink_except_posted_pdf_invoices(self):
|
|
'''
|
|
Prevents unlinking of invoice pdfs linked to an invoice that is posted.
|
|
'''
|
|
restricted_moves = self._get_posted_pdf_moves_to_check().filtered(lambda move: move.country_code == 'SA' and move.state == 'posted')
|
|
if restricted_moves:
|
|
raise UserError(_("The Invoice PDF(s) cannot be deleted according to ZATCA rules: %s", ', '.join(restricted_moves.mapped('invoice_pdf_report_id.name'))))
|
|
|
|
def _get_posted_pdf_moves_to_check(self):
|
|
'''
|
|
Returns the moves to check whether they can be unlinked.
|
|
'''
|
|
return self.env['account.move'].browse(self.filtered(lambda rec: rec.res_model == 'account.move' and rec.res_field == 'invoice_pdf_report_file').mapped('res_id'))
|