[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 ){
|
||||
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;
|
||||
},
|
||||
|
|
|
@ -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)+'%'});
|
||||
|
|
Loading…
Reference in New Issue