• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discount/actions.php
  • Класс: BitrixSaleDiscountActions
  • Вызов: Actions::applySimpleGift
static function applySimpleGift(array &$order, $filter)
{
	static::increaseApplyCounter();

	$actionDescription = array(
		'ACTION_TYPE' => Formatter::TYPE_SIMPLE_GIFT
	);
	static::setActionDescription(self::RESULT_ENTITY_BASKET, $actionDescription);

	if (!is_callable($filter))
		return;

	if (empty($order['BASKET_ITEMS']) || !is_array($order['BASKET_ITEMS']))
		return;

	static::disableBasketFilter();

	$itemsCopy = $order['BASKET_ITEMS'];
	MainTypeCollection::sortByColumn($itemsCopy, 'PRICE', null, null, true);
	$filteredBasket = static::getBasketForApply(
		$itemsCopy,
		$filter,
		array(
			'GIFT_TITLE' => Loc::getMessage('BX_SALE_DISCOUNT_ACTIONS_SIMPLE_GIFT_DESCR')
		)
	);
	unset($itemsCopy);

	static::enableBasketFilter();

	if (empty($filteredBasket))
		return;

	$applyBasket = array_filter($filteredBasket, 'BitrixSaleDiscountActions::filterBasketForAction');
	unset($filteredBasket);
	if (empty($applyBasket))
		return;

	foreach ($applyBasket as $basketCode => $basketRow)
	{
		self::fillDiscountPrice($basketRow, 0, $basketRow['PRICE']);

		$order['BASKET_ITEMS'][$basketCode] = $basketRow;

		$rowActionDescription = $actionDescription;
		$rowActionDescription['BASKET_CODE'] = $basketCode;
		static::setActionResult(self::RESULT_ENTITY_BASKET, $rowActionDescription);
		unset($rowActionDescription);
	}
	unset($basketCode, $basketRow);
}