@userberg

Bitrix Обнуление остатков при активном свойстве. как?

Подскажите куда копать, полный 0.
раньше при установке свойства (снят с продажи) происходил сброс остатков товара, поле доступное кол-во.
товар оставался висеть на сайте, но заказать было нельзя.
После очередного обновления (к сожалению понятия не имею какого) данная обработка перестала срабатывать.
В файле init.php нашел функцию которая отвечала за это.
AddEventHandler("catalog", "OnBeforeProductAdd", "OnBeforeProductAddUpdateHandler");
AddEventHandler("catalog", "OnBeforeProductUpdate", "OnBeforeProductAddUpdateHandler");

function OnBeforeProductAddUpdateHandler(&$arFields)
{
    $ID = $arFields['ID'];

    //Обнуляем остатки и запрещаем продавать в минус при активном свойстве "Снят с продажи"
    if (CModule::IncludeModule("iblock")) {

        $rsElement = CIBlockElement::GetByID($ID);
        if ($obElement = $rsElement->GetNextElement()) {

            $arElement = $obElement->GetFields();
            $arElement["PROPERTIES"] = $obElement->GetProperties();

            if (intval($arElement["IBLOCK_ID"]) === 30) {

                if (!empty($arElement["PROPERTIES"]["NOT_FOR_SALE"]["VALUE"])) {
                    $arFields["QUANTITY"] == 0;
                    $arFields["CAN_BUY_ZERO"] == "N";
                } else {
                    $arFields["CAN_BUY_ZERO"] == "D";
                }
            }
        }
    }
}


нужен именно сброс остатков, просто вывести кнопку при активном свойстве не подходит.
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ответы на вопрос 1
@anton99zel
29а класс средней школы №7
Cmodule::IncludeModule('catalog');
 $el = new CIBlockElement;
if (!empty($arElement["PROPERTIES"]["NOT_FOR_SALE"]["VALUE"])) {
            $arFields = array("QUANTITY" => 0, "CAN_BUY_ZERO"=> "N");
            CCatalogProduct::Update($ID, $arFields);
                } else {
            $arFields = array("CAN_BUY_ZERO"=> "D");
            CCatalogProduct::Update($ID, $arFields);
                }

Еще надо обратить внимание на NOT_FOR_SALE - его на пустоту проверять или на значение, потому что свойство может быть чекбоксом, числом, строкой....как у вас?
И, возможно, в настройках модуля "Торговый каталог" нужно включить поддержку устаревших событии
Ответ написан
Ваш ответ на вопрос

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

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