summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/form_relational_widgets.js
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@odoo.com>2015-10-29 16:42:47 +0100
committerChristophe Matthieu <chm@odoo.com>2015-10-30 12:01:16 +0100
commita9d20d9fa04b1dbb350663652e0996e258ac6d31 (patch)
tree799037381c95a3f81a0ba3f41b0a449b21105d4b /addons/web/static/src/js/views/form_relational_widgets.js
parent9a3e9291ffa1509f4afa0f35f9d8d71b6e0932d0 (diff)
[FIX] web: save fields in m2m (list_editable) with attributes and check all lines
Issue: steps to reproduce: create a purchase order choose a supplier choose a product change the quantity don't click anywhere on the form, just click on "confirm order" you get an error "invalid field: scheduled date" Use dataset instead of record because record can have an other value (a short for a moment due to deferred). Use silent option to avoid onchange.
Diffstat (limited to 'addons/web/static/src/js/views/form_relational_widgets.js')
-rw-r--r--addons/web/static/src/js/views/form_relational_widgets.js16
1 files changed, 9 insertions, 7 deletions
diff --git a/addons/web/static/src/js/views/form_relational_widgets.js b/addons/web/static/src/js/views/form_relational_widgets.js
index 0ff95ca9448..3a3c2208e58 100644
--- a/addons/web/static/src/js/views/form_relational_widgets.js
+++ b/addons/web/static/src/js/views/form_relational_widgets.js
@@ -954,24 +954,26 @@ var X2ManyListView = ListView.extend({
if (_.isEmpty(this.records.records)){
return true;
}
+ var fields = this.editor.form.fields;
var current_values = {};
- _.each(this.editor.form.fields, function(field){
+ _.each(fields, function(field){
field._inhibit_on_change_flag = true;
field.no_rerender = true;
current_values[field.name] = field.get('value');
});
- var valid = _.every(this.records.records, function(record){
- _.each(self.editor.form.fields, function(field){
- field.set_value(record.attributes[field.name]);
+ var valid = _.every(this.dataset.cache, function(record){
+ _.each(fields, function(field){
+ var value = record.values[field.name];
+ field.set_value(_.isArray(value) && _.isArray(value[0]) ? [COMMANDS.delete_all()].concat(value) : value);
});
- return _.every(self.editor.form.fields, function(field){
+ return _.every(fields, function(field){
field.process_modifiers();
field._check_css_flags();
return field.is_valid();
});
});
- _.each(this.editor.form.fields, function(field){
- field.set('value', current_values[field.name]);
+ _.each(fields, function(field){
+ field.set('value', current_values[field.name], {silent: true});
field._inhibit_on_change_flag = false;
field.no_rerender = false;
});