From 6fc3bee255b4f2be9fe5a296eb81a1ae879d7282 Mon Sep 17 00:00:00 2001 From: Julien Mougenot Date: Mon, 20 Apr 2020 10:01:57 +0000 Subject: [FIX] web: search many2one fields with correct value Before this commit, searching a many2one field in the search bar would create a domain with a parsed version of the input string. However the parser of m2o fields returns a number (ID) and would consistently return 'NaN'. Now, raw values are taken as is when searching with many2one fields. Task 2239254 closes odoo/odoo#50410 X-original-commit: bac74010daae868da474de9439bc7027d9206e38 Signed-off-by: Aaron Bohy (aab) Signed-off-by: Julien Mougenot (jum) --- .../web/static/src/js/control_panel/search_bar.js | 27 ++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'addons/web/static/src/js/control_panel') diff --git a/addons/web/static/src/js/control_panel/search_bar.js b/addons/web/static/src/js/control_panel/search_bar.js index a56c3ea0973..a86e22a10b8 100644 --- a/addons/web/static/src/js/control_panel/search_bar.js +++ b/addons/web/static/src/js/control_panel/search_bar.js @@ -239,16 +239,25 @@ odoo.define('web.SearchBar', function (require) { const { type } = this.props.fields[source.fieldName]; const parser = field_utils.parse[type]; let parsedValue; - if (['date', 'datetime'].includes(type)) { - const parsedDate = parser(rawValue, { type }, { timezone: true }); - const dateFormat = type === 'datetime' ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD'; - const momentValue = moment(parsedDate, dateFormat); - if (!momentValue.isValid()) { - throw new Error('Invalid date'); + switch (type) { + case 'date': + case 'datetime': { + const parsedDate = parser(rawValue, { type }, { timezone: true }); + const dateFormat = type === 'datetime' ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD'; + const momentValue = moment(parsedDate, dateFormat); + if (!momentValue.isValid()) { + throw new Error('Invalid date'); + } + parsedValue = parsedDate.toJSON(); + break; + } + case 'many2one': { + parsedValue = rawValue; + break; + } + default: { + parsedValue = parser(rawValue); } - parsedValue = parsedDate.toJSON(); - } else { - parsedValue = parser(rawValue); } return parsedValue; } -- cgit v1.2.3