diff options
| author | Christophe Matthieu <chm@odoo.com> | 2015-10-29 16:42:47 +0100 |
|---|---|---|
| committer | Christophe Matthieu <chm@odoo.com> | 2015-10-30 12:01:16 +0100 |
| commit | a9d20d9fa04b1dbb350663652e0996e258ac6d31 (patch) | |
| tree | 799037381c95a3f81a0ba3f41b0a449b21105d4b /addons/web/static/src/js/views/form_relational_widgets.js | |
| parent | 9a3e9291ffa1509f4afa0f35f9d8d71b6e0932d0 (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.js | 16 |
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; }); |
