diff --git a/addons/web/static/src/legacy/js/fields/basic_fields.js b/addons/web/static/src/legacy/js/fields/basic_fields.js index c9b73940ab8..44dea68bd42 100644 --- a/addons/web/static/src/legacy/js/fields/basic_fields.js +++ b/addons/web/static/src/legacy/js/fields/basic_fields.js @@ -1001,7 +1001,7 @@ var FieldDate = InputField.extend({ let value = this.$input.val(); try { value = this._parseValue(value); - if (this.field.type === "datetime") { + if (this.datewidget.type_of_date === "datetime") { value.add(-this.getSession().getTZOffset(value), "minutes"); } } catch (_err) {} diff --git a/addons/web/static/tests/legacy/fields/basic_fields_tests.js b/addons/web/static/tests/legacy/fields/basic_fields_tests.js index 451b73ada70..44a67549160 100644 --- a/addons/web/static/tests/legacy/fields/basic_fields_tests.js +++ b/addons/web/static/tests/legacy/fields/basic_fields_tests.js @@ -5250,6 +5250,41 @@ QUnit.module('basic_fields', { form.destroy(); }); + QUnit.test('datetime field with date widget: hit enter should update value', async function (assert) { + assert.expect(2); + + const form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch:'
', + res_id: 1, + translateParameters: { // Avoid issues due to localization formats + date_format: '%m/%d/%Y', + }, + viewOptions: { + mode: 'edit', + }, + session: { + getTZOffset: function () { + return 120; + }, + }, + }); + + const datetime = form.el.querySelector('input[name="datetime"]'); + + await testUtils.fields.editInput(datetime, '01/08/22'); + await testUtils.fields.triggerKeydown(datetime, 'enter'); + assert.strictEqual(datetime.value, '01/08/2022'); + + // Click outside the field to check that the field is not changed + await testUtils.dom.click(form.$el); + assert.strictEqual(datetime.value, '01/08/2022'); + + form.destroy(); + }); + QUnit.module('RemainingDays'); QUnit.test('remaining_days widget on a date field in list view', async function (assert) {