diff --git a/web/org.openbravo.retail.returns/js/returnUtils.js b/web/org.openbravo.retail.returns/js/returnUtils.js
index 24df99a..82d5ddf 100644
--- a/web/org.openbravo.retail.returns/js/returnUtils.js
+++ b/web/org.openbravo.retail.returns/js/returnUtils.js
@@ -23,6 +23,9 @@
       OB.UTIL.isNullOrUndefined(returnLines) ||
       (_.isArray(returnLines) && returnLines.length === 0)
     ) {
+      if (callback) {
+        callback();
+      }
       return;
     }
 
@@ -34,6 +37,9 @@
           OB.I18N.getLabel('OBMOBC_LblWarning'),
           OB.I18N.getLabel('OBRETUR_ReturnCashVATLinesNoMixWithoutCashVATOnes')
         );
+        if (callback) {
+          callback();
+        }
         return;
       }
     }
@@ -49,6 +55,7 @@
       servicesToApproveArr = [],
       overdueServicesToApprove = '',
       overdueServicesToApproveArr = [],
+      finalCallback,
       execution;
 
     currentDate.setHours(0);
@@ -56,6 +63,15 @@
     currentDate.setSeconds(0);
     currentDate.setMilliseconds(0);
 
+    finalCallback = function() {
+      if (execution) {
+        OB.UTIL.ProcessController.finish('addReturnLines', execution);
+      }
+      if (callback) {
+        callback();
+      }
+    };
+
     createOrderLine = async function(index) {
       if (index === 0) {
         execution = OB.UTIL.ProcessController.start('addReturnLines');
@@ -69,10 +85,7 @@
             receipt: receipt
           },
           function(args) {
-            OB.UTIL.ProcessController.finish('addReturnLines', execution);
-            if (callback) {
-              callback();
-            }
+            finalCallback();
           }
         );
         return;
@@ -144,6 +157,9 @@
                 line,
                 function() {
                   createOrderLine(index + 1);
+                },
+                function() {
+                  finalCallback();
                 }
               );
             }
@@ -191,6 +207,7 @@
                     ]
                   );
                 }
+                finalCallback();
               }
             };
             if (OB.App.Security.hasPermission('OBPOS_remote.product')) {
@@ -200,7 +217,9 @@
                 function(product) {
                   createLineFunction(product);
                 },
-                null,
+                function() {
+                  finalCallback();
+                },
                 callLoadedProduct
               );
             } else {
@@ -209,6 +228,7 @@
           }
         } catch (err) {
           OB.error(err.message);
+          finalCallback();
         }
       } else {
         createOrderLine(index + 1);
@@ -274,6 +294,8 @@
             }
             ignoreReturnApproval = true;
             createOrderLine(0);
+          } else {
+            finalCallback();
           }
         }
       );
