| Цитата | ||
|---|---|---|
| Алексей Майдокин написал: Юрий Шубин, если у вас получится с component_epilog.php, расскажите об этом. А я расскажу, как у нас получилось с событиями. Я лишь руководил процессом, а код писал другой человек, поэтому в нем могут быть неточности. Мы перепробовали кучу событий модуля sale и со всеми были проблемы: то они не вызываются в нужном компоненте, то они вызываются слишком рано. В итоге, я вспомнил, что мы тут пытаемся почту обработать, поэтому мы обратились к событию 'OnBeforeEventAdd', которое вызывается перед отправкой почты. Дельше все просто. Пишем обработчик события:
. |
Можно еще вот так:
| Код |
|---|
function sendOrderMessage(&$event, &$lid, &$arFields)
{
// Новый заказ -> добавляем номер телефона
if ($event == "SALE_NEW_ORDER")
{
$orderId = $arFields['ORDER_ID'];
$arOrder = CSaleOrder::GetByID($orderId);
$arFields['USER_DESCRIPTION'] = $arOrder['USER_DESCRIPTION']; //комментарий покупателя
$delivery = CSaleDelivery::GetByID($arOrder['DELIVERY_ID']);
$arFields['DELIVERY_NAME'] = $delivery['NAME']; //служба доставки
$paySystem = CSalePaySystem::GetByID($arOrder['PAY_SYSTEM_ID']);
$arFields['PAY_SYSTEM_NAME'] = $paySystem['NAME']; //способ оплаты
//телефон, заберу заказ в, адрес
$result = CSaleOrderPropsValue::GetList(array(), array('ORDER_ID' => $orderId, '@CODE' => array("PHONE", "COLL_DATE", "ADDRESS")));
while ($arSales = $result->Fetch())
{
$arFields[$arSales['CODE']] = $arSales['VALUE'];
}
}
}
|