From d8af9e12545f4147f6042728b4a6e3acd35e1b8a Mon Sep 17 00:00:00 2001 From: DavidJForgeFlow Date: Tue, 14 Feb 2023 17:31:07 +0100 Subject: [PATCH] [IMP] rma: cancel rma_lines --- rma/models/rma_order_line.py | 20 ++++++++++++++++++++ rma/views/rma_order_line_view.xml | 19 ++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/rma/models/rma_order_line.py b/rma/models/rma_order_line.py index b7a24c37..9ba20f07 100644 --- a/rma/models/rma_order_line.py +++ b/rma/models/rma_order_line.py @@ -254,6 +254,7 @@ class RmaOrderLine(models.Model): ("to_approve", "To Approve"), ("approved", "Approved"), ("done", "Done"), + ("canceled", "Canceled"), ], string="State", default="draft", @@ -652,6 +653,25 @@ class RmaOrderLine(models.Model): self.write({"state": "done"}) return True + def check_cancel(self): + for move in self.move_ids: + if move.state == "done": + raise UserError( + _("Unable to cancel %s as some receptions have already been done.") + % (self.name) + ) + + def action_rma_cancel(self): + for order in self: + order.check_cancel() + order.write({"state": "canceled"}) + order.move_ids._action_cancel() + shipments = order._get_in_pickings() + shipments |= order._get_out_pickings() + for ship in shipments: + ship.action_cancel() + return True + @api.model def create(self, vals): if not vals.get("name") or vals.get("name") == "/": diff --git a/rma/views/rma_order_line_view.xml b/rma/views/rma_order_line_view.xml index 803d3b81..0b7c5716 100644 --- a/rma/views/rma_order_line_view.xml +++ b/rma/views/rma_order_line_view.xml @@ -96,7 +96,14 @@ name="action_rma_done" type="object" string="Done" - attrs="{'invisible':[('state', 'in', ('done', 'draft'))]}" + attrs="{'invisible':[('state', 'in', ('done', 'draft', 'canceled'))]}" + groups="rma.group_rma_customer_user" + /> +