diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js
index 01d0d3d4f85..57999513a54 100644
--- a/addons/base/static/src/js/data.js
+++ b/addons/base/static/src/js/data.js
@@ -313,12 +313,12 @@ openerp.base.DataSet = openerp.base.Controller.extend( /** @lends openerp.base.
// to implement in children
this.notification.notify("Unlink", ids);
},
- call: function (method, args, callback) {
+ call: function (method, args, callback, error_callback) {
return this.rpc('/base/dataset/call', {
model: this.model,
method: method,
args: args || []
- }, callback);
+ }, callback, error_callback);
},
name_search: function (search_str, limit, callback) {
search_str = search_str || '';
diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js
index fd776caa4d6..d2f23bdc262 100644
--- a/addons/base/static/src/js/form.js
+++ b/addons/base/static/src/js/form.js
@@ -1143,8 +1143,7 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
if (self.value === undefined) {
values.push({label: ' Create "' +
$('').text(search_val).html() + '"', action: function() {
- self._change_int_value(null);
- self._search_create_popup("form");
+ self._quick_create(search_val);
}});
}
values.push({label: " Create and Edit...", action: function() {
@@ -1155,6 +1154,16 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
response(values);
});
},
+ _quick_create: function(name) {
+ var self = this;
+ var dataset = new openerp.base.DataSetStatic(this.session, this.field.relation, []);
+ dataset.call("name_create", [name, {}], function(data) {
+ self._change_int_ext_value(data.result);
+ }, function(a, b) {
+ self._change_int_value(null);
+ self._search_create_popup("form");
+ });
+ },
// all search/create popup handling
_search_create_popup: function(view, ids) {
var dataset = new openerp.base.DataSetStatic(this.session, this.field.relation, []);