From 4ff4c727f1fe8690a036dde70994cfecb78b9a02 Mon Sep 17 00:00:00 2001 From: Jordi Ballester Date: Sun, 26 Jun 2022 08:38:43 +0200 Subject: [PATCH 1/2] [IMP] rma_sale: introduce new config settings. - auto_confirm_rma_sale - free_of_charge_rma_sale --- rma/views/res_config_settings_views.xml | 13 +++++++++---- rma_sale/models/rma_operation.py | 10 ++++++++++ rma_sale/views/rma_operation_view.xml | 4 ++++ rma_sale/wizards/rma_order_line_make_sale_order.py | 4 ++++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/rma/views/res_config_settings_views.xml b/rma/views/res_config_settings_views.xml index d3e205c4..b462df4f 100644 --- a/rma/views/res_config_settings_views.xml +++ b/rma/views/res_config_settings_views.xml @@ -17,7 +17,10 @@ >

Return Merchandise Authorization

-
+
@@ -28,7 +31,10 @@
-
+
@@ -39,7 +45,7 @@
-
+
@@ -50,7 +56,6 @@
- diff --git a/rma_sale/models/rma_operation.py b/rma_sale/models/rma_operation.py index e9089dba..224bf33f 100644 --- a/rma_sale/models/rma_operation.py +++ b/rma_sale/models/rma_operation.py @@ -14,3 +14,13 @@ class RmaOperation(models.Model): ], default="no", ) + auto_confirm_rma_sale = fields.Boolean( + string="Auto confirm Sales Order upon creation from RMA", + help="When a sales is created from an RMA, automatically confirm it", + readonly=False, + ) + free_of_charge_rma_sale = fields.Boolean( + string="Free of charge RMA Sales Order", + help="Sales orders created from RMA are free of charge by default", + readonly=False, + ) diff --git a/rma_sale/views/rma_operation_view.xml b/rma_sale/views/rma_operation_view.xml index a8b91640..3fb083b4 100644 --- a/rma_sale/views/rma_operation_view.xml +++ b/rma_sale/views/rma_operation_view.xml @@ -20,6 +20,10 @@ + + + + diff --git a/rma_sale/wizards/rma_order_line_make_sale_order.py b/rma_sale/wizards/rma_order_line_make_sale_order.py index abe5910e..bddfde45 100644 --- a/rma_sale/wizards/rma_order_line_make_sale_order.py +++ b/rma_sale/wizards/rma_order_line_make_sale_order.py @@ -29,6 +29,7 @@ class RmaLineMakeSaleOrder(models.TransientModel): @api.model def _prepare_item(self, line): + free_of_charge_rma_sale = line.operation_id.free_of_charge_rma_sale return { "line_id": line.id, "product_id": line.product_id.id, @@ -37,6 +38,7 @@ class RmaLineMakeSaleOrder(models.TransientModel): "rma_id": line.rma_id.id, "out_warehouse_id": line.out_warehouse_id.id, "product_uom_id": line.uom_id.id, + "free_of_charge": free_of_charge_rma_sale, } @api.model @@ -126,6 +128,8 @@ class RmaLineMakeSaleOrder(models.TransientModel): so_line_data = self._prepare_sale_order_line(sale, item) so_line_obj.create(so_line_data) + if line.operation_id.auto_confirm_rma_sale: + sale.action_confirm() res.append(sale.id) action = self.env.ref("sale.action_orders") From 2bbf550862d8cd397df8a6468f1490c1bc5fc3a4 Mon Sep 17 00:00:00 2001 From: Jordi Ballester Date: Mon, 8 Aug 2022 09:03:50 +0200 Subject: [PATCH 2/2] [IMP] rma_sale: add hook _post_process_sale_order for better extensibility --- rma_sale/wizards/rma_order_line_make_sale_order.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/rma_sale/wizards/rma_order_line_make_sale_order.py b/rma_sale/wizards/rma_order_line_make_sale_order.py index bddfde45..bed93c63 100644 --- a/rma_sale/wizards/rma_order_line_make_sale_order.py +++ b/rma_sale/wizards/rma_order_line_make_sale_order.py @@ -108,6 +108,11 @@ class RmaLineMakeSaleOrder(models.TransientModel): vals["price_unit"] = 0.0 return vals + def _post_process_sale_order(self, item, sale_line): + line = item.line_id + if line.operation_id.auto_confirm_rma_sale: + sale_line.order_id.action_confirm() + def make_sale_order(self): res = [] sale_obj = self.env["sale.order"] @@ -127,9 +132,8 @@ class RmaLineMakeSaleOrder(models.TransientModel): sale.name = sale.name + " - " + line.name so_line_data = self._prepare_sale_order_line(sale, item) - so_line_obj.create(so_line_data) - if line.operation_id.auto_confirm_rma_sale: - sale.action_confirm() + sale_line = so_line_obj.create(so_line_data) + self._post_process_sale_order(item, sale_line) res.append(sale.id) action = self.env.ref("sale.action_orders")