diff --git a/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js b/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js index 60c9adf9aa1..2b3e3a1ba04 100644 --- a/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js +++ b/addons/web/static/src/legacy/js/control_panel/custom_filter_item.js @@ -120,9 +120,9 @@ odoo.define('web.CustomFilterItem', function (require) { } break; case 'datetime': - condition.value = [moment('00:00:00', 'hh:mm:ss')]; + condition.value = [moment('00:00:00', 'hh:mm:ss').utcOffset(0, true)]; if (operator.symbol === 'between') { - condition.value.push(moment('23:59:59', 'hh:mm:ss')); + condition.value.push(moment('23:59:59', 'hh:mm:ss').utcOffset(0, true)); } break; case 'selection': diff --git a/addons/web/static/tests/legacy/control_panel/custom_filter_item_tests.js b/addons/web/static/tests/legacy/control_panel/custom_filter_item_tests.js index 5a00e618090..8133b05a66e 100644 --- a/addons/web/static/tests/legacy/control_panel/custom_filter_item_tests.js +++ b/addons/web/static/tests/legacy/control_panel/custom_filter_item_tests.js @@ -419,6 +419,45 @@ odoo.define('web.filter_menu_generator_tests', function (require) { cfi.destroy(); }); + QUnit.test('default custom filter datetime', async function (assert) { + assert.expect(5); + + class MockedSearchModel extends ActionModel { + dispatch(method, ...args) { + assert.strictEqual(method, 'createNewFilters'); + const domain = JSON.parse(args[0][0].domain); + assert.strictEqual(domain[0][2].split(' ')[1], + '04:00:00', + "domain should be in UTC format"); + assert.strictEqual(domain[1][2].split(' ')[1], + '03:59:59', + "domain should be in UTC format"); + } + } + const searchModel = new MockedSearchModel(); + const cfi = await createComponent(CustomFilterItem, { + props: { + fields: this.fields, + }, + session: { + getTZOffset() { + return -240; + }, + }, + env: { searchModel }, + }); + + await toggleAddCustomFilterStandalone(cfi); + await testUtils.fields.editSelect(cfi.el.querySelector('.o_generator_menu_field'), 'date_time_field'); + + assert.strictEqual(cfi.el.querySelector('.o_generator_menu_field').value, 'date_time_field'); + assert.strictEqual(cfi.el.querySelector('.o_generator_menu_operator').value, 'between'); + + await cpHelpers.applyFilter(cfi); + + cfi.destroy(); + }); + QUnit.test('input value parsing', async function (assert) { assert.expect(7);