# HG changeset patch
# User Ranjith S R <ranjith@qualiantech.com>
# Date 1481889772 -19800
#      Fri Dec 16 17:32:52 2016 +0530
# Node ID 6400190a9a120bc15c407996f1bf43ad7b73f31d
# Parent  0349abe8cc312ad8c0aa82c3d8fcfdf1b34b4028
Related to issue 34730 : Connect/Disconnect RFID when popup/modal is opened

* By default, set scanMode as true to enable RFID by default
* RFID should be disabled, when search, payment tab is showing
* Disconnect RFID when popup/modal is opened, Connect RFID when popup/modal is closed

diff -r 0349abe8cc31 -r 6400190a9a12 web/org.openbravo.retail.posterminal/js/login/model/login-model.js
--- a/web/org.openbravo.retail.posterminal/js/login/model/login-model.js	Mon Dec 12 17:03:52 2016 +0100
+++ b/web/org.openbravo.retail.posterminal/js/login/model/login-model.js	Fri Dec 16 17:32:52 2016 +0530
@@ -154,6 +154,7 @@
 
               OB.UTIL.localStorage.setItem('terminalId', data[0].terminal.id);
               terminalModel.set('useBarcode', terminalModel.get('terminal').terminalType.usebarcodescanner);
+              OB.MobileApp.view.scanMode = true;
               OB.MobileApp.view.scanningFocus(true);
               if (!terminalModel.usermodel) {
                 OB.MobileApp.model.loadingErrorsActions("The terminal.usermodel should be loaded at this point");
diff -r 0349abe8cc31 -r 6400190a9a12 web/org.openbravo.retail.posterminal/js/pointofsale/view/toolbar-left.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/toolbar-left.js	Mon Dec 12 17:03:52 2016 +0100
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/toolbar-left.js	Fri Dec 16 17:32:52 2016 +0530
@@ -414,6 +414,7 @@
       colNum: 1
     });
 
+    OB.MobileApp.view.scanningFocus(true);
     if (OB.UTIL.RfidController.isRfidConfigured()) {
       OB.UTIL.RfidController.disconnectRFIDDevice();
     }
diff -r 0349abe8cc31 -r 6400190a9a12 web/org.openbravo.retail.posterminal/js/utils/preScanningFocusHook.js
--- a/web/org.openbravo.retail.posterminal/js/utils/preScanningFocusHook.js	Mon Dec 12 17:03:52 2016 +0100
+++ b/web/org.openbravo.retail.posterminal/js/utils/preScanningFocusHook.js	Fri Dec 16 17:32:52 2016 +0530
@@ -8,10 +8,12 @@
  */
 
 OB.UTIL.HookManager.registerHook('OBMOBC_PreScanningFocus', function (args, callbacks) {
-  if (args.scanMode && OB.UTIL.RfidController.isRfidConfigured() && OB.UTIL.RfidController.get('rfidWebsocket') && !OB.UTIL.RfidController.get('isRFIDEnabled') && OB.UTIL.RfidController.get('reconnectOnScanningFocus')) {
-    OB.UTIL.RfidController.connectRFIDDevice();
-  } else if (args.scanMode === false && OB.UTIL.RfidController.isRfidConfigured() && OB.UTIL.RfidController.get('rfidWebsocket') && OB.UTIL.RfidController.get('isRFIDEnabled')) {
-    OB.UTIL.RfidController.disconnectRFIDDevice();
+  if (OB.UTIL.RfidController.isRfidConfigured() && OB.UTIL.RfidController.get('rfidWebsocket')) {
+    if (args.scanMode === true && !OB.UTIL.RfidController.get('isRFIDEnabled') && OB.UTIL.RfidController.get('reconnectOnScanningFocus') && (OB.MobileApp.view.originalRFIDMode || (OB.MobileApp.view.originalRFIDMode === false && OB.MobileApp.model.get('lastPaneShown') !== 'payment'))) {
+      OB.UTIL.RfidController.connectRFIDDevice();
+    } else if (args.scanMode === false && OB.UTIL.RfidController.get('isRFIDEnabled')) {
+      OB.UTIL.RfidController.disconnectRFIDDevice();
+    }
   }
   OB.UTIL.HookManager.callbackExecutor(args, callbacks);
 });
\ No newline at end of file
diff -r 0349abe8cc31 -r 6400190a9a12 web/org.openbravo.retail.posterminal/js/utils/rfidWebsocket.js
--- a/web/org.openbravo.retail.posterminal/js/utils/rfidWebsocket.js	Mon Dec 12 17:03:52 2016 +0100
+++ b/web/org.openbravo.retail.posterminal/js/utils/rfidWebsocket.js	Fri Dec 16 17:32:52 2016 +0530
@@ -10,7 +10,7 @@
 /*global, WebSocket, _ Backbone */
 
 OB.UTIL.RfidController = new Backbone.Model({
-  connected: true
+  connected: false
 });
 
 OB.UTIL.RfidController.isRfidConfigured = function () {
@@ -47,6 +47,7 @@
     }
     OB.UTIL.RfidController.set('barcodeActionHandler', new OB.UI.BarcodeActionHandler());
     OB.UTIL.RfidController.removeAllEpcs();
+    OB.UTIL.RfidController.set('connected', true);
     OB.UTIL.RfidController.set('connectionLost', false);
   };
 
@@ -55,6 +56,7 @@
     var data, ean, i, line;
     if (event.data.startsWith('doNotReconnect')) {
       OB.UTIL.RfidController.get('rfidWebsocket').onclose = function () {};
+      OB.UTIL.RfidController.set('connected', false);
       OB.UTIL.RfidController.set('connectionLost', true);
       OB.UTIL.RfidController.get('rfidWebsocket').close();
       return;
@@ -105,6 +107,7 @@
     setTimeout(function () {
       OB.UTIL.RfidController.startRfidWebsocket(websocketServerLocation, reconnectTimeout, currentRetrials, retrialsBeforeWarning);
     }, reconnectTimeout);
+    OB.UTIL.RfidController.set('connected', false);
     OB.UTIL.RfidController.set('connectionLost', true);
   };
 
@@ -400,4 +403,8 @@
       }
     }, 2000, OB.UTIL.get_UUID(), 5);
   }
-};
\ No newline at end of file
+};
+
+OB.UTIL.RfidController.on('change:isRFIDEnabled', function (model) {
+  OB.MobileApp.view.originalRFIDMode = OB.UTIL.RfidController.get('isRFIDEnabled');
+}, this);
\ No newline at end of file
