Задать вопрос
@mirbook

Почему не приходит состав заказа bitrix?

Добрый день, уважаемые знатоки! Я новичек сильно не пинайте.
В почту не приходит состав заказа, хотя в почтовых шаблонах есть #ORDER_LIST#.
Полчаса рылся и наткнулся на файл у себя в www/ajax/order/add.php
<?php
define('STOP_STATISTICS', true);
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');


CModule::IncludeModule('catalog');
CModule::IncludeModule('sale');


//регистрация пользователя
if ($USER->IsAuthorized()){
	$user = $USER->GetID();
}
else{
	$pass = crc32(time());
	$USER->Register($_REQUEST['email'], $_REQUEST['name'], "", $pass, $pass, $_REQUEST['email']);
	$user = $USER->GetID();
	$USER->Authorize($user);
	
	CEvent::Send("NEWREG", SITE_ID, array(
		"EMAIL" => $_REQUEST['email'],
		"LOGIN" => $_REQUEST['email'],
		"PASSWORD" => $pass,
	));
}

//Получение корзины
$fuser = CSaleBasket::GetBasketUserID();
$dbBaket = CSaleBasket::GetList(
   array("NAME" => "ASC"),
   array("FUSER_ID" => $fuser, "LID" => SITE_ID, "ORDER_ID" => "NULL")
);
$arItems = array();
while ($arBasket = $dbBaket->GetNext()){

   if ($arBasket["DELAY"]=="N" && $arBasket["CAN_BUY"]=="Y")
   {
	  $arBasket["PRICE_FORMATED"] = SaleFormatCurrency($arBasket["PRICE"], $arBasket["CURRENCY"]);
	  $tmp[$arBasket["ID"]] = $arBasket;
   }            
}

//Стоимость заказа
if (!empty($tmp) && CModule::IncludeModule("currency"))
{
   $baseCurrency = CCurrency::GetBaseCurrency();

   foreach ($tmp as $arBasketItem)
   {

	  if ($arBasketItem["CURRENCY"] != $baseCurrency)
		 $arBasket["PRICE"] = CCurrencyRates::ConvertCurrency($arBasketItem["PRICE"], $arBasketItem["CURRENCY"], $baseCurrency);

	  if ($arBasketItem["DISCOUNT_PRICE"] > 0)
		 $totalSumDiscount += $arBasketItem["QUANTITY"] * $arBasketItem["DISCOUNT_PRICE"];
	  else
		 $totalSumDiscount += $arBasketItem["QUANTITY"] * $arBasketItem["PRICE"];
   }
}


//Создание заказа
$arFields = array(
	"LID" => SITE_ID,
	"PERSON_TYPE_ID" => 1,
	"PAYED" => "N",
	"CANCELED" => "N",
	"STATUS_ID" => "N",
	"PRICE" => $totalSumDiscount,
	"CURRENCY" => "RUB",
	"USER_ID" => $user,
	"PAY_SYSTEM_ID" => 1,
	"DELIVERY_ID" => 1,
	"USER_DESCRIPTION" => $_REQUEST['comment']
);

$id = CSaleOrder::Add($arFields);
CSaleBasket::OrderBasket($id, $fuser, SITE_ID);

//свойства заказа
$props = [
	'1' => 'name',
	'2' => 'company',
	'3' => 'phone',
	'4' => 'email',
	'5' => 'address',
];

for ($i = 1; $i < 6; $i++){
	$arFields = array(
		"ORDER_ID" => $id,
		"NAME" => 'Имя',
		"ORDER_PROPS_ID" => $i,
		"VALUE" => $_REQUEST[$props[$i]]
	);
	CSaleOrderPropsValue::Add($arFields);
}

//E-mail для оповещений
$res = CSite::GetList($by="sort", $order="desc", array('ACTIVE'=>'Y'));
if($arSite = $res->Fetch()){
	$defaultEmail = $arSite['EMAIL'];
}

//оповещения для покупателя
CEvent::Send("SALE_NEW_ORDER", SITE_ID, array(
	"ORDER_ID" => $id,
	"ORDER_DATE" => FormatDate('j F Y', time()),
	"ORDER_USER" => htmlspecialchars($_REQUEST['name']),
	"PRICE" => $totalSumDiscount,
	"EMAIL" => $_REQUEST['email'],
	"SALE_EMAIL" => $defaultEmail,
	"SITE_NAME" => '',
	"SERVER_NAME" => '',
));


//оповещения для администрации
CEvent::Send("NEWORDER", SITE_ID, array(
	"ORDER_ID" => $id,
	"ORDER_DATE" => FormatDate('j F Y', time()),
	"NAME" => htmlspecialchars($_REQUEST['name']),
	"COMPANY" => htmlspecialchars($_REQUEST['company']),
	"PRICE" => $totalSumDiscount,
	"EMAIL" => $_REQUEST['email'],
	"SALE_EMAIL" => $defaultEmail,
	"PHONE" => htmlspecialchars($_REQUEST['phone']),
	"ADDRESS" => htmlspecialchars($_REQUEST['address']),
	"COMMENT" => htmlspecialchars($_REQUEST['comment']),
));

?>


Почтовый шаблон:

Пользователь оставил новый заказ на сайте

Номер заказа: #ORDER_ID#

Дата: #ORDER_DATE#

Имя: #NAME#

Компания: #COMPANY#

Телефон: #PHONE#

E-mail: #EMAIL#

Адрес: #ADDRESS#

Комментарий: #COMMENT#

Состав заказа: #ORDER_LIST#

Как я понял все поля почтовых шаблонов у меня берутся из него. Вопрос как надо изменить файлик, так чтоб приходил состав заказа?)
  • Вопрос задан
  • 2247 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
OlegMifle
@OlegMifle
php-программист
Чем не угодил стандартный компонент?
Тебе нужно в 3й параметр CEvent::Send передать ключ #ORDER_LIST# со значением html таблицы списка товаров в заказе.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы