mirror of
https://github.com/OCA/rma.git
synced 2025-02-16 17:11:47 +02:00
Use case: - User with permission in sales but not in RMA. - Cancel sales order or change to draft a linked invoice TT50260
31 lines
1.1 KiB
Python
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()
|