diff --git a/addons/point_of_sale/static/src/css/pos.css b/addons/point_of_sale/static/src/css/pos.css
index a9baf041942..bfe2ef7f9dc 100644
--- a/addons/point_of_sale/static/src/css/pos.css
+++ b/addons/point_of_sale/static/src/css/pos.css
@@ -1072,12 +1072,14 @@
-webkit-transition-timing-function: ease-out;
}
-.point-of-sale .pos-actionbar .button.disabled{
- color:#AAA;
+.point-of-sale .pos-actionbar .button.disabled *{
+ opacity: 0.5;
}
.point-of-sale .pos-actionbar .button.disabled:hover{
border: 1px solid #cacaca;
border-radius: 4px;
+ color: #555;
+ cursor: default;
background: #e2e2e2;
background: -webkit-linear-gradient(#f0f0f0, #e2e2e2);
diff --git a/addons/point_of_sale/static/src/js/TODO.txt b/addons/point_of_sale/static/src/js/TODO.txt
index edadbe188ea..5eeb4c2606a 100644
--- a/addons/point_of_sale/static/src/js/TODO.txt
+++ b/addons/point_of_sale/static/src/js/TODO.txt
@@ -49,9 +49,9 @@ TODO AUG 20
v L'impression est foireuse
* CLIENT
- - create a new branch
+ v create a new branch
- Self-checkout welcome screen
- - removal of products for the root category
+ ~ removal of products for the root category
- Terminal de payement
- Code à barres
- Vidanges
diff --git a/addons/point_of_sale/static/src/js/screens.js b/addons/point_of_sale/static/src/js/screens.js
index 4d4e09575ea..9a2071c6335 100644
--- a/addons/point_of_sale/static/src/js/screens.js
+++ b/addons/point_of_sale/static/src/js/screens.js
@@ -735,11 +735,14 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
this.validate_button = this.add_action_button({
label: 'Validate',
+ name: 'validation',
icon: '/point_of_sale/static/src/img/icons/png48/validate.png',
click: function(){
self.validateCurrentOrder();
},
});
+
+ this.updatePaymentSummary();
},
close: function(){
this._super();
@@ -806,6 +809,9 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
this.$('#payment-paid-total').html(paidTotal.toFixed(2));
this.$('#payment-remaining').html(remaining.toFixed(2));
this.$('#payment-change').html(change.toFixed(2));
+ if(this.pos_widget.action_bar){
+ this.pos_widget.action_bar.set_button_disabled('validation', remaining > 0);
+ }
},
set_numpad_state: function(numpadState) {
if (this.numpadState) {
diff --git a/addons/point_of_sale/static/src/js/widgets.js b/addons/point_of_sale/static/src/js/widgets.js
index 5b98865a971..6de31c88dfd 100644
--- a/addons/point_of_sale/static/src/js/widgets.js
+++ b/addons/point_of_sale/static/src/js/widgets.js
@@ -370,14 +370,21 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
this.label = options.label || 'button';
this.rightalign = options.rightalign || false;
this.click_action = options.click;
+ this.disabled = options.disabled || false;
if(options.icon){
this.icon = options.icon;
this.template = this.icon_template;
}
},
+ set_disabled: function(disabled){
+ if(this.disabled != disabled){
+ this.disabled = !!disabled;
+ this.renderElement();
+ }
+ },
renderElement: function(){
this._super();
- if(this.click_action){
+ if(this.click_action && !this.disabled){
this.$el.click(_.bind(this.click_action, this));
}
},
@@ -388,12 +395,12 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
init: function(parent, options){
this._super(parent,options);
this.button_list = [];
- this.fake_buttons = {};
+ this.buttons = {};
this.visibility = {};
},
set_element_visible: function(element, visible, action){
if(visible != this.visibility[element]){
- this.visibility[element] = visible;
+ this.visibility[element] = !!visible;
if(visible){
this.$('.'+element).show();
}else{
@@ -401,14 +408,22 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
}
}
if(visible && action){
+ this.action[element] = action;
this.$('.'+element).off('click').click(action);
}
},
+ set_button_disabled: function(name, disabled){
+ var b = this.buttons[name];
+ if(b){
+ b.set_disabled(disabled);
+ }
+ },
destroy_buttons:function(){
for(var i = 0; i < this.button_list.length; i++){
this.button_list[i].destroy();
}
this.button_list = [];
+ this.buttons = {};
return this;
},
get_button_count: function(){
@@ -417,6 +432,9 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
add_new_button: function(button_options){
var button = new module.ActionButtonWidget(this,button_options);
this.button_list.push(button);
+ if(button_options.name){
+ this.buttons[button_options.name] = button;
+ }
button.appendTo(this.$('.pos-actionbar-button-list'));
return button;
},
diff --git a/addons/point_of_sale/static/src/xml/pos.xml b/addons/point_of_sale/static/src/xml/pos.xml
index 81f929d50e2..bbe278758d5 100644
--- a/addons/point_of_sale/static/src/xml/pos.xml
+++ b/addons/point_of_sale/static/src/xml/pos.xml
@@ -540,7 +540,7 @@
-
+
@@ -548,7 +548,7 @@
-
+