Продолжаем разбирать события в 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 – идентификатор почтового шаблона по которому будет отправлено письмо.