From 2b6801f02cb5f5673f01eca0716a326b17d73dd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Fri, 23 Dec 2022 23:54:21 +0100 Subject: [PATCH] Use record from group when setting O2M from values Closes #11951 --- sao/src/model.js | 10 +++++++++- tryton/tryton/gui/window/view_form/model/field.py | 8 +++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/sao/src/model.js b/sao/src/model.js index bd6fa05256..be8db1f3a3 100644 --- a/sao/src/model.js +++ b/sao/src/model.js @@ -2159,7 +2159,15 @@ group.load(value, modified || default_); } else { for (const vals of value) { - var new_record = group.new_(false); + var new_record; + if ('id' in vals) { + new_record = group.get(vals.id); + if (!new_record) { + new_record = group.new_(false, vals.id); + } + } else { + new_record = group.new_(false); + } if (default_) { // Don't validate as parent will validate new_record.set_default(vals, false, false); diff --git a/tryton/tryton/gui/window/view_form/model/field.py b/tryton/tryton/gui/window/view_form/model/field.py index 85ffa57a43..bcdafb7497 100644 --- a/tryton/tryton/gui/window/view_form/model/field.py +++ b/tryton/tryton/gui/window/view_form/model/field.py @@ -689,7 +689,13 @@ class O2MField(Field): group.load(value, modified=modified or default) else: for vals in value: - new_record = record.value[self.name].new(default=False) + if 'id' in vals: + new_record = group.get(vals['id']) + if not new_record: + new_record = group.new( + default=False, obj_id=vals['id']) + else: + new_record = group.new(default=False) if default: # Don't validate as parent will validate new_record.set_default(