3
0
Fork 0

[IMP] web_widget_one2many_product_picker: Don't reload records data

12.0
Alexandre D. Díaz 2021-04-29 18:33:42 +02:00
parent c964295a27
commit 65febbb2c3
1 changed files with 10 additions and 20 deletions

View File

@ -584,7 +584,8 @@ odoo.define("web_widget_one2many_product_picker.FieldOne2ManyProductPicker", fun
_onCreateQuickRecord: function (evt) { _onCreateQuickRecord: function (evt) {
evt.stopPropagation(); evt.stopPropagation();
var self = this; var self = this;
this.parent_controller.model.setPureVirtual(evt.data.id, false); var model = this.parent_controller.model;
model.setPureVirtual(evt.data.id, false);
if (this.options.auto_save) { if (this.options.auto_save) {
// Dont trigger state update // Dont trigger state update
@ -593,16 +594,10 @@ odoo.define("web_widget_one2many_product_picker.FieldOne2ManyProductPicker", fun
{notifyChange: false} {notifyChange: false}
).then(function () { ).then(function () {
self.parent_controller.saveRecord(undefined, {stayInEdit: true}).then(function () { self.parent_controller.saveRecord(undefined, {stayInEdit: true}).then(function () {
// Because 'create' generates a new state and we can't know these new id we self.renderer.updateState(model.get(self.parent_controller.handle).data[self.name], {force: true});
// need force update all the current states. if (evt.data.callback) {
self._setValue( evt.data.callback();
{operation: "UPDATE", id: evt.data.id}, }
{doNotSetDirty: true}
).then(function () {
if (evt.data.callback) {
evt.data.callback();
}
});
}); });
if (evt.data.callback) { if (evt.data.callback) {
evt.data.callback(); evt.data.callback();
@ -631,15 +626,10 @@ odoo.define("web_widget_one2many_product_picker.FieldOne2ManyProductPicker", fun
{notifyChange: false} {notifyChange: false}
).then(function () { ).then(function () {
self.parent_controller.saveRecord(undefined, {stayInEdit: true}).then(function () { self.parent_controller.saveRecord(undefined, {stayInEdit: true}).then(function () {
// Workaround to get updated values self.renderer.updateState(self.parent_controller.model.get(self.parent_controller.handle).data[self.name], {force: true});
self.parent_controller.model.reload(self.value.id).then(function (result) { if (callback) {
var new_data = self.parent_controller.model.get(result); callback();
self.value.data = new_data.data; }
self.renderer.updateState(self.value, {force: true});
if (callback) {
callback();
}
});
}); });
if (callback) { if (callback) {
callback(); callback();