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 8dd73f4f34c336d43244f84a9eea02ae92b5c363..6682b660b78106f32ee619d55f1c9f178500ec61 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 @@ -118,9 +118,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/control_panel/custom_filter_item_tests.js b/addons/web/static/tests/control_panel/custom_filter_item_tests.js index 7add6c8491fe3feb66daae90e5702b20a78a755c..496e9abd74ab5c30021f161d31641e4aa2ee1536 100644 --- a/addons/web/static/tests/control_panel/custom_filter_item_tests.js +++ b/addons/web/static/tests/control_panel/custom_filter_item_tests.js @@ -332,6 +332,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 cpHelpers.toggleAddCustomFilter(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);