Files
Odoo-18.0-20251222/portal_sale_order_search/controllers/main.py
tocmo0nlord adbe430761
Some checks failed
pre-commit / pre-commit (push) Has been cancelled
tests / Detect unreleased dependencies (push) Has been cancelled
tests / test with OCB (push) Has been cancelled
tests / test with Odoo (push) Has been cancelled
Initial commit: Odoo 18.0-20251222 extra-addons
2026-03-13 20:43:25 +00:00

82 lines
2.8 KiB
Python
Executable File

# Copyright 2025 Tecnativa - Pilar Vargas
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import _
from odoo.http import request
from odoo.osv import expression
from odoo.addons.portal.controllers import portal
class CustomerPortalSaleOrderSearch(portal.CustomerPortal):
def _get_searchbar_order_inputs(self):
return {
"all": {"label": _("All"), "input": "all"},
"name": {"label": _("Order Ref"), "input": "name"},
"ref": {"label": _("Order Customer Ref"), "input": "ref"},
"partner": {"label": _("Customer"), "input": "partner"},
}
def _get_search_order_domain(self, search):
search_in = request.params.get("search_in", "all")
search_domain = []
if search_in == "all":
search_domain = expression.OR(
[
[("name", "ilike", search)],
[("client_order_ref", "ilike", search)],
[("partner_id.name", "ilike", search)],
]
)
elif search_in == "name":
search_domain = [("name", "ilike", search)]
elif search_in == "ref":
search_domain = [("client_order_ref", "ilike", search)]
elif search_in == "partner":
search_domain = [("partner_id.name", "ilike", search)]
return search_domain
def _prepare_quotations_domain(self, partner):
domain = super()._prepare_quotations_domain(partner)
search = request.params.get("search", "").strip()
if search:
search_domain = self._get_search_order_domain(search)
domain = expression.AND([domain, search_domain])
return domain
def _prepare_orders_domain(self, partner):
domain = super()._prepare_orders_domain(partner)
search = request.params.get("search", "").strip()
if search:
search_domain = self._get_search_order_domain(search)
domain = expression.AND([domain, search_domain])
return domain
def _prepare_sale_portal_rendering_values(
self,
page=1,
date_begin=None,
date_end=None,
sortby=None,
quotation_page=False,
**kwargs,
):
values = super()._prepare_sale_portal_rendering_values(
page=page,
date_begin=date_begin,
date_end=date_end,
sortby=sortby,
quotation_page=quotation_page,
**kwargs,
)
search = request.params.get("search") or ""
search_in = request.params.get("search_in") or "all"
values.update(
{
"search": search,
"search_in": search_in,
"searchbar_inputs": self._get_searchbar_order_inputs(),
}
)
return values