[IMP] point_of_sale: report errors when loading the point of sale with a traceback and a nice popup
This commit is contained in:
parent
eacd5329e3
commit
28de2183ea
|
@ -328,23 +328,35 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
|
||||||
if( model.model ){
|
if( model.model ){
|
||||||
new instance.web.Model(model.model).query(fields).filter(domain).context(context).all()
|
new instance.web.Model(model.model).query(fields).filter(domain).context(context).all()
|
||||||
.then(function(result){
|
.then(function(result){
|
||||||
$.when(model.loaded(self,result,tmp))
|
try{ // catching exceptions in model.loaded(...)
|
||||||
.then(function(){ load_model(index + 1); },
|
$.when(model.loaded(self,result,tmp))
|
||||||
function(err){ loaded.reject(err); });
|
.then(function(){ load_model(index + 1); },
|
||||||
|
function(err){ loaded.reject(err); });
|
||||||
|
}catch(err){
|
||||||
|
loaded.reject(err);
|
||||||
|
}
|
||||||
},function(err){
|
},function(err){
|
||||||
loaded.reject(err);
|
loaded.reject(err);
|
||||||
});
|
});
|
||||||
}else if( model.loaded ){
|
}else if( model.loaded ){
|
||||||
$.when(model.loaded(self,tmp))
|
try{ // catching exceptions in model.loaded(...)
|
||||||
.then( function(){ load_model(index +1); },
|
$.when(model.loaded(self,tmp))
|
||||||
function(err){ loaded.reject(err); });
|
.then( function(){ load_model(index +1); },
|
||||||
|
function(err){ loaded.reject(err); });
|
||||||
|
}catch(err){
|
||||||
|
loaded.reject(err);
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
load_model(index + 1);
|
load_model(index + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
load_model(0);
|
try{
|
||||||
|
load_model(0);
|
||||||
|
}catch(err){
|
||||||
|
loaded.reject(err);
|
||||||
|
}
|
||||||
|
|
||||||
return loaded;
|
return loaded;
|
||||||
},
|
},
|
||||||
|
|
|
@ -1020,17 +1020,40 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
|
||||||
|
|
||||||
self.pos.push_order();
|
self.pos.push_order();
|
||||||
|
|
||||||
}).fail(function(){ // error when loading models data from the backend
|
}).fail(function(err){ // error when loading models data from the backend
|
||||||
return new instance.web.Model("ir.model.data").get_func("search_read")([['name', '=', 'action_pos_session_opening']], ['res_id'])
|
self.loading_error(err);
|
||||||
.pipe( _.bind(function(res){
|
|
||||||
return instance.session.rpc('/web/action/load', {'action_id': res[0]['res_id']})
|
|
||||||
.pipe(_.bind(function(result){
|
|
||||||
var action = result.result;
|
|
||||||
this.do_action(action);
|
|
||||||
}, this));
|
|
||||||
}, self));
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
loading_error: function(err){
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
var message = err.message;
|
||||||
|
var comment = err.stack;
|
||||||
|
|
||||||
|
if(err.message === 'XmlHttpRequestError '){
|
||||||
|
message = 'Network Failure (XmlHttpRequestError)';
|
||||||
|
comment = 'The Point of Sale could not be loaded due to a network problem.\n Please check your internet connection.';
|
||||||
|
}else if(err.message === 'OpenERP Server Error'){
|
||||||
|
message = err.data.message;
|
||||||
|
comment = err.data.debug;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( typeof comment !== 'string' ){
|
||||||
|
comment = 'Traceback not available.';
|
||||||
|
}
|
||||||
|
|
||||||
|
var popup = $(QWeb.render('ErrorTracebackPopupWidget',{
|
||||||
|
widget: { message: message, comment: comment },
|
||||||
|
}));
|
||||||
|
|
||||||
|
popup.find('.button').click(function(){
|
||||||
|
self.close();
|
||||||
|
});
|
||||||
|
|
||||||
|
popup.css({ zindex: 9001 });
|
||||||
|
|
||||||
|
popup.appendTo(this.$el);
|
||||||
|
},
|
||||||
loading_progress: function(fac){
|
loading_progress: function(fac){
|
||||||
this.$('.loader .loader-feedback').removeClass('oe_hidden');
|
this.$('.loader .loader-feedback').removeClass('oe_hidden');
|
||||||
this.$('.loader .progress').css({'width': ''+Math.floor(fac*100)+'%'});
|
this.$('.loader .progress').css({'width': ''+Math.floor(fac*100)+'%'});
|
||||||
|
|
Loading…
Reference in New Issue