• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/compatible/discountcompatibility.php
  • Класс: BitrixSaleCompatibleDiscountCompatibility
  • Вызов: DiscountCompatibility::correctStepResult
static function correctStepResult(&$order, &$stepResult, $discount)
{
	if ($discount['USE_COUPONS'] == 'Y' && !empty($discount['COUPON']))
	{
		if (
			$discount['COUPON']['TYPE'] == SaleInternalsDiscountCouponTable::TYPE_BASKET_ROW &&
			(!empty($stepResult['BASKET']) && count($stepResult['BASKET']) > 1)
		)
		{
			$publicMode = self::usedByClient();
			$maxPrice = 0;
			$maxKey = -1;
			$basketId = -1;
			foreach (self::$previousOrderData['BASKET_ITEMS'] as $key => $item)
			{
				$resultKey = ($publicMode ? $item['ID'] : $key);
				if (isset($stepResult['BASKET'][$resultKey]))
				{
					if ($maxPrice < $item['PRICE'])
					{
						$maxPrice = $item['PRICE'];
						$maxKey = $key;
						$basketId = $resultKey;
					}
				}
			}
			unset($key, $item);
			$basketKeys = array_keys($order['BASKET_ITEMS']);
			foreach ($basketKeys as &$key)
			{
				if ($key == $maxKey)
					continue;
				$order['BASKET_ITEMS'][$key] = self::$previousOrderData['BASKET_ITEMS'][$key];
			}
			unset($key);
			$basketKeys = array_keys($stepResult['BASKET']);
			foreach ($basketKeys as &$key)
			{
				if ($key == $basketId)
					continue;
				unset($stepResult['BASKET'][$key]);
			}
			unset($key);
			unset($basketKeys);
			unset($basketId, $maxKey, $maxPrice, $publicMode);
		}
	}
}