Битрикс как присылать оповещения о закончившемся товаре

Продолжаем разбирать события в bitrix api. В этот раз присылаем почтовое событие если количество товара равно нолю.

Как прислать сообщение о товаре который закончился в битриксе

В этот раз будем использовать менее популярный метод CCatalogProduct::GetByIDEx.

Перед началом создайте почтовое событие в админке с 2 переменными #PROD_NAME# и #PROD_ART#. В них будем передавать название и артикул. В своем каталоге создайте свойство с количеством – OLD_QUANT.

Подготовительный этап закончен, теперь займемся файлом /bitrix/php_interface/init.php:

AddEventHandler("catalog", "OnProductUpdate", "notInStore");
function notInStore($ID,$Fields){
    //получаем данные товара по ID
    $ar_res = CCatalogProduct::GetByIDEx($ID);
    $upd = false;
    $old = $ar_res['PROPERTIES']['OLD_QUANT']['VALUE'];
    //при необходимости обновляем количество
    if($Fields['QUANTITY'] != $old){
        $upd = CIBlockElement::SetPropertyValuesEx(
            $ID,
            $Fields['IBLOCK_ID'],
            array('OLD_QUANT' => $Fields['QUANTITY'])
        );
    }//если количество не изменилось выходим
    else{
        return;
    }
    //если товара 0, а в прошлый раз он был
    //отправляем письмо
    //эта проверка нужна, чтобы не слать ложные письма
    //например, при изменении цены товара которого нет на складе
    if($Fields['QUANTITY'] == 0 && $old != 0){

        $TYPE_MAIL_EVENT = 'PRODUCT_ENDED';
        $arMail = array(
            // Наименование - #PROD_NAME#
            'PROD_NAME' => $ar_res['NAME'],
            // Артикул - #PROD_ART#
            'PROD_ART' => $ar_res['PROPERTIES']['ARTNUMBER']['VALUE'],
        );
        $ID_MAIL_EVENT = 25;
        $ok = CEvent::Send($TYPE_MAIL_EVENT,"s1", $arMail, $ID_MAIL_EVENT);
    }
}

PRODUCT_ENDED – тип почтового события.
$ID_MAIL_EVENT – идентификатор почтового шаблона по которому будет отправлено письмо.

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь