• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discountcouponsmanagerbase.php
  • Класс: BitrixSaleDiscountCouponsManagerBase
  • Вызов: DiscountCouponsManagerBase::setApply
static function setApply($coupon, $data)
{
	if (self::$useMode == self::MODE_SYSTEM)
		return false;
	$coupon = trim((string)$coupon);
	if ($coupon == '' || empty($data) || !is_array($data))
		return false;
	if (!isset(self::$coupons[$coupon]))
		return false;
	if (self::$coupons[$coupon]['STATUS'] == self::STATUS_NOT_FOUND || self::$coupons[$coupon]['STATUS'] == self::STATUS_FREEZE)
		return false;
	$result = array();
	if ((!empty($data['BASKET']) && is_array($data['BASKET'])) || !empty($data['DELIVERY']))
	{
		if (!empty($data['BASKET']) && is_array($data['BASKET']))
		{
			if (self::$coupons[$coupon]['TYPE'] == InternalsDiscountCouponTable::TYPE_BASKET_ROW && count($data['BASKET']) > 1)
				return false;
			foreach ($data['BASKET'] as $product)
			{
				if (empty($product))
					continue;
				$hash = self::getProductHash($product);
				if ($hash == '')
					continue;
				if (self::$coupons[$coupon]['TYPE'] == InternalsDiscountCouponTable::TYPE_BASKET_ROW && !empty(self::$coupons[$coupon]['BASKET']))
					continue;
				self::$coupons[$coupon]['BASKET'][$hash] = true;
				self::$coupons[$coupon]['STATUS'] = self::STATUS_APPLYED;
				$result['COUPON'] = self::$coupons[$coupon];
				if (!isset($result['BASKET']))
					$result['BASKET'] = array();
				$result['BASKET'][] = $product;
			}
			unset($product);
		}
		if (!empty($data['DELIVERY']))
		{
			self::$coupons[$coupon]['DELIVERY'] = $data['DELIVERY'];
			self::$coupons[$coupon]['STATUS'] = self::STATUS_APPLYED;
			$result['COUPON'] = self::$coupons[$coupon];
			$result['DELIVERY'] = self::$coupons[$coupon]['DELIVERY'];
		}
		$event = new MainEvent('sale', self::EVENT_ON_COUPON_APPLY, $result);
		unset($result);
		$event->send();
		return true;
	}
	return false;
}