dikey58
@dikey58
Самоучка - web-разработчик

Почему не создаются значения ТипЦен?

Связал событие
\Bitrix\Main\EventManager::getInstance()->addEventHandler("catalog", "\Bitrix\Catalog\Price::OnAfterAdd", ["PriceTable", "updatePrices"] );
\Bitrix\Main\EventManager::getInstance()->addEventHandler("catalog", "\Bitrix\Catalog\Price::OnAfterUpdate", ["PriceTable", "updatePrices"] );


Получаю текущие установленные цены
$obPriceList = \Bitrix\Catalog\Model\Price::getList(array("filter" => array("PRODUCT_ID" => $arFields["PRODUCT_ID"])));
while($arPrice = $obPriceList->fetch())
        {
            $arItemPrices[$arPrice["CATALOG_GROUP_ID"]] = $arPrice;
        }


Получаю список типов цен через фильтр
$obPriceTypes = \Bitrix\Catalog\GroupTable::getList(array("filter" => array("%=NAME" => "Наценка +%"));


Прохожусь по нему циклом
while ( $arPriceType =  $obPriceTypes->fetch() )
{
if ( isset($arItemPrices[$arPriceType["ID"]]) && $arItemPrices[$arPriceType["ID"]] != 1 )
            {
                $result = \Bitrix\Catalog\Model\Price::update(
                  $arItemPrices[$arPriceType["ID"]]["ID"],
                  array(
                    "PRICE" => $price,
                    "PRICE_SCALE" => $price
                  )
                );
                ( $result->isSuccess() ? a2l($result->isSuccess(), "Price::update() " . __LINE__) : a2l($result->getErrorMessages(), 'Price::update Result') );
            } else {
                $result = \Bitrix\Catalog\Model\Price::add(
                  array(
                    "CATALOG_GROUP_ID" => $arPriceType["ID"],
                    "PRODUCT_ID" => $arFields["PRODUCT_ID"],
                    "PRICE" => $price,
                    "PRICE_SCALE" => $price,
                    "CURRENCY" => $arFields["CURRENCY"]
                  )
                );
                ( $result->isSuccess() ? a2l($result->isSuccess(), "Price::add() " . __LINE__) : a2l($result->getErrorMessages(), 'Price::update Result') );
            }
}

Но цена не устанавливается, хотя $result->isSuccess() возвращает 1.

Если этот же код просто выполнить на странице какой-нибудь, предварительно записав в $arFields нужный ID товара, то всё работает.

Почему?
  • Вопрос задан
  • 37 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы