• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discountbase.php
  • Класс: BitrixSaleDiscountBase
  • Вызов: DiscountBase::calculateApplySaleAdditionalCoupons
protected function calculateApplySaleAdditionalCoupons(array $applyCoupons)
{
	$result = new Result;

	if (empty($applyCoupons))
		return $result;

	$this->discountResult['APPLY_BLOCKS'][$this->discountResultCounter]['ORDER'] = array();

	$discountId = array();
	foreach ($applyCoupons as $coupon)
		$discountId[] = $coupon['DISCOUNT_ID'];
	unset($coupon);

	$currentUseMode = $this->getUseMode();
	$this->setUseMode(self::USE_MODE_COUPONS);

	$this->loadDiscountByUserGroups(array('@DISCOUNT_ID' => $discountId));
	unset($discountId);

	$basketCodeList = $this->getBasketCodes(false);
	foreach ($basketCodeList as $basketCode)
	{
		$this->orderData['BASKET_ITEMS'][$basketCode]['BASE_PRICE_TMP'] = $this->orderData['BASKET_ITEMS'][$basketCode]['BASE_PRICE'];
		$this->orderData['BASKET_ITEMS'][$basketCode]['BASE_PRICE'] = $this->orderData['BASKET_ITEMS'][$basketCode]['PRICE'];
	}
	unset($basketCode);

	$this->loadDiscountList();
	$executeResult = $this->executeDiscountList();
	if (!$executeResult->isSuccess())
		$result->addErrors($executeResult->getErrors());
	unset($executeResult);
	$this->setUseMode($currentUseMode);
	unset($currentUseMode);

	foreach ($basketCodeList as $basketCode)
	{
		$this->orderData['BASKET_ITEMS'][$basketCode]['BASE_PRICE'] = $this->orderData['BASKET_ITEMS'][$basketCode]['BASE_PRICE_TMP'];
		unset($this->orderData['BASKET_ITEMS'][$basketCode]['BASE_PRICE_TMP']);
	}
	unset($basketCode);
	unset($basketCodeList);

	return $result;
}