Steps to follow to reproduce the bug : - Install the Repairs and Accounting application - Create a new user and give him only access to Accounting - Connect with this user - Create a draft invoice - Try to delete it - Access rights error is triggered. Problem: When we delete an invoice and the Repairs app is installed, we check if it is not an invoice related to a repair. But the user does not have access to “repair.order”, so we can not check the field "repair_ids". opw-2507867 closes odoo/odoo#70095 X-original-commit: b5588246a0e032c92b8443e67875ff4146858fe8 Signed-off-by: Rémy Voet <ryv-odoo@users.noreply.github.com> Signed-off-by: Djamel Touati <DjamelTouati@users.noreply.github.com>
23 lines
703 B
Python
23 lines
703 B
Python
# -*- coding: utf-8 -*-
|
|
|
|
from odoo import models, fields
|
|
|
|
|
|
class AccountMove(models.Model):
|
|
_inherit = 'account.move'
|
|
|
|
repair_ids = fields.One2many('repair.order', 'invoice_id', readonly=True, copy=False)
|
|
|
|
def unlink(self):
|
|
repairs = self.sudo().repair_ids.filtered(lambda repair: repair.state != 'cancel')
|
|
if repairs:
|
|
repairs.sudo(False).state = '2binvoiced'
|
|
return super().unlink()
|
|
|
|
|
|
class AccountMoveLine(models.Model):
|
|
_inherit = 'account.move.line'
|
|
|
|
repair_line_ids = fields.One2many('repair.line', 'invoice_line_id', readonly=True, copy=False)
|
|
repair_fee_ids = fields.One2many('repair.fee', 'invoice_line_id', readonly=True, copy=False)
|