• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/basketcomponenthelper.php
  • Класс: BitrixSaleBasketComponentHelper
  • Вызов: BasketComponentHelper::onSaleBasketItemEntitySaved
static function onSaleBasketItemEntitySaved(MainEvent $event)
{
	$fuserId = Fuser::getId(true);
	$basketItem = $event->getParameter('ENTITY');

	$originalValues = $event->getParameter('VALUES');
	if ((!$basketItem instanceof BasketItem))
	{
		return new MainEventResult( MainEventResult::SUCCESS, null, 'sale');
	}

	/** @var BitrixSaleBasket $basket */
	if ((!$basket = $basketItem->getCollection())
		|| ($basketItem->getFUserId() != $fuserId)
	)
	{
		return new MainEventResult( MainEventResult::SUCCESS, null, 'sale');
	}

	if ($basketItem->isChanged())
	{
		$updateSessionData = false;

		if (!$basket->getOrder())
		{
			if (!$updateSessionData && array_key_exists('QUANTITY', $originalValues))
			{
				$updateSessionData = true;
			}

			if (!$updateSessionData && (array_key_exists('PRICE', $originalValues) && PriceMaths::roundPrecision($originalValues['PRICE']) !== PriceMaths::roundPrecision($basketItem->getPrice())))
			{
				$updateSessionData = true;
			}

			if (!$updateSessionData && (array_key_exists('DISCOUNT_PRICE', $originalValues) && PriceMaths::roundPrecision($originalValues['DISCOUNT_PRICE']) !== PriceMaths::roundPrecision($basketItem->getDiscountPrice())))
			{
				$updateSessionData = true;
			}
		}

		if (!$updateSessionData && (array_key_exists('ORDER_ID', $originalValues) && (intval($originalValues['ORDER_ID'])) == 0 && intval($basketItem->getField('ORDER_ID') > 0)))
		{
			$updateSessionData = true;
		}

		if (!$updateSessionData
			&& (array_key_exists('CAN_BUY', $originalValues) && ($originalValues['CAN_BUY'] !== $basketItem->getField('CAN_BUY'))))
		{
			$updateSessionData = true;
		}

		if (!$updateSessionData
			&& (array_key_exists('DELAY', $originalValues) && ($originalValues['DELAY'] !== $basketItem->getField('DELAY'))))
		{
			$updateSessionData = true;
		}

		if ($updateSessionData)
		{
			static::clearFUserBasketPrice($fuserId, SITE_ID);
			static::clearFUserBasketQuantity($fuserId, SITE_ID);
		}
	}

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