Перевел агентов на крон как написано в этой статьи
Запустил на хостинге в крон скрипт cron_events.php
Создал агент периодичный агент
В файле init.php прописал такой код
сообщения приходят нормально - крон работает
Но стоит доработать обработчик,добавив события обработки результата после оформления заказа,то сообщения не приходят
И крон не работает=(
Помогите разобраться где я накосипорил(((
Запустил на хостинге в крон скрипт cron_events.php
Создал агент периодичный агент
В файле init.php прописал такой код
| Код |
|---|
<?
function testAgent()
{
mail('stankevich.alexandr-js@yandex.ru', 'Агент', 'Агент');
return "testAgent();";
}
?>
|
сообщения приходят нормально - крон работает
Но стоит доработать обработчик,добавив события обработки результата после оформления заказа,то сообщения не приходят
И крон не работает=(
| Код |
|---|
<?
function testAgent()
{
mail('stankevich.alexandr-js@yandex.ru', 'Агент', 'Агент');
return "testAgent();";
}
//Обработчик,который занист информацию в таблицу обмена
AddEventHandler("sale", "OnSaleComponentOrderOneStepFinal", "APMSavedOrder");
function APMSavedOrder($ID, $arOrder, $arParams)
{
/***********
$arOrder['ID'] - ID заказа
$arOrder['ACCOUNT_NUMBER'] - Номер заказа
$arOrder['PAY_SYSTEM_ID'] - ID платежной системы
$arOrder['PAYED'] - Оплачен ли заказ
$arOrder['DATE_PAYED'] - Дата оплаты
$arOrder['USER_ID'] - ID пользователя сделавшего заказ
$arOrder['STATUS_ID'] - ID статуса заказа
$arOrder['PRICE'] - Стоимость
$arOrder['PRICE_DELIVERY'] - Стоимость доставки
$arOrder['CURRENCY'] - Валюта
$arOrder['DISCOUNT_VALUE'] - Стоимость дискотной скидки
$arOrder['USER_DESCRIPTION'] - Комментарии
$arOrder['CANCELED'] - Отменен ли заказ?
************/
global $DB;
// Выведем количество товаров в заказе
$arOrderItems = array();
$dbOrder = CSaleBasket::GetList(Array("ID"=>"ASC"),
Array( "ORDER_ID"=>$arOrder['ID']));
while ($arItems = $dbOrder->GetNext())
{
CSaleBasket::UpdatePrice($arItems["ID"],
$arItems["NAME"],
$arItems["MODULE"],
$arItems["PRODUCT_ID"],
$arItems["QUANTITY"]);
$arItems = CSaleBasket::GetByID($arItems["ID"]);
$arOrderItems[] = $arItems;
$ProductId[] = $arItems["PRODUCT_ID"];
}
//Выведем свойства товаров в заказе
$arOrderProps = array();
$arSelect = Array("ID","NAME","PROPERTY_TOV_KOD","PROPERTY_XSIZE","PROPERTY_ROST","PROPERTY_ROST","PROPERTY_BARCOD1");
$arFilter = Array("IBLOCK_ID"=>9,"ID"=>$ProductId);
$res = CIBlockElement::GetList(Array(), $arFilter,
false, Array("nPageSize"=>50), $arSelect);
while($ob = $res->GetNext())
{
$arOrderProps[] = $ob;
}
//Занесем данные о заказе в таблицу exchange
foreach($arOrderItems as $arItems){
/***********
$arItems['ORDER_ID'] - Номер заказа
$arItems['PRODUCT_ID'] - Номер товара в битриксе
$arItems['PRICE'] - Стоимость товара
$arItems['CURRENCY'] - Валюта
$arItems['QUANTITY'] - Количество
$arItems['DETAIL_PAGE_URL'] - Детальная страница товара в битриксе
$arItems['DISCOUNT_PRICE'] - Стоимость дисконт. скидки
$arItems['DISCOUNT_COUPON'] - Дисконтный купон
************/
$quantity_items[] = $arItems['QUANTITY'];//количество
//
if($arItems['QUANTITY']>1){
for($i=0;$i<$arItems['QUANTITY'];$i++){
$results1 = $DB->Query("INS ERT INTO `exchange`(`id`, `order_id`,`id_bitrix`, `quantity`, `size`, `rost`, `tov_kod`, `barcod`, `price`,`discount_value`, `status_id`) VALUES (NULL,'{$arOrder['ACCOUNT_NUMBER']}','{$arItems['PRODUCT_ID']}',1,'','','','','{$arItems['PRICE']}','','1')");
}
}
else{
$results1 = $DB->Query("INS ERT IN TO `exchange`(`id`, `order_id`,`id_bitrix`, `quantity`, `size`, `rost`, `tov_kod`, `barcod`, `price`,`discount_value`, `status_id`) VALUES (NULL,'{$arOrder['ACCOUNT_NUMBER']}','{$arItems['PRODUCT_ID']}','{$arItems['QUANTITY']}','','','','','{$arItems['PRICE']}','','1')");
}
}
//Занесем свойства товаров из заказа в таблицу exchange
foreach($arOrderProps as $arProps){
/***********
$arProps['PROPERTY_TOV_KOD_VALUE'] - Артикул
$arProps['PROPERTY_BARCOD1_VALUE'] - Штрих-код
$arProps['PROPERTY_XSIZE_VALUE'] - Размер
$arProps['PROPERTY_ROST_VALUE'] - Рост
$arProps['PROPERTY_SHOP_QTY_LIST_VALUE'] - Остаток в магазине
$arProps['ID'] - Номер товара в битриксе
************/
//Найдем величину скидки
$price[] = GetCatalogProductPrice($arProps['ID'], 1);//Обычная цена
$ar_price_max[] = GetCatalogProductPrice($arProps['ID'], 2);//Максимальная цена
$discount_value = [];//Величина скидки
foreach($ar_price_max as $key => $val) {
$discount_value[$key]['DISCOUNT_VALUE'] = (int)$val['PRICE'] - @(int)$price[$key]['PRICE'];
$discount_value[$key]['PRODUCT_ID'] = $val['PRODUCT_ID'];
}
$results2 = $DB->Query("UPD ATE `exchange` SE T `discount_value`='{$discount_value}',`size`='{$arProps['PROPERTY_XSIZE_VALUE']}',`rost`='{$arProps['PROPERTY_ROST_VALUE']}',`tov_kod`='{$arProps['PROPERTY_TOV_KOD_VALUE']}',`barcod`='{$arProps['PROPERTY_BARCOD1_VALUE']}' WHERE `id_bitrix`='{$arProps['ID']}' AND `order_id` = '{$arOrder['ACCOUNT_NUMBER']}'");
}
$total_quantity = array_sum($quantity_items);
//Запишем данные о новом заказе
$res = $DB->Query("INS ERT IN TO `new_orders`(`id`, `order_id`, `date_insert`,`status_id`, `user_id`, `payed`, `order_price`, `price_delivery`, `currency`,`total_quantity`,`comments`, `canceled`, `complete_order`) VALUES (NULL,'{$arOrder['ACCOUNT_NUMBER']}','{$arOrder['DATE_INSERT']}','{$arOrder['STATUS_ID']}','{$arOrder['USER_ID']}','{$arOrder['PAYED']}','{$arOrder['PRICE']}','{$arOrder['PRICE_DELIVERY']}','{$arOrder['CURRENCY']}','{$total_quantity}','{$arOrder['USER_DESCRIPTION']}','{$arOrder['CANCELED']}','N')");
//Запишем значения скидки
foreach($discount_value as $disc_v){
$results21 = $DB->Query("UPDATE `exchange` SE T `discount_value`='{$disc_v['DISCOUNT_VALUE']}' WHERE `id_bitrix`='{$disc_v['PRODUCT_ID']}' AND `order_id` = '{$arOrder['ACCOUNT_NUMBER']}'");
}
/*echo "<pre>";
print_r($discount_value);
echo "</pre>";*/
//die();
}
?>
|
Помогите разобраться где я накосипорил(((