diff --git a/web/org.openbravo.retail.posterminal/js/model/discounts.js b/web/org.openbravo.retail.posterminal/js/model/discounts.js
index deba322a4..f7514fd0d 100644
--- a/web/org.openbravo.retail.posterminal/js/model/discounts.js
+++ b/web/org.openbravo.retail.posterminal/js/model/discounts.js
@@ -403,6 +403,7 @@
     + "   (SELECT 1 FROM m_offer_pricelist opl WHERE m_offer.m_offer_id = opl.m_offer_id AND opl.m_pricelist_id = ? )))",
 
     additionalFilters: [],
+    additionalWhereClause: [],
     //extensible to add additional filters
     computeStandardFilter: function (receipt) {
       var filter = OB.Model.Discounts.standardFilter;
@@ -415,6 +416,16 @@
         }
       }
       return filter;
+    },
+    computeAdditionalWhereClause: function (context, receipt, line) {
+      var whereClause = '';
+      for (i = 0; i < OB.Model.Discounts.additionalWhereClause.length; i++) {
+        var additionalWhereClause = OB.Model.Discounts.additionalWhereClause[i];
+        if (additionalWhereClause.generateWhereClause) {
+          whereClause += additionalWhereClause.generateWhereClause(context, receipt, line);
+        }
+      }
+      return whereClause;
     }
   };
 
diff --git a/web/org.openbravo.retail.posterminal/js/model/executor.js b/web/org.openbravo.retail.posterminal/js/model/executor.js
index 0f60e123d..007cdc914 100644
--- a/web/org.openbravo.retail.posterminal/js/model/executor.js
+++ b/web/org.openbravo.retail.posterminal/js/model/executor.js
@@ -210,7 +210,7 @@ OB.Model.DiscountsExecutor = OB.Model.Executor.extend({
          + " AND M_OFFER_TYPE_ID NOT IN (" + OB.Model.Discounts.getManualPromotions() + ")" //
          + " AND ((EM_OBDISC_ROLE_SELECTION = 'Y' AND NOT EXISTS (SELECT 1 FROM OBDISC_OFFER_ROLE WHERE M_OFFER_ID = M_OFFER.M_OFFER_ID " + " AND AD_ROLE_ID = '" + OB.MobileApp.model.get('context').role.id + "')) OR (EM_OBDISC_ROLE_SELECTION = 'N' " //
          + " AND EXISTS (SELECT 1 FROM OBDISC_OFFER_ROLE WHERE M_OFFER_ID = M_OFFER.M_OFFER_ID " + " AND AD_ROLE_ID = '" + OB.MobileApp.model.get('context').role.id + "')))" //
-         + " ) OR M_OFFER_TYPE_ID IN (" + OB.Model.Discounts.getAutoCalculatedPromotions() + ")";
+         + " ) OR M_OFFER_TYPE_ID IN (" + OB.Model.Discounts.getAutoCalculatedPromotions() + ") " + OB.Model.Discounts.computeAdditionalWhereClause(me, receipt, line);
 
     if (!receipt.shouldApplyPromotions() || line.get('product').get('ignorePromotions')) {
       // Cannot apply promotions, leave actions empty
