diff --git a/web/org.openbravo.retail.selfcheckout/source/models/orderAPI.js b/web/org.openbravo.retail.selfcheckout/source/models/orderAPI.js
index b19b907..3cd0e80 100644
--- a/web/org.openbravo.retail.selfcheckout/source/models/orderAPI.js
+++ b/web/org.openbravo.retail.selfcheckout/source/models/orderAPI.js
@@ -45,6 +45,10 @@ OB.POS.ORDER.print = function(data) {
 OB.POS.ORDER.addProduct = function(data) {
   // in:  {order, product, qty, options, attrs, context}
   // out: {order, product, orderline}
+  if (data.order.get('productToBeAdded') || data.order.get('toBeDeleted')) {
+    return Promise.resolve();
+  }
+  data.order.set('productToBeAdded', true);
   return new Promise(function(resolve, reject) {
     var ungroupedProduct;
     if (data.product.get('groupProduct')) {
@@ -66,6 +70,7 @@ OB.POS.ORDER.addProduct = function(data) {
       },
       function(args) {
         if (args.cancelOperation && args.cancelOperation === true) {
+          args.receipt.unset('productToBeAdded');
           reject({
             cancelled: true,
             cause: 'Cancelled AddProduct function.'
@@ -87,6 +92,7 @@ OB.POS.ORDER.addProduct = function(data) {
                   orderLine.get('hasMandatoryServices') === false &&
                   args.receipt.addProcess.hasProduct === true
                 ) {
+                  args.receipt.unset('productToBeAdded');
                   reject({
                     cancelled: false,
                     cause: 'Cannot manage services.'
@@ -94,10 +100,12 @@ OB.POS.ORDER.addProduct = function(data) {
                 } else {
                   args.receipt.calculateReceipt(function() {
                     data.orderLine = orderLine;
+                    args.receipt.unset('productToBeAdded');
                     resolve(data);
                   });
                 }
               } else {
+                args.receipt.unset('productToBeAdded');
                 reject({
                   cancelled: false,
                   cause: 'Failed AddProduct function.'
@@ -114,8 +122,13 @@ OB.POS.ORDER.addProduct = function(data) {
 OB.POS.ORDER.removeLine = function(data) {
   // in:  {order, line}
   // out: {order}
+  if (data.order.get('productToBeAdded') || data.order.get('toBeDeleted')) {
+    return Promise.resolve();
+  }
+  data.order.set('toBeDeleted', true);
   return new Promise(function(resolve, reject) {
     data.order.deleteLinesFromOrder([data.line], function() {
+      data.order.unset('toBeDeleted');
       resolve(data);
     });
   });
@@ -163,6 +176,10 @@ OB.POS.ORDER.load = function(data) {
 OB.POS.ORDER.remove = function(data) {
   // in:  {order}
   // out: {order}
+  if (data.order.get('productToBeAdded') || data.order.get('toBeDeleted')) {
+    return Promise.resolve();
+  }
+  data.order.set('toBeDeleted', true);
   return new Promise(function(resolve, reject) {
     if (OB.UTIL.RfidController.isRfidConfigured()) {
       OB.UTIL.RfidController.eraseEpcOrder(data.order);
@@ -170,9 +187,13 @@ OB.POS.ORDER.remove = function(data) {
     OB.Dal.remove(
       data.order,
       function() {
+        data.order.unset('toBeDeleted');
         resolve(data);
       },
-      reject
+      function() {
+        data.order.unset('toBeDeleted');
+        reject();
+      }
     );
   });
 };
diff --git a/web/org.openbravo.retail.selfcheckout/source/panels/welcomePanel.js b/web/org.openbravo.retail.selfcheckout/source/panels/welcomePanel.js
index 3e1b938..5dcb6b0 100644
--- a/web/org.openbravo.retail.selfcheckout/source/panels/welcomePanel.js
+++ b/web/org.openbravo.retail.selfcheckout/source/panels/welcomePanel.js
@@ -43,11 +43,28 @@ enyo.kind({
         order: this.receipt
       }) //
         .then(OB.POS.ORDER.remove) //
-        .then(OB.POS.ORDER.create) //
-        .then(OB.POS.ORDER.load) //
-        .then(function() {
-          // success
-          OB.SCO.Utils.hideLoading();
+        .then(function(result) {
+          if (result) {
+            Promise.resolve(result)
+              .then(OB.POS.ORDER.create) //
+              .then(OB.POS.ORDER.load) //
+              .then(function() {
+                // success
+                OB.SCO.Utils.hideLoading();
+              })
+              ['catch'](
+                function() {
+                  // exception
+                  OB.SCO.Utils.hideLoading();
+                  OB.SCO.Utils.showTechnicalError();
+                }.bind(this)
+              );
+          } else {
+            OB.SCO.Utils.hideLoading();
+            OB.MobileApp.model.get('scoView').applicationEngine.executeEvent({
+              name: 'GoScanProduct'
+            });
+          }
         })
         ['catch'](
           function() {
