[IMP] point_of_sale: screens refactor continued

bzr revid: fva@openerp.com-20120611152022-26a91puoehxealqi
This commit is contained in:
Frédéric van der Essen
2012-06-11 17:20:22 +02:00
parent d8d9b8349d
commit 0fcaa4edc7
+113 -214
View File
@@ -236,18 +236,82 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
template:'ErrorNoSessionPopupWidget',
});
module.ScaleInviteScreenWidget = module.ScreenWidget.extend({
template:'ScaleInviteScreenWidget',
module.BaseScreenWidget = module.ScreenWidget.extend({
show_numpad: true,
show_leftpane: true,
show_total: true,
help_button_action: function(){
this.pos_widget.screen_selector.show_popup('help');
},
logout_button_action: function(){
this.pos_widget.screen_selector.set_user_mode('client');
},
barcode_cashier_action: function(ean){
this.pos.proxy.cashier_mode_activated();
this.pos_widget.screen_selector.set_user_mode('cashier');
},
barcode_product_screen: 'scan',
barcode_product_error_popup: 'error',
barcode_product_action: function(ean){
if(this.pos_widget.scan_product(ean)){
this.pos.proxy.scan_item_success();
if(this.barcode_product_screen){
this.pos_widget.screen_selector.set_current_screen(this.barcode_product_screen);
}
}else{
if(this.barcode_product_error_popup){
this.pos_widget.screen_selector.show_popup(this.barcode_product_error_popup);
}
}
},
barcode_client_action: function(ean){
this.pos.proxy.transaction_start();
//TODO 'log the client'
this.pos_widget.screen_selector.show_popup('receipt');
},
barcode_discount_action: function(ean){
var currentOrder = this.pos.get('selectedOrder');
var last_orderline = currentOrder.last_orderline;
if(last_orderline){
last_orderline.set_discount(ean.value)
}
},
show: function(){
this._super();
var self = this;
var cashier_mode = this.pos_widget.screen_selector.get_user_mode() === 'cashier';
this.pos_widget.set_numpad_visible(false);
this.pos_widget.set_leftpane_visible(true);
this.pos_widget.set_cashier_controls_visible(false);
this.pos_widget.action_bar.set_total_visible(true);
this.pos_widget.action_bar.set_help_visible(true,function(){self.pos_widget.screen_selector.show_popup('help');});
this.pos_widget.action_bar.set_logout_visible(false);
this.pos_widget.set_numpad_visible(this.show_numpad && cashier_mode);
this.pos_widget.set_leftpane_visible(this.show_leftpane);
this.pos_widget.set_cashier_controls_visible(cashier_mode);
this.pos_widget.action_bar.set_total_visible(this.show_total);
this.pos_widget.action_bar.set_help_visible(!cashier_mode, function(){ self.help_button_action(); });
this.pos_widget.action_bar.set_logout_visible(cashier_mode, function(){ self.logout_button_action(); });
this.pos_widget.action_bar.set_close_visible(cashier_mode);
this.pos.barcode_reader.set_action_callback({
'cashier': self.barcode_cashier_action ? function(ean){ self.barcode_cashier_action(ean); } : undefined ,
'product': self.barcode_product_action ? function(ean){ self.barcode_product_action(ean); } : undefined ,
'client' : self.barcode_client_action ? function(ean){ self.barcode_client_action(ean); } : undefined ,
'discount': self.barcode_discount_action ? function(ean){ self.barcode_discount_action(ean); } : undefined,
});
},
});
module.ScaleInviteScreenWidget = module.BaseScreenWidget.extend({
template:'ScaleInviteScreenWidget',
show: function(){
this._super();
var self = this;
self.pos.proxy.weighting_start();
@@ -270,21 +334,6 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
}
}
);
this.pos.barcode_reader.set_action_callback({
'cashier': function(ean){
self.pos.proxy.cashier_mode_activated();
self.pos_widget.screen_selector.set_user_mode('cashier');
},
'product': function(ean){
if(self.pos_widget.scan_product(ean)){
self.pos.proxy.scan_item_success();
self.pos_widget.screen_selector.set_current_screen('scan');
}else{
self.pos_widget.screen_selector.show_popup('error');
}
},
});
},
close: function(){
this._super();
@@ -292,7 +341,7 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
},
});
module.ScaleProductScreenWidget = module.ScreenWidget.extend({
module.ScaleProductScreenWidget = module.BaseScreenWidget.extend({
template:'ScaleProductSelectionScreenWidget',
start: function(){
this.product_categories_widget = new module.ProductCategoriesWidget(this,{
@@ -309,65 +358,28 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
show: function(){
this._super();
var self = this;
this.product_categories_widget.reset_category();
this.pos_widget.order_widget.set_numpad_state(this.pos_widget.numpad.state);
if(this.pos_widget.screen_selector.get_user_mode() === 'client'){
this.pos_widget.set_numpad_visible(false);
this.pos_widget.set_leftpane_visible(true);
this.pos_widget.set_cashier_controls_visible(false);
this.pos_widget.action_bar.set_total_visible(true);
this.pos_widget.action_bar.set_help_visible(true,function(){self.pos_widget.screen_selector.show_popup('help');});
this.pos_widget.action_bar.set_logout_visible(false);
this.pos_widget.action_bar.set_close_visible(false);
//this.pos_widget.onscreen_keyboard.connect();
this.product_categories_widget.reset_category();
this.pos_widget.order_widget.set_numpad_state(this.pos_widget.numpad.state);
this.pos_widget.action_bar.add_new_button(
{
this.pos_widget.action_bar.add_new_button({
label: 'back',
icon: '/point_of_sale/static/src/img/icons/png48/go-previous.png',
click: function(){
self.pos_widget.screen_selector.set_current_screen('scan');
}
}
);
this.pos.barcode_reader.set_action_callback({
'cashier': function(ean){
self.pos.proxy.cashier_mode_activated();
self.pos_widget.screen_selector.set_user_mode('cashier');
},
'product': function(ean){
if(self.pos_widget.scan_product(ean)){
self.pos.proxy.scan_item_success();
self.pos_widget.screen_selector.set_current_screen('scan');
}else{
self.pos_widget.screen_selector.show_popup('error');
}
},
});
});
this.product_list_widget.set_next_screen('scan');
}else{ // user_mode === 'cashier'
this.pos_widget.set_numpad_visible(true);
this.pos_widget.set_leftpane_visible(true);
this.pos_widget.set_cashier_controls_visible(true);
this.pos_widget.action_bar.set_total_visible(true);
this.pos_widget.action_bar.set_help_visible(false);
this.pos_widget.action_bar.set_close_visible(false);
//this.pos_widget.onscreen_keyboard.connect();
this.product_categories_widget.reset_category();
this.pos_widget.order_widget.set_numpad_state(this.pos_widget.numpad.state);
this.pos_widget.action_bar.add_new_button(
{
}else{
this.pos_widget.action_bar.add_new_button({
label: 'back',
icon: '/point_of_sale/static/src/img/icons/png48/go-previous.png',
click: function(){
self.pos_widget.screen_selector.set_current_screen('products');
}
}
);
this.product_list_widget.set_next_screen('undefined');
});
this.product_list_widget.set_next_screen('products');
}
this.pos.proxy.weighting_start();
@@ -389,20 +401,12 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
},
});
module.ClientPaymentScreenWidget = module.ScreenWidget.extend({
module.ClientPaymentScreenWidget = module.BaseScreenWidget.extend({
template:'ClientPaymentScreenWidget',
show: function(){
this._super();
var self = this;
this.pos_widget.set_numpad_visible(false);
this.pos_widget.set_leftpane_visible(true);
this.pos_widget.set_cashier_controls_visible(false);
this.pos_widget.action_bar.set_total_visible(true);
this.pos_widget.action_bar.set_help_visible(true,function(){self.pos_widget.screen_selector.show_popup('help');});
this.pos_widget.action_bar.set_logout_visible(false);
this.pos_widget.action_bar.set_close_visible(false);
this.pos.proxy.payment_request(this.pos.get('selectedOrder').getDueLeft(),'card','info'); //TODO TOTAL
this.intervalID = setInterval(function(){
@@ -446,14 +450,6 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
}
}
);
this.pos.barcode_reader.set_action_callback({
'cashier': function(ean){
clearInterval(this.intervalID);
self.pos.proxy.cashier_mode_activated();
self.pos_widget.screen_selector.set_user_mode('cashier');
},
});
},
close: function(){
this._super();
@@ -461,22 +457,18 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
},
});
module.WelcomeScreenWidget = module.ScreenWidget.extend({
module.WelcomeScreenWidget = module.BaseScreenWidget.extend({
template:'WelcomeScreenWidget',
show_numpad: false,
show_leftpane: false,
show_total: false,
show: function(){
this._super();
var self = this;
this.pos_widget.set_numpad_visible(false);
this.pos_widget.set_leftpane_visible(false);
this.pos_widget.set_cashier_controls_visible(false);
this.pos_widget.action_bar.set_total_visible(false);
this.pos_widget.action_bar.set_help_visible(true,function(){self.pos_widget.screen_selector.show_popup('help');});
this.pos_widget.action_bar.set_logout_visible(false);
this.pos_widget.action_bar.set_close_visible(false);
if(this.pos.use_scale){
console.log('welcome weight');
this.pos_widget.action_bar.add_new_button({
label: 'weight',
icon: '/point_of_sale/static/src/img/icons/png48/scale.png',
@@ -485,56 +477,25 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
}
});
}
this.pos.barcode_reader.set_action_callback({
'product': function(ean){
self.pos.proxy.transaction_start();
if(self.pos_widget.scan_product(ean)){
self.pos.proxy.scan_item_success();
self.pos_widget.screen_selector.set_current_screen('scan');
}else{
self.pos_widget.screen_selector.show_popup('error');
}
},
'cashier': function(ean){
self.pos.proxy.cashier_mode_activated();
self.pos_widget.screen_selector.set_user_mode('cashier');
},
'client': function(ean){
self.pos.proxy.transaction_start();
//TODO 'log the client'
self.pos_widget.screen_selector.show_popup('receipt');
},
'discount': function(ean){
var currentOrder = self.pos.get('selectedOrder');
var last_orderline = currentOrder.last_orderline;
if(last_orderline){
last_orderline.set_discount(ean.value)
}
},
});
},
});
module.ScanProductScreenWidget = module.ScreenWidget.extend({
module.ScanProductScreenWidget = module.BaseScreenWidget.extend({
template:'ScanProductScreenWidget',
show_numpad: false,
show_leftpane: true,
show_total: true,
show: function(){
this._super();
var self = this;
this.pos_widget.set_numpad_visible(false);
this.pos_widget.set_leftpane_visible(true);
this.pos_widget.set_cashier_controls_visible(false);
this.pos_widget.action_bar.set_total_visible(true);
this.pos_widget.action_bar.set_help_visible(true,function(){self.pos_widget.screen_selector.show_popup('help');});
this.pos_widget.action_bar.set_logout_visible(false);
this.pos_widget.action_bar.set_close_visible(false);
if(self.pos.use_scale){
this.pos_widget.action_bar.add_new_button({
label: 'weight',
icon: '/point_of_sale/static/src/img/icons/png48/scale.png',
click: function(){ //TODO Go to ask for weighting screen
click: function(){
self.pos_widget.screen_selector.set_current_screen('scale_invite');
}
});
@@ -544,35 +505,19 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
label: 'pay',
icon: '/point_of_sale/static/src/img/icons/png48/go-next.png',
click: function(){
self.pos_widget.screen_selector.set_current_screen('client_payment'); //TODO what stuff ?
self.pos_widget.screen_selector.set_current_screen('client_payment');
}
});
this.pos.barcode_reader.set_action_callback({
'product': function(ean){
if(self.pos_widget.scan_product(ean)){
self.pos.proxy.scan_item_success();
}else{
self.pos_widget.screen_selector.show_popup('error');
}
},
'cashier': function(ean){
self.pos.proxy.cashier_mode_activated();
self.pos_widget.screen_selector.set_user_mode('cashier');
},
'discount': function(ean){
var currentOrder = self.pos.get('selectedOrder');
var last_orderline = currentOrder.last_orderline;
if(last_orderline){
last_orderline.set_discount(ean.value)
}
},
});
},
});
module.SearchProductScreenWidget = module.ScreenWidget.extend({
module.SearchProductScreenWidget = module.BaseScreenWidget.extend({
template:'SearchProductScreenWidget',
show_numpad: true,
show_leftpane: true,
show_total: true,
start: function(){
this.product_categories_widget = new module.ProductCategoriesWidget(this,{});
this.product_categories_widget.replace($('.placeholder-ProductCategoriesWidget'));
@@ -580,23 +525,12 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
this.product_list_widget = new module.ProductListWidget(this,{});
this.product_list_widget.replace($('.placeholder-ProductListWidget'));
},
show: function(){
this._super();
var self = this;
this.pos_widget.set_numpad_visible(true);
this.pos_widget.set_leftpane_visible(true);
this.pos_widget.set_cashier_controls_visible(true);
this.pos_widget.action_bar.set_total_visible(true);
this.pos_widget.action_bar.set_help_visible(false);
this.pos_widget.action_bar.set_close_visible(false);
this.pos_widget.action_bar.set_logout_visible(true, function(){
self.pos_widget.screen_selector.set_user_mode('client');
});
this.product_categories_widget.reset_category();
//this.pos_widget.onscreen_keyboard.connect();
this.pos_widget.order_widget.set_numpad_state(this.pos_widget.numpad.state);
@@ -609,28 +543,8 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
}
});
}
this.pos.barcode_reader.set_action_callback({
'product': function(ean){
if(self.pos_widget.scan_product(ean)){
self.pos.proxy.scan_item_success();
}else{
self.pos_widget.screen_selector.show_popup('error');
}
},
'cashier': function(ean){
self.pos.proxy.cashier_mode_activated();
self.pos_widget.screen_selector.set_user_mode('cashier');
},
'discount': function(ean){
var currentOrder = self.pos.get('selectedOrder');
var last_orderline = currentOrder.last_orderline;
if(last_orderline){
last_orderline.set_discount(ean.value)
}
},
});
},
close: function(){
this._super();
this.pos_widget.order_widget.set_numpad_state(null);
@@ -639,8 +553,13 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
});
module.ReceiptScreenWidget = module.ScreenWidget.extend({
module.ReceiptScreenWidget = module.BaseScreenWidget.extend({
template: 'ReceiptScreenWidget',
show_numpad: true,
show_leftpane: true,
show_total: true,
init: function(parent, options) {
this._super(parent,options);
this.model = options.model;
@@ -656,16 +575,6 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
this._super();
var self = this;
this.pos_widget.set_numpad_visible(true);
this.pos_widget.set_leftpane_visible(true);
this.pos_widget.set_cashier_controls_visible(true);
this.pos_widget.action_bar.set_total_visible(true);
this.pos_widget.action_bar.set_help_visible(false);
this.pos_widget.action_bar.set_close_visible(false);
this.pos_widget.action_bar.set_logout_visible(true, function(){
self.pos_widget.screen_selector.set_user_mode('client');
});
this.pos_widget.action_bar.add_new_button({
label: 'Print',
icon: '/point_of_sale/static/src/img/icons/png48/printer.png',
@@ -703,7 +612,7 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
},
});
module.PaymentScreenWidget = module.ScreenWidget.extend({
module.PaymentScreenWidget = module.BaseScreenWidget.extend({
template: 'PaymentScreenWidget',
init: function(parent, options) {
this._super(parent,options);
@@ -716,16 +625,6 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
this._super();
var self = this;
this.pos_widget.set_numpad_visible(true);
this.pos_widget.set_leftpane_visible(true);
this.pos_widget.set_cashier_controls_visible(true);
this.pos_widget.action_bar.set_total_visible(true);
this.pos_widget.action_bar.set_help_visible(false);
this.pos_widget.action_bar.set_close_visible(false);
this.pos_widget.action_bar.set_logout_visible(true, function(){
self.pos_widget.screen_selector.set_user_mode('client');
});
this.set_numpad_state(this.pos_widget.numpad.state);
this.back_button = this.pos_widget.action_bar.add_new_button({