• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discountbase.php
  • Класс: BitrixSaleDiscountBase
  • Вызов: DiscountBase::getBasketCodes
protected function getBasketCodes($full = true)
{
	$result = [];
	if (empty($this->orderData['BASKET_ITEMS']))
		return $result;
	switch ($this->getUseMode())
	{
		case self::USE_MODE_FULL:
		case self::USE_MODE_COUPONS:
			foreach ($this->orderData['BASKET_ITEMS'] as $code => $item)
			{
				if ($this->isFreezedBasketItem($item))
					continue;
				$result[] = $code;
			}
			unset($code, $item);
			break;
		case self::USE_MODE_APPLY:
			foreach ($this->orderData['BASKET_ITEMS'] as $code => $item)
			{
				if (
					$this->isFreezedBasketItem($item)
					|| $this->isNewBasketItem($item)
					|| $this->isBasketItemChanged($code)
				)
					continue;
				$result[] = $code;
			}
			unset($code, $item);
			break;
		case self::USE_MODE_MIXED:
			$full = ($full === true);
			if ($full)
			{
				foreach ($this->orderData['BASKET_ITEMS'] as $code => $item)
				{
					if (
						!$this->isFreezedBasketItem($item)
						&& ($this->isNewBasketItem($item) || $this->isBasketItemChanged($code))
					)
						$result[] = $code;
				}
				unset($code, $item);
			}
			else
			{
				foreach ($this->orderData['BASKET_ITEMS'] as $code => $item)
				{
					if (
						$this->isFreezedBasketItem($item)
						|| $this->isNewBasketItem($item)
						|| $this->isBasketItemChanged($code)
					)
						continue;
					$result[] = $code;
				}
				unset($code, $item);
			}
			break;
	}

	return $result;
}