• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discountcouponsmanagerbase.php
  • Класс: BitrixSaleDiscountCouponsManagerBase
  • Вызов: DiscountCouponsManagerBase::getData
static function getData($coupon, $checkCoupon = true)
{
	$currentTime = new MainTypeDateTime();
	$currentTimestamp = $currentTime->getTimestamp();
	self::initUseDiscount();
	$coupon = trim((string)$coupon);
	if ($coupon === '')
		return false;
	$checkCoupon = ($checkCoupon === true);

	$result = static::getEmptyCouponFields($coupon);

	$resultKeyList = array(
		'ID', 'COUPON', 'DISCOUNT_ID', 'TYPE', 'ACTIVE', 'DISCOUNT_NAME',
		'DISCOUNT_ACTIVE', 'DISCOUNT_ACTIVE_FROM', 'DISCOUNT_ACTIVE_TO'
	);

	$couponIterator = InternalsDiscountCouponTable::getList(array(
		'select' => array(
			'ID', 'COUPON', 'DISCOUNT_ID', 'TYPE', 'ACTIVE',
			'USER_ID', 'MAX_USE', 'USE_COUNT', 'ACTIVE_FROM', 'ACTIVE_TO',
			'DISCOUNT_NAME' => 'DISCOUNT.NAME', 'DISCOUNT_ACTIVE' => 'DISCOUNT.ACTIVE',
			'DISCOUNT_ACTIVE_FROM' => 'DISCOUNT.ACTIVE_FROM', 'DISCOUNT_ACTIVE_TO' => 'DISCOUNT.ACTIVE_TO'
		),
		'filter' => array('=COUPON' => $coupon)
	));
	if ($existCoupon = $couponIterator->fetch())
	{
		$result['MODE'] = self::COUPON_MODE_FULL;
		$result['MODULE'] = 'sale';
		$result['MODULE_ID'] = 'sale';
		$checkCode = self::checkBaseData($existCoupon, self::COUPON_CHECK_OK);
		foreach ($resultKeyList as $resultKey)
			$result[$resultKey] = $existCoupon[$resultKey];
		unset($resultKey);

		if ($checkCoupon)
		{
			$checkCode = self::checkFullData($existCoupon, $result['MODE'], $checkCode, $currentTimestamp);
			self::fillUserInfo($result, $existCoupon, $checkCode);
		}
		$result['STATUS'] = ($checkCode == self::COUPON_CHECK_OK ? self::STATUS_ENTERED : self::STATUS_FREEZE);
		$result['CHECK_CODE'] = $checkCode;
		unset($checkCode);
	}
	elseif (!self::$onlySaleDiscount && !empty(self::$couponProviders))
	{
		foreach (self::$couponProviders as $provider)
		{
			$existCoupon = call_user_func_array(
				$provider['getData'],
				array(
					$coupon
				)
			);
			if (!empty($existCoupon) && is_array($existCoupon))
			{
				$result['MODE'] = $provider['mode'];
				$result['MODULE'] = $provider['module'];
				$result['MODULE_ID'] = $provider['module'];
				$checkCode = self::checkBaseData($existCoupon, self::COUPON_CHECK_OK);
				foreach ($resultKeyList as $resultKey)
					$result[$resultKey] = $existCoupon[$resultKey];
				unset($resultKey);

				if ($checkCoupon)
				{
					$checkCode = self::checkFullData($existCoupon, $result['MODE'], $checkCode, $currentTimestamp);
					self::fillUserInfo($result, $existCoupon, $checkCode);
				}
				$result['STATUS'] = ($checkCode == self::COUPON_CHECK_OK ? self::STATUS_ENTERED : self::STATUS_FREEZE);
				$result['CHECK_CODE'] = $checkCode;
				unset($checkCode);
				break;
			}
		}
		unset($provider);
	}
	return $result;
}