• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/model/price.php
  • Класс: BitrixCatalogModelPrice
  • Вызов: Price::runUpdateExternalActions
static function runUpdateExternalActions($id, array $data): void
{
	$price = self::getCacheItem($id);
	if ((int)$price['CATALOG_GROUP_ID'] === self::$basePriceType)
	{
		if (isset(self::$productPrices[$price['PRODUCT_ID']]))
		{
			unset(self::$productPrices[$price['PRODUCT_ID']]);
		}
	}
	if (isset($data['actions']['RECOUNT_PRICES']))
	{
		self::recountPricesFromBase($id);
	}
	if (isset($data['actions']['PARENT_PRICE']))
	{
		$priceTypes = [0 => $price['CATALOG_GROUP_ID']];
		if (
			isset($price[self::PREFIX_OLD.'CATALOG_GROUP_ID'])
			&& $price[self::PREFIX_OLD.'CATALOG_GROUP_ID'] != $price['CATALOG_GROUP_ID']
		)
			$priceTypes[] = $price[self::PREFIX_OLD.'CATALOG_GROUP_ID'];
		CatalogProductSku::calculatePrice(
			$price['PRODUCT_ID'], null, CatalogProductTable::TYPE_OFFER, $priceTypes);
		if (
			isset($price[self::PREFIX_OLD.'PRODUCT_ID'])
			&& $price[self::PREFIX_OLD.'PRODUCT_ID'] != $price['PRODUCT_ID']
		)
			CatalogProductSku::calculatePrice($price[self::PREFIX_OLD.'PRODUCT_ID'], null, null, $priceTypes);
		unset($priceTypes);
	}
	self::updateProductModificationTime($price['PRODUCT_ID']);
	if (
		isset($price[self::PREFIX_OLD.'PRODUCT_ID'])
		&& $price[self::PREFIX_OLD.'PRODUCT_ID'] != $price['PRODUCT_ID']
	)
	{
		self::updateProductModificationTime($price[self::PREFIX_OLD.'PRODUCT_ID']);
	}
	unset($price);
}