Здравствуйте, у меня как раз вопрос около этой темы, поэтому не стану плодить сущность. Дело в том, что в последнее время наш оператор часто меняет статус заказа, то "В пути", то "Отправлен (Почта России)", то оказывается его вообще на складе нет (парадоксы случаются). А пользователи возмущаются, мол абсурдные письма приходят о смене статуса. Нужно придумать как это все дело разграничить, т.е. в одном случае менять статус с отправкой письма(уведомления), с другой, чтоб статус можно было менять без отправки письма. Вот товарищ, Алексей Волков, выше говорил про деактивацию шаблона письма в почтовом событии. Хотелось бы подробнее про это узнать. В файле init.php из предложенных событий, связанных с отправкой почтовых шаблонов нашел только это: ________________________________________________________________________________________ AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails" ;) ; function bxModifySaleMails($orderID, &$eventName, &$arFields) { $arOrder = CSaleOrder::GetByID($orderID);
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; } ________________________________________________________________________________________ Помогите придумать такое поведение обработчика, при котором если была нажата вторая кнопка (то бишь "Обновить статус без отправки письма" ;) , то все шаблоны писем деактивируются, т.е. произойдет смена статуса заказа без отправки почтового уведомления. Спасибо
Вот товарищ, Алексей Волков, выше говорил про деактивацию шаблона письма в почтовом событии. Хотелось бы подробнее про это узнать
я имел ввиду, что нужно создать новый статус /bitrix/admin/sale_status.php?lang=ru при его создании автоматом создастся почтовое событие тут /bitrix/admin/type_admin.php?lang=ru со своим шаблоном отправки письма - вот этот шаблон и деактивируете, тогда при переводе в этот статус(но только в этот) никакие письма отправляться не будут
я пользуюсь на сайте тем способом который предложил, создавать же новый функционал в модуле магазина на мой взгляд последнее дело, потому как это нужно будет делать копии файлов модуля и править их все, к тому же обновлять их сложно будет. проще создать пару статусов обозвав их так же только с припиской - без отправки письма. так что с переписыванием страниц я не подскажу вам. найдете решение отпишитесь тут, пригодится всем
Алексей Волков пишет: найдете решение отпишитесь тут, пригодится всем
Обновлять Битрикс больше не будем. Прямым запросом обновляю статус заказа и все. т.е. CSaleOrder::StatusOrder не используется а значит никакой обработчик не вызывается. Вот такой отчаянный шаг я пытался избежать, видимо не получилось