Files
rma/rma_sale/models/account_move.py
Víctor Martínez 916127146b [FIX] rma_sale: Avoid rma access error when cancel a sales order or change to draft an invoice.
Use case:
- User with permission in sales but not in RMA.
- Cancel sales order or change to draft a linked invoice

TT50260
2024-07-26 08:12:39 +02:00

31 lines
1.1 KiB
Python

# Copyright 2023 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import models
class AccountMove(models.Model):
_inherit = "account.move"
def button_cancel(self):
"""If this a refund linked to an RMA, undo the linking of the reception move for
having proper quantities and status.
"""
for rma in self.env["rma"].sudo().search([("refund_id", "in", self.ids)]):
if rma.sale_line_id:
rma._unlink_refund_with_reception_move()
return super().button_cancel()
def button_draft(self):
"""Relink the reception move when passing the refund again to draft."""
for rma in self.env["rma"].sudo().search([("refund_id", "in", self.ids)]):
if rma.sale_line_id:
rma._link_refund_with_reception_move()
return super().button_draft()
def unlink(self):
"""If the invoice is removed, rollback the quantities correction"""
for rma in self.invoice_line_ids.rma_id.filtered("sale_line_id"):
rma._unlink_refund_with_reception_move()
return super().unlink()