Необходимо сделать отдельную кнопку сохранения изменений в заказе, по умолчанию есть только одна кнопка сохранить она вместе с изменениями в заказе сохраняет еще и статус заказа, даже если статус заказа не изменяли все равно его пересохраняет и изза этого повторно отправляются письма уведомления клиентам, вот поэтому нужна отдельная кнопка в редактировании заказа для увеличения или уменьшения добавления или исключения товаров, а для изменения статуса нужна отдельная кнопка сохранения, находил ссылку на урок создания собственной формы редактирования, но там нет необходимого мне
Я постоянно на форуме, так что как напишите я сразу отвечу →
зачем такие трудности, просто сделайте новый статус(например, заказ проверяется менеджером) без отправки письма(в почтовом событии этого статуса деактивировать шаблон письма) и делайте в этом статусе все что хотите с заказом.
Давайте начнет с того, что такое поведение говорит о проблемах с установкой или ее кастомизации, редактирование заказа не влияет на отправку писем, письмо отправляется 1 раз. дальнейшие действия с заказом, его сохранение, изменение товара, не инициирует отправку повторного письма по уже установленным статусам и без их изменения.
Если кастомизации не было, обратитесь в техническую поддержку, такое поведение не верное.
Алексей Волков пишет: вообще-то это кнопка для быстрого сохранения изменений статуса, а не заказа и зачем вы на нее нажимаете если статус вас устраивает?
Другой кнопки для сохранения изменений в заказе нету, изменения заключаются в добавлении или исключении товаров, увеличения или уменьшения колличества товаров, при таких изменениях мне не нужно чтобы заново отсылалось уведомление
Я постоянно на форуме, так что как напишите я сразу отвечу →
страница которую вы приводите в пример предназначена для просмотра и мелкого исправления, на ней нет добавления товаров ... для изменения заказа есть кнопка изменить заказ - вот на ней и делаются изменения в составе и прочем.
Вы путаете два вида страниц, для разных целей, в вашем случае это страница просмотра заказа, в которой как раз таки меняются статусы и естественно при смене статуса отправляется письмо о новом статусе.
Но на этой странице нет редактирование товара, добавления и удаления.
А вот на странице редактирования заказа, все как раз ок, там есть кнопка сохранить, которая там и нужны и там все меняется прекрасно, а если внизу пристегнуть кнопку, то она еще и показываться будет когда вы вверх поднимаетесь.
А ведь прямо перед глазами кнопка "Изменить заказ"! Если возникают такие вопросы даже при работе с админкой, не лучше ли прочитать документацию?(вопрос риторический)
Здравствуйте, у меня как раз вопрос около этой темы, поэтому не стану плодить сущность. Дело в том, что в последнее время наш оператор часто меняет статус заказа, то "В пути", то "Отправлен (Почта России)", то оказывается его вообще на складе нет (парадоксы случаются). А пользователи возмущаются, мол абсурдные письма приходят о смене статуса. Нужно придумать как это все дело разграничить, т.е. в одном случае менять статус с отправкой письма(уведомления), с другой, чтоб статус можно было менять без отправки письма. Вот товарищ, Алексей Волков, выше говорил про деактивацию шаблона письма в почтовом событии. Хотелось бы подробнее про это узнать. В файле 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 не используется а значит никакой обработчик не вызывается. Вот такой отчаянный шаг я пытался избежать, видимо не получилось