diff --git a/web/org.openbravo.retail.posterminal/js/model/discounts.js b/web/org.openbravo.retail.posterminal/js/model/discounts.js
--- a/web/org.openbravo.retail.posterminal/js/model/discounts.js
+++ b/web/org.openbravo.retail.posterminal/js/model/discounts.js
@@ -155,6 +155,9 @@
         }
         this.applyPromotionsImp(auxReceipt, null, true);
       } else {
+        receipt.on('discountsApplied', function () {
+          OB.Model.Discounts.finishPromotions(receipt, line);
+        });
         this.applyPromotionsImp(receipt, line, false);
       }
     },
@@ -181,24 +184,19 @@
         lines = _.sortBy(receipt.get('lines').models, function (lo) {
           return -lo.getQty();
         });
-        if (lines.length === 0) {
-          // Removing last line, recalculate total
-          receipt.calculateGross();
+        linesWithoutNoDiscCandidated = lines.filter(function (l) {
+          return l.get('noDiscountCandidates') !== true;
+        });
+        if (linesWithoutNoDiscCandidated.length === 0) {
+          receipt.trigger('discountsApplied');
         } else {
-          linesWithoutNoDiscCandidated = lines.filter(function (l) {
-            return l.get('noDiscountCandidates') !== true;
-          });
-          if (linesWithoutNoDiscCandidated.length === 0) {
-            receipt.trigger('discountsApplied');
-          } else {
-            lines.forEach(function (l) {
-              // with new flow discounts -> skipSave =true
-              // in other case -> false
-              if (l.get('noDiscountCandidates') !== true) {
-                this.applyPromotionsImp(receipt, l, OB.MobileApp.model.hasPermission('OBPOS_discount.newFlow', true));
-              }
-            }, this);
-          }
+          lines.forEach(function (l) {
+            // with new flow discounts -> skipSave =true
+            // in other case -> false
+            if (l.get('noDiscountCandidates') !== true) {
+              this.applyPromotionsImp(receipt, l, OB.MobileApp.model.hasPermission('OBPOS_discount.newFlow', true));
+            }
+          }, this);
         }
       }
     },
diff --git a/web/org.openbravo.retail.posterminal/js/model/executor.js b/web/org.openbravo.retail.posterminal/js/model/executor.js
--- a/web/org.openbravo.retail.posterminal/js/model/executor.js
+++ b/web/org.openbravo.retail.posterminal/js/model/executor.js
@@ -347,6 +347,7 @@
         return p.get('receipt') === evt.get('receipt');
       }).length === 0) {
         evt.get('receipt').calculateGross();
+        evt.get('receipt').set('isBeingDiscounted', false);
       }
     }
 
