• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/compatible/discountcompatibility.php
  • Класс: BitrixSaleCompatibleDiscountCompatibility
  • Вызов: DiscountCompatibility::getResult
static function getResult()
{
	if (!self::$init || self::$useMode == self::MODE_SYSTEM)
		return false;
	if (self::$useMode == self::MODE_ORDER)
		return array();
	if (self::$useMode == self::MODE_DISABLED)
		return array();
	$result = array(
		'CALCULATE' => array(
			'USE_MODE' => self::$discountUseMode,
			'NEW_ORDER' => self::$order === null,
		),
		'BASE_PRICE' => array(),
		'DISCOUNT_LIST' => array(),
		'COUPONS_LIST' => array(),
		'DISCOUNT_RESULT' => array(),
		'FORWARD_BASKET_TABLE' => array(),
		'REVERSE_BASKET_TABLE' => array()
	);

	if (!empty(self::$basketBasePrice))
	{
		foreach (self::$basketBasePrice as $index => $price)
		{
			if (!isset(self::$basketCodes[$index]))
				continue;
			$result['BASE_PRICE'][self::$basketCodes[$index]] = $price;
		}
		unset($index, $price);
	}

	if (!empty(self::$discountsCache))
		$result['DISCOUNT_LIST'] = self::$discountsCache;

	if (!empty(self::$couponsCache))
		$result['COUPONS_LIST'] = self::$couponsCache;

	if (
		!empty(self::$discountResult['BASKET'])
		|| !empty(self::$discountResult['ORDER'])
		|| !empty(self::$discountResult['BASKET_ROUND'])
	)
	{
		$result['DISCOUNT_RESULT']['APPLY_BLOCKS'] = array(
			0 => array(
				'BASKET' => array(),
				'BASKET_ROUND' => array(),
				'ORDER' => array()
			)
		);
	}

	if (!empty(self::$discountResult['BASKET']))
	{
		foreach (self::$discountResult['BASKET'] as $index => $discountList)
		{
			if (!isset(self::$basketCodes[$index]))
				continue;
			$result['DISCOUNT_RESULT']['APPLY_BLOCKS'][0]['BASKET'][self::$basketCodes[$index]] = $discountList;
		}
		unset($index, $discountList);
	}

	if (!empty(self::$discountResult['BASKET_ROUND']))
	{
		foreach (self::$discountResult['BASKET_ROUND'] as $index => $roundData)
		{
			if (!isset(self::$basketCodes[$index]))
				continue;
			$result['DISCOUNT_RESULT']['APPLY_BLOCKS'][0]['BASKET_ROUND'][self::$basketCodes[$index]] = $roundData;
		}
		unset($index, $roundData);
	}

	if (!empty(self::$discountResult['ORDER']))
	{
		foreach (self::$discountResult['ORDER'] as $discountIndex => $discount)
		{
			if (!empty($discount['RESULT']['BASKET']))
			{
				$newBasket = array();
				foreach ($discount['RESULT']['BASKET'] as $index => $basketItem)
				{
					if (!isset(self::$basketCodes[$index]))
						continue;
					$basketItem['BASKET_ID'] = self::$basketCodes[$index];
					$newBasket[self::$basketCodes[$index]] = $basketItem;
				}
				unset($index, $basketItem);
				$discount['RESULT']['BASKET'] = $newBasket;
			}
			$result['DISCOUNT_RESULT']['APPLY_BLOCKS'][0]['ORDER'][$discountIndex] = $discount;
		}
		unset($discountIndex, $discount);
	}

	if (!empty(self::$basketCodes))
	{
		foreach (self::$basketCodes as $code => $id)
		{
			$result['FORWARD_BASKET_TABLE'][$code] = $id;
			$result['REVERSE_BASKET_TABLE'][$id] = $code;
		}
		unset($code, $id);
	}

	return $result;
}