diff --git a/addons/web/static/src/js/views/calendar/calendar_model.js b/addons/web/static/src/js/views/calendar/calendar_model.js index 5316cb24206..057737d674f 100644 --- a/addons/web/static/src/js/views/calendar/calendar_model.js +++ b/addons/web/static/src/js/views/calendar/calendar_model.js @@ -73,9 +73,11 @@ return AbstractModel.extend({ .utc(); } else { // default hours in the user's timezone - start.hours(7).add(-this.getSession().getTZOffset(start), 'minutes'); - end.hours(19).add(-this.getSession().getTZOffset(end), 'minutes'); + start.hours(7); + end.hours(19); } + start.add(-this.getSession().getTZOffset(start), 'minutes'); + end.add(-this.getSession().getTZOffset(end), 'minutes'); } } else { start.add(-this.getSession().getTZOffset(start), 'minutes'); diff --git a/addons/web/static/tests/views/calendar_tests.js b/addons/web/static/tests/views/calendar_tests.js index fad84cc43c3..2e6644d3a99 100644 --- a/addons/web/static/tests/views/calendar_tests.js +++ b/addons/web/static/tests/views/calendar_tests.js @@ -2053,6 +2053,60 @@ QUnit.module('Views', { calendar.destroy(); }); + QUnit.test('timezone does not affect drag and drop', function (assert) { + assert.expect(6); + + var calendar = createView({ + View: CalendarView, + model: 'event', + data: this.data, + arch: + ''+ + ''+ + ''+ + '', + archs: archs, + viewOptions: { + initialDate: initialDate, + }, + mockRPC: function (route, args) { + if (args.method === "write") { + assert.deepEqual(args.args[0], [6], "event 6 is moved") + assert.deepEqual(args.args[1].start, "2016-11-29 08:00:00", + "event moved to 27th nov 16h00 +40 hours timezone") + } + return this._super(route, args); + }, + session: { + getTZOffset: function () { + return -2400; // 40 hours timezone + }, + }, + }); + + var events = calendar.$('.fc-event').map(function () { + return $(this).text().trim().replace(/\s+/g, '|'); + }); + + assert.strictEqual(events[0], "event|1|12/09/2016|08:00:00"); + assert.strictEqual(events[5], "event|6|12/16/2016|16:00:00"); + + // Move event 6 as on first day of month view (27th november 2016) + testUtils.dragAndDrop( + calendar.$('.fc-event').eq(5), + calendar.$('.fc-day-top').first() + ); + + var events = calendar.$('.fc-event').map(function () { + return $(this).text().trim().replace(/\s+/g, '|'); + }); + + assert.strictEqual(events[0], "event|6|11/27/2016|16:00:00"); + assert.strictEqual(events[1], "event|1|12/09/2016|08:00:00"); + + calendar.destroy(); + }); + QUnit.test('form_view_id attribute works (for creating events)', function (assert) { assert.expect(1);