[IMP] point_of_sale: report errors when loading the point of sale with a traceback and a nice popup

This commit is contained in:
Frederic van der Essen 2014-07-24 15:21:54 +02:00
parent eacd5329e3
commit 28de2183ea
2 changed files with 52 additions and 17 deletions

View File

@ -328,23 +328,35 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
if( model.model ){
new instance.web.Model(model.model).query(fields).filter(domain).context(context).all()
.then(function(result){
$.when(model.loaded(self,result,tmp))
.then(function(){ load_model(index + 1); },
function(err){ loaded.reject(err); });
try{ // catching exceptions in model.loaded(...)
$.when(model.loaded(self,result,tmp))
.then(function(){ load_model(index + 1); },
function(err){ loaded.reject(err); });
}catch(err){
loaded.reject(err);
}
},function(err){
loaded.reject(err);
});
}else if( model.loaded ){
$.when(model.loaded(self,tmp))
.then( function(){ load_model(index +1); },
function(err){ loaded.reject(err); });
try{ // catching exceptions in model.loaded(...)
$.when(model.loaded(self,tmp))
.then( function(){ load_model(index +1); },
function(err){ loaded.reject(err); });
}catch(err){
loaded.reject(err);
}
}else{
load_model(index + 1);
}
}
}
load_model(0);
try{
load_model(0);
}catch(err){
loaded.reject(err);
}
return loaded;
},

View File

@ -1020,17 +1020,40 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
self.pos.push_order();
}).fail(function(){ // 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'])
.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));
}).fail(function(err){ // error when loading models data from the backend
self.loading_error(err);
});
},
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){
this.$('.loader .loader-feedback').removeClass('oe_hidden');
this.$('.loader .progress').css({'width': ''+Math.floor(fac*100)+'%'});