diff --git a/web/org.openbravo.retail.discounts/js/promotion-pack.js b/web/org.openbravo.retail.discounts/js/promotion-pack.js
--- a/web/org.openbravo.retail.discounts/js/promotion-pack.js
+++ b/web/org.openbravo.retail.discounts/js/promotion-pack.js
@@ -27,7 +27,7 @@
       var chunks, totalAmt, promotionAmt = 0,
           outOfComboAmt;
 
-      applyingToLines = receipt.checkAvailableUnitsPerLine(discountRule);
+      applyingToLines = receipt.checkAvailableUnitsPerLine((receipt.get('applyPack') && receipt.get('applyPack').get('priority') > discountRule.get('priority')) ? receipt.get('applyPack') : discountRule);
 
       applyingToLines.forEach(function (l) {
         if (receiptProducts[l.get('product').id]) {
@@ -181,7 +181,9 @@
         order.set('skipApplyPromotions', true);
         addProductsAndCalculateDiscounts(productsOfPromotion, 0, function () {
           order.set('skipApplyPromotions', false);
+          order.set('applyPack', productToAdd);
           order.calculateReceipt();
+          order.set('applyPack', null);
         }, errorCallback);
       });
     }, function () {
