Здравствуйте.
Если у вас возникла необходимость настроить оповещения из битрикс о закончившемся товаре, то вам поможет этот скрипт.
Вам необходимо создать новое почтовое событие и почтовый шаблон для него.
В шаблоне используете переменные #PROD_NAME# и #PROD_ART# или любые другие на ваш выбор.
В этом примере используется только название и артикул товара, но вы можете использовать любые другие данные — вы можете найти их в массиве $ar_res или получить из базы.
В настройках инфоблока каталога создайте текстовое/числовое поле с символьным кодом, например, 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);
}
}
Не забудьте изменить ид и тип почтового события, а также имена переменных, если вы меняли их в почтовом шаблоне.
Удачи в борьбе с битриксом;)