diff --git a/addons/web/static/src/js/control_panel/custom_filter_item.js b/addons/web/static/src/js/control_panel/custom_filter_item.js index 6682b660b78..b2ff23344d9 100644 --- a/addons/web/static/src/js/control_panel/custom_filter_item.js +++ b/addons/web/static/src/js/control_panel/custom_filter_item.js @@ -180,6 +180,10 @@ odoo.define('web.CustomFilterItem', function (require) { [field.name, '>=', domainValue[0]], [field.name, '<=', domainValue[1]] ); + } else if (operator.symbol === 'startswith') { + domainArray.push([field.name, '=ilike', domainValue[0] + '%']); + } else if (operator.symbol === 'endswith') { + domainArray.push([field.name, '=ilike', '%' + domainValue[0]]); } else { domainArray.push([field.name, operator.symbol, domainValue[0]]); } diff --git a/addons/web/static/src/js/control_panel/search_utils.js b/addons/web/static/src/js/control_panel/search_utils.js index 8fce5b23ef6..d240d2e1fb2 100644 --- a/addons/web/static/src/js/control_panel/search_utils.js +++ b/addons/web/static/src/js/control_panel/search_utils.js @@ -18,6 +18,8 @@ odoo.define('web.searchUtils', function (require) { char: [ { symbol: "ilike", description: _lt("contains") }, { symbol: "not ilike", description: _lt("doesn't contain") }, + { symbol: "startswith", description: _lt("starts with") }, + { symbol: "endswith", description: _lt("ends with") }, { symbol: "=", description: _lt("is equal to") }, { symbol: "!=", description: _lt("is not equal to") }, { symbol: "!=", description: _lt("is set"), value: false },