- Модуль: 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);
}