mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
[MIG] rma_sale: to Odoo 14, new portal improvements
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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',
|
||||
|
||||
3
rma_sale/controllers/__init__.py
Normal file
3
rma_sale/controllers/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||
|
||||
from . import portal
|
||||
53
rma_sale/controllers/portal.py
Normal file
53
rma_sale/controllers/portal.py
Normal 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
|
||||
@@ -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
|
||||
|
@@ -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)])
|
||||
|
||||
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user