• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/internals/discount.php
  • Класс: BitrixSaleInternalsDiscountTable
  • Вызов: DiscountTable::onAfterUpdate
static function onAfterUpdate(MainEntityEvent $event)
{
	$id = $event->getParameter('primary');
	$fields = $event->getParameter('fields');
	if (isset($fields['ACTIVE']))
		DiscountGroupTable::changeActiveByDiscount($id['ID'], $fields['ACTIVE']);

	if (isset($fields['ACTIONS_LIST']))
	{
		if (!is_array($fields['ACTIONS_LIST']) && CheckSerializedData($fields['ACTIONS_LIST']))
			$fields['ACTIONS_LIST'] = unserialize($fields['ACTIONS_LIST'], ['allowed_classes' => false]);
		if (is_array($fields['ACTIONS_LIST']))
		{
			GiftRelatedDataTable::deleteByDiscount($id['ID']);
			$giftManager = GiftManager::getInstance();
			if ($giftManager->isContainGiftAction($fields))
			{
				if (!$giftManager->existsDiscountsWithGift())
					$giftManager->enableExistenceDiscountsWithGift();
				GiftRelatedDataTable::fillByDiscount($fields + $id);
			}
		}
	}

	$specificFields = array(
		'EXECUTE_MODE' => static::resolveExecuteModeByDiscountId($id),
	);

	if (isset($fields['CONDITIONS_LIST']))
	{
		$specificFields['HAS_INDEX'] = IndexManager::getInstance()->indexDiscount($fields + $id) ? 'Y' : 'N';
	}

	static::updateSpecificFields($id['ID'], $specificFields);
	static::updateConfigurationIfNeeded($fields, $specificFields);

	self::dropIblockCache();
}