diff --git a/src/QUI/ERP/Coupons/Events.php b/src/QUI/ERP/Coupons/Events.php index 0763a7a3610c998fae139568bfc60b06c2ee5053..655b98b5b45a4dd7fb306e4f758df640ccdd0240 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; } }