Задать вопрос
@Hfnas

Почему не работают события при обновлении количества OnProductUpdate, OnBeforeProductUpdate?

AddEventHandler('catalog', 'OnProductUpdate', ['MyClass', 'OnProductUpdateHandler']);
class MyClass
{
    function OnProductUpdateHandler($id, &$arFields)
    {
         $arLoadProductArray = $arFields['QUANTITY'] > 0 ? Array("IN_STOCK" => "Y") : Array("IN_STOCK" => "N");
    }
}
AddEventHandler("catalog", "OnBeforeProductUpdate", "notInStore");
function notInStore($ID,&$arFields){
        if (($arFields['QUANTITY'] != $arFields['OLD_QUANTITY']) || (!is_null($arFields['QUANTITY']) && is_null($arFields['OLD_QUANTITY']))) {
            if (intval($arFields["QUANTITY"]) > 100) {
                $arFields["QUANTITY"] = 100;
            }
        }
}


Меняю Доступное количеств в инфоблоке.

А также есть ли такое событие, чтобы при нескольких складах , считал только тот склад который обновился?
$eventManager->addEventHandler('catalog','OnStoreProductAdd', 'UpdateAvailableQuantity');
$eventManager->addEventHandler('catalog','OnStoreProductUpdate', 'UpdateAvailableQuantity');
$eventManager->addEventHandler('catalog','OnStoreProductDelete', 'DeletesAvailableQuantity');

use  \Bitrix\Main\Loader;
Loader::includeModule('catalog');
function UpdateAvailableQuantity($id, $arFields){
    $obProduct = new CCatalogProduct();
    if (intval($arFields["AMOUNT"])>=100){
        $obProduct->Update($arFields["PRODUCT_ID"], ['QUANTITY' => 100, 'SUBSCRIBE' => 'D']);
    }else{
        if ($arFields["AMOUNT"]==0)
            $obProduct->Update($arFields["PRODUCT_ID"], ['QUANTITY' => 0, 'SUBSCRIBE' => 'D']);
        else
            $obProduct->Update($arFields["PRODUCT_ID"], ['QUANTITY' => $arFields["AMOUNT"], 'SUBSCRIBE' => 'D']);
    }
}

Проходит 2 раза, так как 2 склада, и это плохо.
  • Вопрос задан
  • 2935 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
@Hfnas Автор вопроса
Это устаревшие события, надо в настройках модуля "Торговый каталог" включить поддержку устаревших событии
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы