From 37a18b4d95e759a772e347364295144460d53f7b Mon Sep 17 00:00:00 2001 From: Jared Kipe Date: Sat, 20 Mar 2021 13:29:17 -0700 Subject: [PATCH] [MIG] rma_sale: to Odoo 14, new portal improvements --- rma_sale/__init__.py | 1 + rma_sale/__manifest__.py | 2 +- rma_sale/controllers/__init__.py | 3 ++ rma_sale/controllers/portal.py | 53 +++++++++++++++++++++++++++ rma_sale/security/ir.model.access.csv | 14 ++++--- rma_sale/tests/test_rma.py | 6 +-- rma_sale/views/portal_templates.xml | 20 ++++++++++ 7 files changed, 89 insertions(+), 10 deletions(-) create mode 100644 rma_sale/controllers/__init__.py create mode 100644 rma_sale/controllers/portal.py diff --git a/rma_sale/__init__.py b/rma_sale/__init__.py index c7120225..d62bb54d 100644 --- a/rma_sale/__init__.py +++ b/rma_sale/__init__.py @@ -1,4 +1,5 @@ # Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. +from . import controllers from . import models from . import wizard diff --git a/rma_sale/__manifest__.py b/rma_sale/__manifest__.py index 2f3f70ff..57d8009b 100644 --- a/rma_sale/__manifest__.py +++ b/rma_sale/__manifest__.py @@ -2,7 +2,7 @@ { 'name': 'Hibou RMAs for Sale Orders', - 'version': '13.0.1.2.0', + 'version': '14.0.1.0.0', 'category': 'Sale', 'author': 'Hibou Corp.', 'license': 'OPL-1', diff --git a/rma_sale/controllers/__init__.py b/rma_sale/controllers/__init__.py new file mode 100644 index 00000000..23d43ae2 --- /dev/null +++ b/rma_sale/controllers/__init__.py @@ -0,0 +1,3 @@ +# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. + +from . import portal diff --git a/rma_sale/controllers/portal.py b/rma_sale/controllers/portal.py new file mode 100644 index 00000000..5e9a2fef --- /dev/null +++ b/rma_sale/controllers/portal.py @@ -0,0 +1,53 @@ +# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. + +from operator import itemgetter + +import odoo.addons.rma.controllers.portal as rma_portal +from odoo.http import request +from odoo.tools.translate import _ +from odoo.osv.expression import OR +from odoo.tools import groupby as groupbyelem + +original_rma_portal_searchbar_filters = rma_portal.rma_portal_searchbar_filters +original_rma_portal_searchbar_inputs = rma_portal.rma_portal_searchbar_inputs +original_rma_portal_search_domain = rma_portal.rma_portal_search_domain +original_rma_portal_searchbar_groupby = rma_portal.rma_portal_searchbar_groupby +original_rma_portal_group_rmas = rma_portal.rma_portal_group_rmas + + +def rma_portal_searchbar_filters(): + res = original_rma_portal_searchbar_filters() + res['sale'] = {'label': _('Sale Order'), 'domain': [('sale_order_id', '!=', False)]} + return res + + +def rma_portal_searchbar_inputs(): + res = original_rma_portal_searchbar_inputs() + res['sale'] = {'input': 'sale', 'label': _('Search Sale Order')} + return res + + +def rma_portal_search_domain(search_in, search): + search_domain = original_rma_portal_search_domain(search_in, search) + if search_in in ('sale', 'all'): + search_domain = OR([search_domain, [('sale_order_id', 'ilike', search)]]) + return search_domain + + +def rma_portal_searchbar_groupby(): + res = original_rma_portal_searchbar_groupby() + res['sale'] = {'input': 'sale', 'label': _('Sale Order')} + return res + + +def rma_portal_group_rmas(rmas, groupby): + if groupby == 'sale': + return [request.env['rma.rma'].concat(*g) for k, g in groupbyelem(rmas, itemgetter('sale_order_id'))] + return original_rma_portal_group_rmas(rmas, groupby) + + +rma_portal.rma_portal_searchbar_filters = rma_portal_searchbar_filters +rma_portal.rma_portal_searchbar_inputs = rma_portal_searchbar_inputs +rma_portal.rma_portal_search_domain = rma_portal_search_domain +rma_portal.rma_portal_searchbar_groupby = rma_portal_searchbar_groupby +rma_portal.rma_portal_group_rmas = rma_portal_group_rmas diff --git a/rma_sale/security/ir.model.access.csv b/rma_sale/security/ir.model.access.csv index ccb878eb..0d0ac54e 100644 --- a/rma_sale/security/ir.model.access.csv +++ b/rma_sale/security/ir.model.access.csv @@ -1,7 +1,9 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"manage_rma sale","manage rma","rma.model_rma_rma","sales_team.group_sale_salesman",1,1,1,1 -"manage_rma_line sale","manage rma line","rma.model_rma_line","sales_team.group_sale_salesman",1,1,1,1 -"manage_rma_template sale","manage rma template","rma.model_rma_template","sales_team.group_sale_manager",1,1,1,1 -"manage_rma_tag sale","manage rma tag","rma.model_rma_tag","sales_team.group_sale_manager",1,1,1,1 -"access_rma_template sale","access rma template","rma.model_rma_template","sales_team.group_sale_salesman",1,1,0,0 -"access_rma_tag sale","access rma tag","rma.model_rma_tag","sales_team.group_sale_salesman",1,0,0,0 \ No newline at end of file +"manage_rma_sale","manage rma","rma.model_rma_rma","sales_team.group_sale_salesman",1,1,1,1 +"manage_rma_line_sale","manage rma line","rma.model_rma_line","sales_team.group_sale_salesman",1,1,1,1 +"manage_rma_template_sale","manage rma template","rma.model_rma_template","sales_team.group_sale_manager",1,1,1,1 +"manage_rma_tag_sale","manage rma tag","rma.model_rma_tag","sales_team.group_sale_manager",1,1,1,1 +"access_rma_template_sale","access rma template","rma.model_rma_template","sales_team.group_sale_salesman",1,1,0,0 +"access_rma_tag_sale","access rma tag","rma.model_rma_tag","sales_team.group_sale_salesman",1,0,0,0 +"access_rma_sale_make_lines","access rma.sale.make.lines","rma_sale.model_rma_sale_make_lines","sales_team.group_sale_salesman",1,1,1,1 +"access_rma_sale_make_lines_line","access rma.sale.make.lines.line","rma_sale.model_rma_sale_make_lines_line","sales_team.group_sale_salesman",1,1,1,1 \ No newline at end of file diff --git a/rma_sale/tests/test_rma.py b/rma_sale/tests/test_rma.py index 7cd4d329..d7af82ea 100644 --- a/rma_sale/tests/test_rma.py +++ b/rma_sale/tests/test_rma.py @@ -166,7 +166,7 @@ class TestRMASale(TestRMA): # Existing lot cannot be re-used. with self.assertRaises(ValidationError): - rma2.in_picking_id.action_done() + rma2.in_picking_id.button_validate() # RMA cannot be completed because the inbound picking state is confirmed with self.assertRaises(UserError): @@ -290,8 +290,8 @@ class TestRMASale(TestRMA): self.assertEqual(sale_line.price_unit, so_line.price_unit) # Invoices do not have their anglo-saxon cost lines until they post - order_invoice.post() - rma_invoice.post() + order_invoice._post(soft=False) + rma_invoice._post(soft=False) # Find the return to vendor RMA rtv_rma = self.env['rma.rma'].search([('parent_id', '=', rma.id)]) diff --git a/rma_sale/views/portal_templates.xml b/rma_sale/views/portal_templates.xml index bb97b9b7..f4e88407 100644 --- a/rma_sale/views/portal_templates.xml +++ b/rma_sale/views/portal_templates.xml @@ -1,5 +1,25 @@ + + +