From f80443b7951390e2d66ebd4f0ddc49615b4e7870 Mon Sep 17 00:00:00 2001
From: Henning Leutz <leutz@pcsg.de>
Date: Mon, 25 May 2020 14:50:56 +0200
Subject: [PATCH] fix: coupon code check during redeem

---
 ajax/frontend/redeem.php | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/ajax/frontend/redeem.php b/ajax/frontend/redeem.php
index 2c1bde4..e5fa5e4 100644
--- a/ajax/frontend/redeem.php
+++ b/ajax/frontend/redeem.php
@@ -4,7 +4,9 @@
  * This file contains package_quiqqer_coupons_ajax_delete
  */
 
+use QUI\ERP\Coupons\CouponCodeException;
 use QUI\ERP\Coupons\Handler;
+use QUI\ERP\Discount\EventHandling as DiscountEvents;
 
 /**
  * Redeem a CouponCode
@@ -38,7 +40,38 @@ function ($code, $orderHash) {
             return false;
         }
 
-        $Order   = QUI\ERP\Order\Handler::getInstance()->getOrderByHash($orderHash);
+        $Order        = QUI\ERP\Order\Handler::getInstance()->getOrderByHash($orderHash);
+        $productCount = $Order->getArticles()->count();
+
+        $calculations = $Order->getArticles()->getCalculations();
+        $subSum       = $calculations['subSum'];
+        $discounts    = $CouponCode->getDiscounts();
+
+        foreach ($discounts as $Discount) {
+            if (!DiscountEvents::isDiscountUsableWithQuantity($Discount, $productCount)) {
+                QUI::getMessagesHandler()->addError(
+                    QUI::getLocale()->get(
+                        'quiqqer/coupons',
+                        'exception.CouponCode.discounts_invalid'
+                    )
+                );
+
+                return false;
+            }
+
+            if (!DiscountEvents::isDiscountUsableWithPurchaseValue($Discount, $subSum)) {
+                QUI::getMessagesHandler()->addError(
+                    QUI::getLocale()->get(
+                        'quiqqer/coupons',
+                        'exception.CouponCode.discounts_invalid'
+                    )
+                );
+
+                return false;
+            }
+        }
+
+
         $coupons = $Order->getDataEntry('quiqqer-coupons');
 
         if (empty($coupons)) {
-- 
GitLab