From d8a1f4ab039af24e00137de3298c0df306e30ef4 Mon Sep 17 00:00:00 2001 From: Pierre Masereel Date: Fri, 28 Jun 2019 09:08:40 +0000 Subject: [PATCH] [FIX] point_of_sale: Ask password after scaning badge Since changes made on Promises in rev: 5f3b5f0a9da42f4d94c70d7e3cff98229db941fc If a user scans his badge, it's pin code if he has any, is not asked, and he's imediatly connected to it's employee. To avoid this behavior, we are handeling correctly the Promise to avoid this connection shortcut. closes odoo/odoo#34449 Signed-off-by: pimodoo --- addons/pos_hr/static/src/js/screens.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/addons/pos_hr/static/src/js/screens.js b/addons/pos_hr/static/src/js/screens.js index 9b7fe1c4a9a..f25de598cce 100644 --- a/addons/pos_hr/static/src/js/screens.js +++ b/addons/pos_hr/static/src/js/screens.js @@ -16,10 +16,11 @@ ScreenWidget.include({ barcode_cashier_action: function(code){ var self = this; var employees = this.pos.employees; + var prom; for(var i = 0, len = employees.length; i < len; i++){ if(employees[i].barcode === code.code){ if (employees[i].id !== this.pos.get_cashier().id && employees[i].pin) { - return this.gui.ask_password(employees[i].pin).then(function(){ + prom = this.gui.ask_password(employees[i].pin).then(function(){ self.pos.set_cashier(employees[i]); self.chrome.widget.username.renderElement(); return true; @@ -27,12 +28,18 @@ ScreenWidget.include({ } else { this.pos.set_cashier(employees[i]); this.chrome.widget.username.renderElement(); - return true; + prom = Promise.resolve(true); } + break; } } - this.barcode_error_action(code); - return false; + if (!prom){ + this.barcode_error_action(code); + return Promise.resolve(false); + } + else { + return prom + } }, show: function() { this._super(); @@ -73,8 +80,10 @@ var LoginScreenWidget = ScreenWidget.extend({ * @override */ barcode_cashier_action: function(code) { - this._super(code); - this.unlock_screen(); + var self = this; + return this._super(code).then(function () { + self.unlock_screen(); + }); }, unlock_screen: function() {