recountPricesFromBase
bool public static \Bitrix\Catalog\Model\Price::recountPricesFromBase( $id );
Метод пересчитывает цены товара, которые зависят от базовой цены через наценки. Статический метод.
Параметры
| Параметр | Описание |
|---|---|
$id |
Идентификатор базовой цены. Метод приводит значение к целому числу |
Возвращаемое значение
Метод возвращает true, если нашел указанную базовую цену и завершил обработку зависимых цен. Результат true не означает, что метод обязательно нашел и изменил зависимые цены.
Метод возвращает false в следующих случаях:
- идентификатор меньше или равен нулю,
- базовый тип цен или список наценок не настроен,
- цена с указанным идентификатором не найдена или не относится к базовому типу,
- товар цены не найден,
- автоматизация торговых предложений отключена, а цена принадлежит товару с торговыми предложениями или пустому SKU,
- валюта базовой цены не найдена.
Особенности
Метод выбирает цены того же товара с тем же диапазоном количества. В пересчет попадают цены с наценкой, которая зарегистрирована в настройках каталога. Новое значение равно базовой цене, умноженной на коэффициент наценки. Метод также меняет валюту и цену в базовой валюте.
Для цены торгового предложения метод может пересчитать минимальные цены родительского товара.
Пример
Пример изменяет зависимые цены товара. Передайте идентификатор базовой цены товара, цены с наценками которого можно пересчитать.
<?php
use Bitrix\Catalog\Model\Price;
use Bitrix\Main\Loader;
if (!Loader::includeModule('catalog'))
{
throw new RuntimeException('Не удалось подключить модуль catalog');
}
// Идентификатор базовой цены, от которой зависят цены с наценками
$basePriceId = 123;
try
{
if (!Price::recountPricesFromBase($basePriceId))
{
echo 'Цены не пересчитаны. Проверьте базовую цену и настройки наценок';
return;
}
echo 'Пересчет зависимых цен завершен';
}
catch (Throwable $exception)
{
echo 'Не удалось пересчитать цены: ' . $exception->getMessage();
}