• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discountcouponsmanagerbase.php
  • Класс: BitrixSaleDiscountCouponsManagerBase
  • Вызов: DiscountCouponsManagerBase::load
static function load()
{
	if (self::$useMode != self::MODE_ORDER)
		return;

	self::$checkActivity = false;
	$couponsList = array();

	$registry = Registry::getInstance(static::getRegistryType());

	/** @var OrderDiscountBase $storageClassName */
	$storageClassName = $registry->getOrderDiscountClassName();

	$couponIterator = $storageClassName::getOrderCouponIterator([
		'select' => [
			'*',
			'MODULE_ID' => 'ORDER_DISCOUNT.MODULE_ID',
			'DISCOUNT_ID' => 'ORDER_DISCOUNT.DISCOUNT_ID',
			'DISCOUNT_NAME' => 'ORDER_DISCOUNT.NAME'
		],
		'filter' => ['=ORDER_ID' => self::$orderId],
		'order' => ['ID' => 'ASC']
	]);
	while ($coupon = $couponIterator->fetch())
	{
		$couponData = $coupon['DATA'];
		$couponData['COUPON'] = $coupon['COUPON'];
		$couponData['STATUS'] = self::STATUS_ENTERED;
		$couponData['CHECK_CODE'] = self::COUPON_CHECK_OK;
		$couponData['MODULE'] = $coupon['MODULE_ID'];
		$couponData['MODULE_ID'] = $coupon['MODULE_ID'];
		$couponData['ID'] = $coupon['COUPON_ID'];
		$couponData['DISCOUNT_ID'] = $coupon['DISCOUNT_ID'];
		$couponData['DISCOUNT_NAME'] = (string)$coupon['DISCOUNT_NAME'];
		$couponData['DISCOUNT_ACTIVE'] = 'Y';
		$couponData['TYPE'] = $coupon['TYPE'];
		$couponData['ACTIVE'] = 'Y';
		$couponData['SAVED'] = 'Y';
		foreach (self::$timeFields as $fieldName)
		{
			if (isset($couponData[$fieldName]))
				$couponData[$fieldName] = MainTypeDateTime::createFromTimestamp($couponData[$fieldName]);
		}
		unset($fieldName);
		if (empty($couponData['USER_INFO']) && $couponData['MODE'] == self::COUPON_MODE_FULL)
		{
			$couponData['USER_INFO'] = array(
				'USER_ID' => 0,
				'MAX_USE' => 0,
				'USE_COUNT' => 0,
				'ACTIVE_FROM' => null,
				'ACTIVE_TO' => null
			);
		}
		if (!empty($couponData['USER_INFO']))
		{
			foreach (self::$timeFields as $fieldName)
			{
				if (isset($couponData['USER_INFO'][$fieldName]))
					$couponData['USER_INFO'][$fieldName] = MainTypeDateTime::createFromTimestamp($couponData['USER_INFO'][$fieldName]);
			}
			unset($fieldName);
			foreach ($couponData['USER_INFO'] as $fieldName => $fieldValue)
				$couponData[$fieldName] = $fieldValue;
		}
		$couponsList[$couponData['COUPON']] = $couponData;
	}
	unset($coupon, $couponIterator);

	if (!empty($couponsList))
		self::setCoupons($couponsList, false);

	self::$checkActivity = true;
}