Здравствуйте, у меня как раз вопрос около этой темы, поэтому не стану плодить сущность. Дело в том, что в последнее время наш оператор часто меняет статус заказа, то "В пути", то "Отправлен (Почта России)", то оказывается его вообще на складе нет (парадоксы случаются). А пользователи возмущаются, мол абсурдные письма приходят о смене статуса. Нужно придумать как это все дело разграничить, т.е. в одном случае менять статус с отправкой письма(уведомления), с другой, чтоб статус можно было менять без отправки письма.
Вот товарищ, Алексей Волков, выше говорил про деактивацию шаблона письма в почтовом событии. Хотелось бы подробнее про это узнать. В файле init.php из предложенных нашел только это:
____________________________________________________________ ____________________________
AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails" ;) ;
function bxModifySaleMails($orderID, &$eventName, &$arFields)
{
$arOrder = CSaleOrder::GetByID($orderID);
//-- получаем телефоны и адрес
$order_props = CSaleOrderPropsValue::GetOrderProps($orderID);
$phone="";
$index = "";
$country_name = "";
$city_name = "";
$address = "";
while ($arProps = $order_props->Fetch()){
if ($arProps["CODE"] == "PHONE" ){
$phone = htmlspecialchars($arProps["VALUE"] );
}
if ($arProps["CODE"] == "LOCATION" ){
$arLocs = CSaleLocation::GetByID($arProps["VALUE"] );
$country_name = $arLocs["COUNTRY_NAME_ORIG"];
$city_name = $arLocs["CITY_NAME_ORIG"];
}
if ($arProps["CODE"] == "INDEX" ){
$index = $arProps["VALUE"];
}
if ($arProps["CODE"] == "ADDRESS" ){
$address = $arProps["VALUE"];
}
}
$full_address = $index." ".$country_name."-".$city_name." ".$address;
//-- получаем название службы доставки
$arDeliv = CSaleDelivery::GetByID($arOrder["DELIVERY_ID"] );
$delivery_name = "";
if ($arDeliv){
$delivery_name = $arDeliv["NAME"];
}
//-- получаем название платежной системы
$arPaySystem = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"]);
$pay_system_name = "";
if ($arPaySystem){
$pay_system_name = $arPaySystem["NAME"];
}
//-- добавляем новые поля в массив результатов
$arFields["ORDER_DESCRIPTION"] = $arOrder["USER_DESCRIPTION"];
$arFields["PHONE"] = $phone;
$arFields["DELIVERY_NAME"] = $delivery_name;
$arFields["PAY_SYSTEM_NAME"] = $pay_system_name;
$arFields["FULL_ADDRESS"] = $full_address;
}
____________________________________________________________ ____________________________
Помогите придумать такое поведение обработчика, при котором если была нажата вторая кнопка (то бишь "Обновить статус без отправки письма" ;) , то все шаблоны писем деактивируются, т.е. произойдет смена статуса заказа без отправки почтового уведомления. Спасибо
Вот товарищ, Алексей Волков, выше говорил про деактивацию шаблона письма в почтовом событии. Хотелось бы подробнее про это узнать. В файле init.php из предложенных нашел только это:
AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails" ;) ;
function bxModifySaleMails($orderID, &$eventName, &$arFields)
{
$arOrder = CSaleOrder::GetByID($orderID);
//-- получаем телефоны и адрес
$order_props = CSaleOrderPropsValue::GetOrderProps($orderID);
$phone="";
$index = "";
$country_name = "";
$city_name = "";
$address = "";
while ($arProps = $order_props->Fetch()){
if ($arProps["CODE"] == "PHONE" ){
$phone = htmlspecialchars($arProps["VALUE"] );
}
if ($arProps["CODE"] == "LOCATION" ){
$arLocs = CSaleLocation::GetByID($arProps["VALUE"] );
$country_name = $arLocs["COUNTRY_NAME_ORIG"];
$city_name = $arLocs["CITY_NAME_ORIG"];
}
if ($arProps["CODE"] == "INDEX" ){
$index = $arProps["VALUE"];
}
if ($arProps["CODE"] == "ADDRESS" ){
$address = $arProps["VALUE"];
}
}
$full_address = $index." ".$country_name."-".$city_name." ".$address;
//-- получаем название службы доставки
$arDeliv = CSaleDelivery::GetByID($arOrder["DELIVERY_ID"] );
$delivery_name = "";
if ($arDeliv){
$delivery_name = $arDeliv["NAME"];
}
//-- получаем название платежной системы
$arPaySystem = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"]);
$pay_system_name = "";
if ($arPaySystem){
$pay_system_name = $arPaySystem["NAME"];
}
//-- добавляем новые поля в массив результатов
$arFields["ORDER_DESCRIPTION"] = $arOrder["USER_DESCRIPTION"];
$arFields["PHONE"] = $phone;
$arFields["DELIVERY_NAME"] = $delivery_name;
$arFields["PAY_SYSTEM_NAME"] = $pay_system_name;
$arFields["FULL_ADDRESS"] = $full_address;
}
Помогите придумать такое поведение обработчика, при котором если была нажата вторая кнопка (то бишь "Обновить статус без отправки письма" ;) , то все шаблоны писем деактивируются, т.е. произойдет смена статуса заказа без отправки почтового уведомления. Спасибо
