From 130df743da8c9921a91832bad57ec0592bd4ad80 Mon Sep 17 00:00:00 2001
From: Henning Leutz <leutz@pcsg.de>
Date: Wed, 3 Mar 2021 11:08:36 +0100
Subject: [PATCH] fix: quiqqer/discount#9

---
 src/QUI/ERP/Coupons/Events.php | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/QUI/ERP/Coupons/Events.php b/src/QUI/ERP/Coupons/Events.php
index 0763a7a..655b98b 100644
--- a/src/QUI/ERP/Coupons/Events.php
+++ b/src/QUI/ERP/Coupons/Events.php
@@ -263,20 +263,27 @@ public static function onQuiqqerOrderBasketToOrder(
                     ])
                 );
 
-                if ($Discount->getAttribute('scope') === QUI\ERP\Discount\Handler::DISCOUNT_SCOPE_EVERY_PRODUCT ||
-                    $Discount->getAttribute('scope') === QUI\ERP\Discount\Handler::DISCOUNT_SCOPE_UNIQUE
-                ) {
+                $isUnique     = $Discount->getAttribute('scope') === QUI\ERP\Discount\Handler::DISCOUNT_SCOPE_UNIQUE;
+                $everyProduct = $Discount->getAttribute('scope') === QUI\ERP\Discount\Handler::DISCOUNT_SCOPE_EVERY_PRODUCT;
+
+                if ($everyProduct || $isUnique) {
                     // add to the product
-                    $products = $Products->getProducts();
+                    $products     = $Products->getProducts();
+                    $alreadyAdded = false;
 
                     foreach ($products as $Product) {
                         if ($Discount->canUsedWith($Product) === false) {
                             continue;
                         }
 
+                        if ($isUnique && $alreadyAdded) {
+                            continue;
+                        }
+
                         if ($Product instanceof QUI\ERP\Products\Product\UniqueProduct) {
                             $Product->getPriceFactors()->add($PriceFactor);
-                            $added = true;
+                            $added        = true;
+                            $alreadyAdded = true;
                         }
                     }
 
-- 
GitLab