• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/compatible/eventcompatibility.php
  • Класс: BitrixSaleCompatibleEventCompatibility
  • Вызов: EventCompatibility::onBasketItemChange
static function onBasketItemChange(MainEvent $event)
{
	if (static::$disableEvent === true)
	{
		return new MainEventResult( MainEventResult::SUCCESS, null, 'sale');
	}

	$parameters = $event->getParameters();

	/** @var SaleBasketItem $basketItem */
	$basketItem = $parameters['ENTITY'];
	$isNew = $parameters['IS_NEW'] ?? false;
	$oldValues = $parameters['VALUES'];
	if (!$basketItem instanceof SaleBasketItem)
	{
		return new MainEventResult(
			MainEventResult::ERROR,
			new SaleResultError(MainLocalizationLoc::getMessage('SALE_EVENT_COMPATIBILITY_WRONG_BASKET'), 'SALE_EVENT_COMPATIBILITY_BASKET_ITEM_CHANGE_WRONG_BASKET'),
			'sale'
		);
	}

	$basketFields = BasketCompatibility::convertBasketItemToArray($basketItem);

	static::setDisableEvent(true);
	if (!$isNew)
	{
		foreach(GetModuleEvents("sale", static::EVENT_COMPATIBILITY_ON_BASKET_ITEM_UPDATE, true) as $oldEvent)
		{
			ExecuteModuleEventEx($oldEvent, array($basketItem->getId(), $basketFields));
		}
	}

	if (array_key_exists('QUANTITY', $oldValues) && ($basketFields['QUANTITY'] - $oldValues['QUANTITY']) > 0)
	{
		foreach(GetModuleEvents("sale", static::EVENT_COMPATIBILITY_ON_BASKET_ITEM_ADD, true) as $oldEvent)
		{
			ExecuteModuleEventEx($oldEvent, Array($basketItem->getId(), $basketFields));
		}
	}

	static::setDisableEvent(false);

	return new MainEventResult( MainEventResult::SUCCESS, null, 'sale');
}