diff --git a/web/org.openbravo.mobile.core/source/retail/component/ob-retail-searchproductcharacteristic.js b/web/org.openbravo.mobile.core/source/retail/component/ob-retail-searchproductcharacteristic.js
--- a/web/org.openbravo.mobile.core/source/retail/component/ob-retail-searchproductcharacteristic.js
+++ b/web/org.openbravo.mobile.core/source/retail/component/ob-retail-searchproductcharacteristic.js
@@ -1073,7 +1073,8 @@
     }, this);
 
     this.receipt.on('showProductList', function (line, proposalType, finalCallback) {
-      var previousStatus, customFilters = [];
+      var previousStatus, customFilters = [],
+          me = this;
       if (proposalType && proposalType === 'mandatory') {
         this.customFilters.forEach(function (customFilter) {
           if (customFilter.type === 'BUTTON') {
@@ -1123,12 +1124,25 @@
       this.bubble('onTabChange', {
         tabPanel: 'searchCharacteristic'
       });
-      this.doSearchAction({
-        productCat: '__all__',
-        productName: '',
-        skipProduct: false,
-        skipProductCharacteristic: false
-      });
+
+      function serviceSearchAction() {
+        me.receipt.off('calculatedReceipt', serviceSearchAction);
+        if (OB.MobileApp.model.get('serviceSearchMode')) {
+          me.doSearchAction({
+            productCat: '__all__',
+            productName: '',
+            skipProduct: false,
+            skipProductCharacteristic: false
+          });
+        }
+      }
+      if (me.receipt.calculatingReceipt) {
+        me.$.products.hide();
+        me.$.renderLoading.show();
+        me.receipt.on('calculatedReceipt', serviceSearchAction);
+      } else {
+        serviceSearchAction();
+      }
 
       if (proposalType) {
         this.doManageServiceProposal({
