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