diff --git a/rma/models/stock_move.py b/rma/models/stock_move.py index 1e846eec..8d992561 100644 --- a/rma/models/stock_move.py +++ b/rma/models/stock_move.py @@ -35,7 +35,9 @@ class StockMove(models.Model): rma_receiver = self.sudo().mapped("rma_receiver_ids") rma = self.sudo().mapped("rma_id") res = super().unlink() - rma_receiver.write({"state": "draft"}) + rma_receiver.filtered(lambda x: x.state != "cancelled").write( + {"state": "draft"} + ) rma.update_received_state() rma.update_replaced_state() return res diff --git a/rma_sale_mrp/models/rma.py b/rma_sale_mrp/models/rma.py index 741af052..b83a8a93 100644 --- a/rma_sale_mrp/models/rma.py +++ b/rma_sale_mrp/models/rma.py @@ -65,3 +65,13 @@ class Rma(models.Model): } ) return res + + def action_draft(self): + if self.filtered(lambda r: r.state == "cancelled" and r.phantom_bom_product): + raise UserError( + _( + "To avoid kit quantities inconsistencies it is not possible to convert " + "to draft a cancelled RMA. You should do a new one from the sales order." + ) + ) + return super().action_draft()