Skip to content

Commit

Permalink
12.0 web portal filters (#1115)
Browse files Browse the repository at this point in the history
* [IMP] website_portal_filter: add date from to filter
  • Loading branch information
leiremartinezdesantos committed May 27, 2021
1 parent f935565 commit fa25796
Show file tree
Hide file tree
Showing 6 changed files with 279 additions and 88 deletions.
1 change: 1 addition & 0 deletions website_portal_filter/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"author": "AvanzOSC",
"website": "http://www.avanzosc.es",
"depends": [
"account",
"sale",
"purchase",
"portal",
Expand Down
122 changes: 81 additions & 41 deletions website_portal_filter/controllers/portal.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,8 @@ def portal_my_orders(self, page=1, date_begin=None, date_end=None,
default_url = '/my/orders'

user = request.env.user
domain = [
('state', 'in', ['sale', 'done']),
('partner_id', '=', user.partner_id.id)
]
domain = self.get_base_sale_domain()

all_orders = SaleOrder.sudo().search(domain)

order_partner_ids = None
Expand Down Expand Up @@ -62,6 +60,9 @@ def portal_my_orders(self, page=1, date_begin=None, date_end=None,
request.session['my_orders_history'] = orders.ids[:100]
date_filters = self._get_date_filters()

_date = args['_date']
if not _date:
_date = 'year'
res.qcontext.update({
'orders': orders,
'domain': domain,
Expand All @@ -72,17 +73,25 @@ def portal_my_orders(self, page=1, date_begin=None, date_end=None,
'date_from': args['date_from'],
'date_to': args['date_to'],
'search': args['search'],
'date': args['_date'],
'date': _date,
'customer': args['customer'],
'searchbar_inputs': searchbar_inputs,
# 'searchbar_filters': [],
'order_partner_ids': order_partner_ids,
'partner_ids': order_partner_ids,
'filterby': args['filterby'],
'date_filters': date_filters,
'show_date_from_to': True
})
return res

def get_base_sale_domain(self):
user = request.env.user
domain = [
('state', 'in', ['sale', 'done']),
('partner_id', '=', user.partner_id.id)
]
return domain

@http.route()
def portal_my_purchase_orders(self, page=1, date_begin=None, date_end=None,
sortby=None, filterby=None, **kw):
Expand All @@ -91,11 +100,7 @@ def portal_my_purchase_orders(self, page=1, date_begin=None, date_end=None,
SaleOrder = request.env['purchase.order']
default_url = '/my/purchase'

user = request.env.user
domain = [
('user_id', '=', user.id),
('state', 'in', ['purchase', 'done', 'cancel'])
]
domain = self.get_base_purchase_domain()
all_orders = SaleOrder.sudo().search(domain)

order_partner_ids = None
Expand All @@ -118,11 +123,12 @@ def portal_my_purchase_orders(self, page=1, date_begin=None, date_end=None,
# count for pager
order_count = SaleOrder.sudo().search_count(domain)

keep, args = self.get_keep_url(default_url, kw)

# pager
pager = portal_pager(
url="/my/purchase",
url_args={'date_begin': date_begin, 'date_end': date_end,
'sortby': sortby},
url=default_url,
url_args=args,
total=order_count,
page=page,
step=self._items_per_page
Expand All @@ -134,31 +140,37 @@ def portal_my_purchase_orders(self, page=1, date_begin=None, date_end=None,
request.session['my_orders_history'] = orders.ids[:100]
date_filters = self._get_date_filters()

date_to = None
if 'date_to' in kw:
date_to = kw.get('date_to')
date_from = None
if 'date_from' in kw:
date_from = kw.get('date_from')
_date = args['_date']
if not _date:
_date = 'year'
res.qcontext.update({
'orders': orders,
'domain': domain,
'keep': keep,
'default_url': default_url,
'pager': pager,
'date_from': date_from,
'date_to': date_to,
'search': kw.get('search'),
'date': kw.get('date') if 'date' in kw else 'all',
'customer': kw.get('customer') if 'customer'in kw else 'all',
'date_from': args['date_from'],
'date_to': args['date_to'],
'search': args['search'],
'date': _date,
'customer': args['customer'],
'searchbar_inputs': searchbar_inputs,
# 'searchbar_filters': [],
'order_partner_ids': order_partner_ids,
'filterby': kw.get('filterby'),
'partner_ids': order_partner_ids,
'filterby': args['filterby'],
'date_filters': date_filters,
'show_date_from_to': True
})
return res

def get_base_purchase_domain(self):
user = request.env.user
domain = [
('user_id', '=', user.id),
('state', 'in', ['purchase', 'done', 'cancel'])
]
return domain

@http.route()
def portal_my_invoices(self, page=1, date_begin=None, date_end=None,
sortby=None, search_in='all', **kw):
Expand All @@ -167,9 +179,14 @@ def portal_my_invoices(self, page=1, date_begin=None, date_end=None,
AccountInvoice = request.env['account.invoice']
default_url = "/my/invoices"

domain = [('state', 'not in', ('draft', 'cancel'))]
domain = self.get_base_invoice_domain()
all_invoices = AccountInvoice.sudo().search(domain)
domain += self.filter_data(kw, 'invoices')

searchbar_inputs = {
'all': {'input': 'all', 'label': _('Search in All')},
}

searchbar_sortings = res.qcontext.get('searchbar_sortings')
# default sort by order
if not sortby:
Expand All @@ -191,18 +208,30 @@ def portal_my_invoices(self, page=1, date_begin=None, date_end=None,
# content according to pager and archive selected
invoices = AccountInvoice.search(domain, order=order, limit=self._items_per_page, offset=pager['offset'])
request.session['my_invoices_history'] = invoices.ids[:100]

invoice_partner_ids = all_invoices.mapped('partner_id').sorted(key=lambda r: str(r.name)) if invoices else None
res.qcontext.update({
'invoices': invoices,
'keep': keep,
'pager': pager,
'search_in': search_in,
'searchbar_inputs': searchbar_inputs,
'search': args['search'],
'date_from': args['date_from'],
'date_to': args['date_to'],
'show_date_from_to': True
'show_date_from_to': True,
'customer': args['customer'],
'partner_ids': invoice_partner_ids,
})

return res

def get_base_invoice_domain(self):
user = request.env.user
domain = [
('state', 'not in', ('draft', 'cancel')),
('partner_id', '=', user.partner_id.id)]
return domain

def _get_date_filters(self):
return {
'all': {'input': 'all', 'label': _('All dates')},
Expand All @@ -228,8 +257,15 @@ def filter_data(self, args, model):

if 'search' in args and args.get('search') != '':
search = args.get('search')
domain += ['|', ('name', 'ilike', search),
('partner_id.name', 'ilike', search)]
if model == 'invoices':
domain += ['|', ('name', 'ilike', search), '|',
('partner_id.name', 'ilike', search),
('number', 'ilike', search)
]
else:
domain += ['|', ('name', 'ilike', search),
('partner_id.name', 'ilike', search)]


if 'date' in args and args.get('date') not in ['all', '']:
_date = args.get('date')
Expand All @@ -254,15 +290,19 @@ def filter_data(self, args, model):

def _prepare_portal_layout_values(self):
values = super(CustomerPortal, self)._prepare_portal_layout_values()
partner = request.env.user.partner_id
values['purchase_count'] = request.env['purchase.order'].search_count([
('state', 'in', ['purchase', 'done', 'cancel']),
('partner_id', '=', request.env.uid)
]) if request.env['purchase.order'].check_access_rights('read', raise_exception=False) else 0
values['order_count'] = request.env['sale.order'].search_count([
('state', 'in', ['sale', 'done']),
('partner_id', '=', partner.id)
]) if request.env['sale.order'].check_access_rights('read', raise_exception=False) else 0

values['purchase_count'] = request.env['purchase.order'].search_count(
self.get_base_purchase_domain()
) if request.env['purchase.order'].check_access_rights('read', raise_exception=False) else 0

values['order_count'] = request.env['sale.order'].search_count(
self.get_base_sale_domain()
) if request.env['sale.order'].check_access_rights('read', raise_exception=False) else 0

values['invoice_count'] = request.env['account.invoice'].search_count(
self.get_base_invoice_domain()
) if request.env['account.invoice'].check_access_rights('read', raise_exception=False) else 0

return values

def get_keep_url(self, default_url, kw):
Expand Down
50 changes: 28 additions & 22 deletions website_portal_filter/i18n/es.po
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0+e\n"
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-03 13:54+0000\n"
"PO-Revision-Date: 2021-05-03 13:54+0000\n"
"POT-Creation-Date: 2021-05-24 15:04+0000\n"
"PO-Revision-Date: 2021-05-24 15:04+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
Expand All @@ -26,36 +26,41 @@ msgid "<i class=\"fa fa-fw fa-times\" role=\"img\" aria-label=\"Cancel\" title=\
msgstr "<i class=\"fa fa-fw fa-times\" role=\"img\" aria-label=\"Cancel\" title=\"Cancel\"/>Cancelar"

#. module: website_portal_filter
#: model_terms:ir.ui.view,arch_db:website_portal_filter.website_sale_filters_filters
msgid "<span class=\"small mr-1 navbar-text ml-1\">Date from:</span>"
msgstr "<span class=\"small mr-1 navbar-text ml-1\">Fecha desde:</span>"
#: model_terms:ir.ui.view,arch_db:website_portal_filter.website_portal_filters_filters
msgid "<span class=\"small navbar-text ml-2\">Dates between:</span>"
msgstr "<span class=\"small navbar-text ml-2\">Fechas entre:</span>"

#. module: website_portal_filter
#: model_terms:ir.ui.view,arch_db:website_portal_filter.website_sale_filters_filters
msgid "<span class=\"small mr-1 navbar-text ml-1\">Date to:</span>"
msgstr "<span class=\"small mr-1 navbar-text ml-1\">Fecha hasta:</span>"
#: model_terms:ir.ui.view,arch_db:website_portal_filter.website_portal_filters_filters
msgid "<span class=\"small navbar-text ml-2\">Filter by:</span>"
msgstr "<span class=\"small navbar-text ml-2\">Filtrar por:</span>"

#. module: website_portal_filter
#: model_terms:ir.ui.view,arch_db:website_portal_filter.website_sale_filters_filters
#: model_terms:ir.ui.view,arch_db:website_portal_filter.website_portal_filters_filters
msgid "<span>All customers</span>"
msgstr "<span>Todos los clientes</span>"

#. module: website_portal_filter
#: model_terms:ir.ui.view,arch_db:website_portal_filter.website_sale_filters_filters
msgid "<span>Customers</span>"
msgstr "<span>Clientes</span>"
#: model_terms:ir.ui.view,arch_db:website_portal_filter.website_portal_filters_filters
msgid "<span>Customer</span>"
msgstr "<span>Cliente</span>"

#. module: website_portal_filter
#: model_terms:ir.ui.view,arch_db:website_portal_filter.website_sale_filters_filters
msgid "<span>Dates</span>"
msgstr "<span>Fechas</span>"
#: model_terms:ir.ui.view,arch_db:website_portal_filter.website_portal_filters_filters
msgid "<span>Date</span>"
msgstr "<span>Fecha</span>"

#. module: website_portal_filter
#: code:addons/website_portal_filter/controllers/portal.py:13
#: code:addons/website_portal_filter/controllers/portal.py:208
#, python-format
msgid "All dates"
msgstr "Todas las fechas"

#. module: website_portal_filter
#: model_terms:ir.ui.view,arch_db:website_portal_filter.website_portal_filters_filters
msgid "Apply"
msgstr "Solicitar"

#. module: website_portal_filter
#: model_terms:ir.ui.view,arch_db:website_portal_filter.website_sale_order_portal_table
msgid "Confirmation Date"
Expand All @@ -78,7 +83,7 @@ msgid "Is current year"
msgstr "Es año actual"

#. module: website_portal_filter
#: code:addons/website_portal_filter/controllers/portal.py:18
#: code:addons/website_portal_filter/controllers/portal.py:213
#, python-format
msgid "Last week"
msgstr "Última semana"
Expand All @@ -89,25 +94,26 @@ msgid "Sale Order"
msgstr "Pedido de venta"

#. module: website_portal_filter
#: code:addons/website_portal_filter/controllers/portal.py:65
#: code:addons/website_portal_filter/controllers/portal.py:35
#: code:addons/website_portal_filter/controllers/portal.py:108
#, python-format
msgid "Search in All"
msgstr "Buscar en todo"

#. module: website_portal_filter
#: code:addons/website_portal_filter/controllers/portal.py:22
#: code:addons/website_portal_filter/controllers/portal.py:217
#, python-format
msgid "This month"
msgstr "Este mes"

#. module: website_portal_filter
#: code:addons/website_portal_filter/controllers/portal.py:24
#: code:addons/website_portal_filter/controllers/portal.py:219
#, python-format
msgid "This year"
msgstr "Este año"

#. module: website_portal_filter
#: code:addons/website_portal_filter/controllers/portal.py:14
#: code:addons/website_portal_filter/controllers/portal.py:209
#, python-format
msgid "Today"
msgstr "Hoy"
Expand Down

0 comments on commit fa25796

Please sign in to comment.