diff --git a/frappe/public/js/legacy/form.js b/frappe/public/js/legacy/form.js index 3be7434cb5..912f5bc50d 100644 --- a/frappe/public/js/legacy/form.js +++ b/frappe/public/js/legacy/form.js @@ -205,7 +205,11 @@ _f.Frm.prototype.watch_model_updates = function() { && me.fields_dict[fieldname].refresh(fieldname); me.layout.refresh_dependency(); - return me.script_manager.trigger(fieldname, doc.doctype, doc.name); + let object = me.script_manager.trigger(fieldname, doc.doctype, doc.name); + if(object instanceof Promise) { + me.promises.push(object); + } + return object; } }); @@ -586,6 +590,8 @@ _f.Frm.prototype.setnewdoc = function() { // this.check_doctype_conflict(docname); var me = this; + this.promises = []; + // hide any open grid this.script_manager.trigger("before_load", this.doctype, this.docname) .then(() => { @@ -696,7 +702,9 @@ _f.Frm.prototype.save = function(save_action, callback, btn, on_error) { // let any pending js process finish setTimeout(function() { - me._save(save_action, callback, btn, on_error, resolve); + Promise.all(me.promises).then(() => { + me._save(save_action, callback, btn, on_error, resolve); + }); }, 100); }); };