From bf325b531cc0197243d28e7346dc069c17965e73 Mon Sep 17 00:00:00 2001 From: SilvioGregorini Date: Wed, 31 Mar 2021 16:53:42 +0200 Subject: [PATCH 1/2] [FIX] rma_sale: fix wrong values for RMA creation Lesser fix for creating RMA from website. Current values will break any custom behaviour because Many2one fields are set using strings instead of integer (IDs). --- rma_sale/controllers/sale_portal.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rma_sale/controllers/sale_portal.py b/rma_sale/controllers/sale_portal.py index 70403a80..126473c6 100644 --- a/rma_sale/controllers/sale_portal.py +++ b/rma_sale/controllers/sale_portal.py @@ -25,10 +25,15 @@ class CustomerPortal(CustomerPortal): return request.redirect("/my") order_obj = request.env["sale.order"] wizard_obj = request.env["sale.order.rma.wizard"] + wizard_line_field_types = { + f: d["type"] for f, d in wizard_obj.line_ids.fields_get().items() + } # Set wizard line vals mapped_vals = {} for name, value in post.items(): row, field_name = name.split("-", 1) + if wizard_line_field_types.get(field_name) == "many2one": + value = int(value) if value else False mapped_vals.setdefault(row, {}).update({field_name: value}) # If no operation is filled, no RMA will be created line_vals = [ From 1762317176b1cc4a47facd3fe6340acbc638ceb9 Mon Sep 17 00:00:00 2001 From: SilvioGregorini Date: Tue, 13 Apr 2021 23:41:32 +0200 Subject: [PATCH 2/2] [FIX] rma_sale: fix CacheError in _prepare_rma_values() Lesser fix for sale.order.line.rma.wizard methods. When method '_prepare_rma_values' was called upon records where field 'picking_id' was empty, Odoo raised a CacheError when trying to access field 'move_id'. That happened because computed method '_compute_move_id' was not assigning a proper value to such field when 'picking_id' was empty. Once the computed method is fixed (by simply assigning 'False' as 'move_id' value when no picking is set), the CacheError is solved. --- rma_sale/wizard/sale_order_rma_wizard.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rma_sale/wizard/sale_order_rma_wizard.py b/rma_sale/wizard/sale_order_rma_wizard.py index 537c72e7..4d9fc229 100644 --- a/rma_sale/wizard/sale_order_rma_wizard.py +++ b/rma_sale/wizard/sale_order_rma_wizard.py @@ -130,6 +130,8 @@ class SaleOrderLineRmaWizard(models.TransientModel): and r.sale_line_id.order_id == record.order_id ) ) + else: + record.move_id = False @api.depends("order_id") def _compute_allowed_product_ids(self):