Спасибо!
Дмитрий, я так ведь и делаю
Передаю в фильтр номер заказа и получаю массив корзин.
+1. Переписал на работу с массивом. Работает также.
Вот так выглядит конечный код:
Т.е. при создании заказа, отправляю на почту информацию по номеру и товарное наполнение. Самое интересное, что а) на тестовой инсталляции это работает, б) на боевой инсталляции строки не приходят, ID и статус приходит - строки нет... На боевой инсталляции, если использовать OnSaleStatusOrder, то строки приходят...
| Цитата |
|---|
|
Дмитрий Шкуркин пишет: Вы всегда можете получить позиции заказа зная ID заказа... т.е. если это обновление заказа (статуса например) то врядли вам будут переданы параметры о товарах там содержащихся. |
Передаю в фильтр номер заказа и получаю массив корзин.| Цитата |
|---|
| Dmitry Sirotin пишет: В данном цикле лишний вызов GetByID. По идее в $ar_baskets уже содержатся параметры позиции в корзине. |
Вот так выглядит конечный код:
| Код |
|---|
//событие по изменению заказа
AddEventHandler("sale", "OnOrderAdd", "onOrderCreateHandler");
function onOrderCreateHandler($ID, $arFields){
//временные переменные
$result = "Внимание, был создан заказ:\n\n";
//получить сущность заказа по ID
$arOrder = CSaleOrder::GetByID($ID);
//переменные заказа
$result .= "НОМЕР ЗАКАЗА:\t".$ID."; СТАТУС ЗАКАЗА:\t".$arFields['STATUS_ID']."\n";
//список корзин
$filteredBaskets = CSaleBasket::GetList(array('ID' => 'DESC'), array("ORDER_ID" => $ID));
while ($basket = $filteredBaskets->Fetch())
{
$result .= $basket["PRODUCT_ID"]." - ".$basket["NAME"]." - ".$basket["PRICE"]." - ".$basket["QUANTITY"]."\n";
}
sendEmail("----" , $result);
}
|