mirror of https://github.com/OCA/web.git
[FIX] web_widget_one2many_product_picker: Update widget state
parent
90ed0e255c
commit
0fb8c1b12b
|
@ -119,7 +119,7 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
|
||||||
* @param {Array[Object]} states
|
* @param {Array[Object]} states
|
||||||
* @returns {Deferred}
|
* @returns {Deferred}
|
||||||
*/
|
*/
|
||||||
_removeRecords: function (states) {
|
_removeRecords: function (states, new_states) {
|
||||||
var defs = [];
|
var defs = [];
|
||||||
var to_destroy = [];
|
var to_destroy = [];
|
||||||
for (var index_state in states) {
|
for (var index_state in states) {
|
||||||
|
@ -145,6 +145,7 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
|
||||||
var widget_product_id = widget_destroyed.state
|
var widget_product_id = widget_destroyed.state
|
||||||
.data[this.options.field_map.product].data.id;
|
.data[this.options.field_map.product].data.id;
|
||||||
var found = false;
|
var found = false;
|
||||||
|
// If already exists a widget for the product don't try create a new one
|
||||||
for (var eb = this.widgets.length-1; eb>=0; --eb) {
|
for (var eb = this.widgets.length-1; eb>=0; --eb) {
|
||||||
var widget = this.widgets[eb];
|
var widget = this.widgets[eb];
|
||||||
if (
|
if (
|
||||||
|
@ -156,9 +157,21 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!found) {
|
if (!found) {
|
||||||
|
// Get the new state ID if exists to link it with the new record
|
||||||
|
var new_state_id = undefined;
|
||||||
|
for (var eb = new_states.length-1; eb>=0; --eb) {
|
||||||
|
var state = new_states[eb];
|
||||||
|
if (
|
||||||
|
state.data[this.options.field_map.product].data.id === widget_product_id
|
||||||
|
) {
|
||||||
|
new_state_id = state.id;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
var search_record = _.find(this.search_data, {id: widget_product_id});
|
var search_record = _.find(this.search_data, {id: widget_product_id});
|
||||||
var new_search_record = _.extend({}, search_record, {__id: state.id});
|
var new_search_record = _.extend({}, search_record, {__id: new_state_id});
|
||||||
var search_record_index = widget_destroyed.$el.index();
|
var search_record_index = widget_destroyed.$el.index();
|
||||||
defs.push(
|
defs.push(
|
||||||
this.appendSearchRecords(
|
this.appendSearchRecords(
|
||||||
|
@ -202,8 +215,7 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
|
||||||
states_to_destroy.push(old_state);
|
states_to_destroy.push(old_state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this._removeRecords(states_to_destroy, this.state.data);
|
||||||
this._removeRecords(states_to_destroy);
|
|
||||||
|
|
||||||
// Records to Update or Create
|
// Records to Update or Create
|
||||||
var defs = [];
|
var defs = [];
|
||||||
|
|
Loading…
Reference in New Issue