From 7c18c68f96a31f593acf0a7e1c7adcfc120cff67 Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Tue, 8 Sep 2015 11:59:02 +0200 Subject: [PATCH] [FIX] hr_timesheet_sheet: '0' values when adding a new line When a new line was added, all the others changed their value to 0. This was because of a property : the sheets propertywas read thanks to a get('sheets') but as it is an array of object, modifying those object will modify the sheets (without calling any handler attached to the 'change:sheets' event). It appeared the form_view set_values method changed those objects. A simple solution from a timesheet point of vue was to deep clone the sheets property before using it. --- addons/hr_timesheet_sheet/static/src/js/timesheet.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/hr_timesheet_sheet/static/src/js/timesheet.js b/addons/hr_timesheet_sheet/static/src/js/timesheet.js index c5246806213..853edaaeb71 100644 --- a/addons/hr_timesheet_sheet/static/src/js/timesheet.js +++ b/addons/hr_timesheet_sheet/static/src/js/timesheet.js @@ -73,7 +73,8 @@ var WeeklyTimesheet = form_common.FormWidget.extend(form_common.ReinitializeWidg this.updating = true; var commands = [form_common.commands.delete_all()]; - _(this.get("sheets")).each(function (data) { + _.each(this.get("sheets"), function (_data) { + var data = _.clone(_data); if(data.id) { commands.push(form_common.commands.link_to(data.id)); commands.push(form_common.commands.update(data.id, data)); @@ -125,7 +126,8 @@ var WeeklyTimesheet = form_common.FormWidget.extend(form_common.ReinitializeWidg start = m_start.toDate(); } // group by account - accounts = _(self.get("sheets")).chain() + accounts = _.chain(self.get("sheets")) + .map(_.clone) .each(function(el) { // much simpler to use only the id in all cases if (typeof(el.account_id) === "object") {