Добрый день.
Сейчас пытаюсь сделать обработчик события, чтоб при создании нового заказа информация о нем записывалась в лог файл.
В файле bitrix/php_interface/init.php создаю обработчик события:
Далее создаю сам класс и в нем функцию:
Теперь подключаю модуль интернет-магазина (он нужен для получения сведений о товарах):
Теперь используя ID заказа получаю массив с данными о купленных товарах:
И вот тут возникает проблема. $dbOrders не получает массив полей с данными о товаре. Причем если вместо $id в массив $arFilter подставлять конкретные значения, то все срабатывает нормально, и данные о товарах записываются в массив $arOrders.
Пробовал писать (int) $id тоже не срабатывает.
При этом при записи в лог использую $id и значение записывается значит $id не пусто.
Помогите если кто знает что я делаю не так.
____________________________________________________________ _______________
Ошибка найдена.
Событие OnOrderAdd срабатывает до того как товарам в корзине будет присвоен идентификатор заказа. Поэтому при создании обьекта с данными о товарах он получается пустым.
Решение.
Использовал событие OnSaleComponentOrderComplete компонента bitrix:sale.order.full
Сейчас пытаюсь сделать обработчик события, чтоб при создании нового заказа информация о нем записывалась в лог файл.
В файле bitrix/php_interface/init.php создаю обработчик события:
| Код |
|---|
AddEventHandler("sale", "OnOrderAdd", array("orderAdd", "doFollowing"));
|
| Код |
|---|
class orderAdd {
function doFollowing($id, $arFields) {
|
| Код |
|---|
if (CModule::IncludeModule("sale")){
|
| Код |
|---|
$arSelectFields = array("PRICE", "CURRENCY", "QUANTITY", "NAME");
$dbOrders = CSaleBasket::GetList(array("NAME" => "ASC"), array("ORDER_ID" => $id), false, false, $arSelectFields);
while ($arOrder = $dbOrders->Fetch()) {
$arOrders [] = $arOrder;
}
|
Пробовал писать (int) $id тоже не срабатывает.
При этом при записи в лог использую $id и значение записывается значит $id не пусто.
Помогите если кто знает что я делаю не так.
____________________________________________________________
Ошибка найдена.
Событие OnOrderAdd срабатывает до того как товарам в корзине будет присвоен идентификатор заказа. Поэтому при создании обьекта с данными о товарах он получается пустым.
Решение.
Использовал событие OnSaleComponentOrderComplete компонента bitrix:sale.order.full