[MIG] rma_sale: to Odoo 14, new portal improvements

This commit is contained in:
Jared Kipe
2021-03-20 13:29:17 -07:00
parent 5213dcd64e
commit 37a18b4d95
7 changed files with 89 additions and 10 deletions

View File

@@ -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

View File

@@ -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',

View File

@@ -0,0 +1,3 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
from . import portal

View File

@@ -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

View File

@@ -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
"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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 manage_rma sale manage_rma_sale manage rma rma.model_rma_rma sales_team.group_sale_salesman 1 1 1 1
3 manage_rma_line sale manage_rma_line_sale manage rma line rma.model_rma_line sales_team.group_sale_salesman 1 1 1 1
4 manage_rma_template sale manage_rma_template_sale manage rma template rma.model_rma_template sales_team.group_sale_manager 1 1 1 1
5 manage_rma_tag sale manage_rma_tag_sale manage rma tag rma.model_rma_tag sales_team.group_sale_manager 1 1 1 1
6 access_rma_template sale access_rma_template_sale access rma template rma.model_rma_template sales_team.group_sale_salesman 1 1 0 0
7 access_rma_tag sale access_rma_tag_sale access rma tag rma.model_rma_tag sales_team.group_sale_salesman 1 0 0 0
8 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
9 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

View File

@@ -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)])

View File

@@ -1,5 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="portal_my_rma_inherit" inherit_id="rma.portal_my_rma">
<xpath expr="//th[hasclass('rma-state')]" position="before">
<th class="rma-sale">
<t t-if="groupby == 'sale'">
<em class="font-weight-normal text-muted">RMAs for sale:</em>
<span t-field="rmas[0].sale_order_id"/>
</t>
<t t-else="">
<span>Sale Order</span>
</t>
</th>
</xpath>
<xpath expr="//td[hasclass('rma-state')]" position="before">
<td class="rma-sale">
<span t-if="groupby != 'sale'" t-field="rma.sale_order_id"/>
</td>
</xpath>
</template>
<template id="portal_my_rma_rma_inherit" inherit_id="rma.portal_my_rma_rma">
<xpath expr="//div[hasclass('rma-details')]" position="inside">
<div t-if="rma.sale_order_id" class="mb8">