Last active
July 11, 2018 14:47
-
-
Save madcatgith/6544cfd52c9ee22a7aac4b191d1831b2 to your computer and use it in GitHub Desktop.
Красивое письмо нового заказа Bitrix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
----------------------------------------------------Доступные поля---------------------------------------------------------------------- | |
Доступные поля: | |
#ORDER_ID# - код заказа | |
#ORDER_DATE# - дата заказа | |
#ORDER_USER# - заказчик | |
#PRICE# - сумма заказа | |
#EMAIL# - E-Mail заказчика | |
#BCC# - E-Mail скрытой копии | |
#ORDER_LIST# - состав заказа | |
#SALE_EMAIL# - E-Mail отдела продаж | |
#ORDER_PUBLIC_URL# - ссылка для просмотра заказа без авторизации (требуется настройка в модуле интернет-магазина) | |
#COUPON# - Код купона | |
#COUPON_ID# - ID купона | |
#DEFAULT_EMAIL_FROM# - E-Mail адрес по умолчанию (устанавливается в настройках) | |
#SITE_NAME# - Название сайта (устанавливается в настройках) | |
#SERVER_NAME# - URL сервера (устанавливается в настройках) | |
----------------------------------------------------Пример письма----------------------------------------------------------------------- | |
<style> | |
body | |
{ | |
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; | |
font-size: 12px; | |
color: #000; | |
} | |
</style> <br> | |
<table cellpadding="0" cellspacing="0" width="100%" style="background-color: #d1d1d1; border-radius: 2px; border:1px solid #d1d1d1; margin: 0 auto;" border="1" bordercolor="#d1d1d1"> | |
<tbody> | |
<tr> | |
<td height="73" width="100%" bgcolor="#fff" style="border: none; padding-top: 23px; padding-right: 17px; padding-bottom: 24px; padding-left: 17px;"> | |
<table cellpadding="0" cellspacing="0" width="100%"> | |
<tbody> | |
<tr> | |
<td bgcolor="#ffffff" height="45" style="font-weight: bold; text-align: center; font-size: 16px; color: #0b3961;"> | |
Благодарим Вас за заказ в нашем магазине. | |
</td> | |
</tr> | |
<tr> | |
<td bgcolor="#ffffff" height="45" style="font-weight: bold; text-align: center; font-size: 16px; color: #0b3961;"> | |
Ваш заказ #ORDER_ID# от #ORDER_DATE# принят в обработку | |
</td> | |
</tr> | |
<tr> | |
<td bgcolor="#bad3df" height="11"> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
</td> | |
</tr> | |
<tr> | |
<td width="100%" bgcolor="#f7f7f7" valign="top" style="border: none; padding-top: 0; padding-right: 44px; padding-bottom: 16px; padding-left: 44px;"> | |
<p style="margin-top:30px; margin-bottom: 28px; font-weight: bold; font-size: 19px;"> | |
</p> | |
<p style="margin-top: 0; margin-bottom: 20px; line-height: 20px;"> | |
<b><u>Данный документ не является основанием для оплаты.</u></b> Пожалуйста, ожидайте звонка оператора для подтверждения заказа. Счет на оплату будет выслан Вам после согласования заказа менеджером. | |
</p> | |
<b>Данные заказа:</b> | |
<hr> | |
#ORDER_PROPS# <br> | |
<br> | |
#COMMENT#<br> | |
<hr> | |
#PAY_SYSTEM#<br> | |
#DELIVERY#<br> | |
В заказе был применен купон <b>#COUPON#</b><br> | |
<hr> | |
<b><b>Состав заказа:</b><br> | |
#ORDER_LIST#<br> | |
<br> | |
<b>Итоговая стоимость заказа: #PRICE# руб. с НДС.</b><br> | |
<br> | |
<hr> | |
Для того, чтобы аннулировать заказ, воспользуйтесь функцией отмены заказа, которая доступна в Вашем персональном разделе сайта #SITE_NAME#.<br> | |
<br> | |
Пожалуйста, при обращении к администрации сайта #SITE_NAME# ОБЯЗАТЕЛЬНО указывайте номер Вашего заказа - #ORDER_ID#.<br> | |
<br> | |
Спасибо за покупку!<br> | |
<p> | |
</p> | |
</b> | |
</td> | |
</tr> | |
<tr> | |
<td height="40px" width="100%" bgcolor="#f7f7f7" valign="top" style="border: none; padding-top: 0; padding-right: 44px; padding-bottom: 30px; padding-left: 44px;"> | |
<p style="border-top: 1px solid #d1d1d1; margin-bottom: 5px; margin-top: 0; padding-top: 20px; line-height:21px;"> | |
С уважением,<br> | |
администрация <a href="http://#SERVER_NAME#" style="color:#2e6eb6;">Интернет-магазина</a><br> | |
E-mail: <a href="mailto:#SALE_EMAIL#" style="color:#2e6eb6;">#SALE_EMAIL#</a> | |
</p> | |
</td> | |
</tr> | |
</tbody> | |
</table> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
AddEventHandler('main', 'OnBeforeEventSend', Array("beforeCEvent", "my_OnBeforeEventSend")); | |
class beforeCEvent | |
{ | |
function getDelivery($id){ | |
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); | |
CModule::IncludeModule("sale"); | |
if ($arDeliv = CSaleDelivery::GetByID($id)) | |
{ | |
return $arDeliv["NAME"]; | |
} | |
} | |
function getPaysystem($id){ | |
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); | |
CModule::IncludeModule("sale"); | |
if ($arPaySys = CSalePaySystem::GetByID($id)) | |
{ | |
return $arPaySys["PSA_NAME"]; | |
} | |
} | |
function getOrderParams($orderID){ | |
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); | |
CModule::IncludeModule("sale"); | |
$arResult = CSaleOrder::GetByID($orderID); | |
return $arResult; | |
} | |
function getOrderProps($orderID){ | |
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); | |
CModule::IncludeModule("sale"); | |
$db_props = CSaleOrderPropsValue::GetOrderProps($orderID); | |
while ($arProps = $db_props->Fetch()){ | |
$arResult[] = $arProps; | |
} | |
return $arResult; | |
} | |
function getOrder($orderID){ | |
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); | |
CModule::IncludeModule("sale"); | |
$dbBasketItems = CSaleBasket::GetList(array(), array("ORDER_ID" => $orderID), false, false, array("ID", "NAME", "PRODUCT_ID", "QUANTITY", "PRICE", "CURRENCY")); | |
while ($arItems = $dbBasketItems->Fetch()) | |
{ | |
$arBasketItems['ITEMS'][] = $arItems; | |
$arBasketItems['IDS'][] = $arItems['PRODUCT_ID']; | |
} | |
return $arBasketItems; | |
} | |
function getItems($ids){ | |
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); | |
CModule::IncludeModule("iblock"); | |
$arSelect = Array('IBLOCK_ID', 'ID', 'NAME', 'PROPERTY_CML2_ARTICLE', 'PROPERTY_CML2_LINK'); | |
$arFilter = Array('IBLOCK_ID' => array(27, 60), 'ID' => $ids); | |
$res = CIBlockElement::GetList(Array('PROPERTY_CML2_ARTICLE' => 'ASC'), $arFilter, false, false, $arSelect); | |
while($ob = $res->GetNextElement()) | |
{ | |
$arFields = $ob->GetFields(); | |
$arResult['ITEMS'][$arFields['ID']] = $arFields; | |
$arResult['IDS'][] = $arFields['PROPERTY_CML2_LINK_VALUE']; | |
} | |
return $arResult; | |
} | |
function my_OnBeforeEventSend(&$arFields, $arTemplate) | |
{ | |
if($arTemplate['ID'] == 94){ | |
$arBasketItems = self::getOrder($arFields['ORDER_REAL_ID']); | |
$arResult = self::getItems($arBasketItems['IDS']); | |
$arResult_SKU = self::getItems($arResult['IDS']); | |
$orderProps = self::getOrderProps($arFields['ORDER_REAL_ID']); | |
$order = self::getOrderParams($arFields['ORDER_REAL_ID']); | |
if($order['USER_DESCRIPTION']){ | |
$arFields['COMMENT'] = '<b>Комментарий:</b> '.$order['USER_DESCRIPTION']; | |
} else { | |
$arFields['COMMENT'] = ''; | |
} | |
$paysystem = self::getPaysystem($order['PAY_SYSTEM_ID']); | |
if(!empty($paysystem)){ | |
$arFields['PAY_SYSTEM'] = '<b>Способ оплаты:</b> '.$paysystem; | |
} else { | |
$arFields['PAY_SYSTEM'] = ''; | |
} | |
$delivery = self::getDelivery($order['DELIVERY_ID']); | |
if(!empty($delivery)){ | |
$arFields['DELIVERY'] = '<b>Способ доставки:</b> '.$delivery; | |
} else { | |
$arFields['DELIVERY'] = ''; | |
} | |
foreach($orderProps as $prop){ | |
if(!empty($prop['VALUE'])){ | |
if($prop['CODE'] == 'LOCATION'){ | |
$arLocs = CSaleLocation::GetByID($prop['VALUE']); | |
$propsString .= '<strong>'.$prop['NAME'].':</strong> '.$arLocs['COUNTRY_NAME'].' '.$arLocs['REGION_NAME'].' '.$arLocs['CITY_NAME'].'<br>'; | |
} else { | |
$propsString .= '<strong>'.$prop['NAME'].':</strong> '.$prop['VALUE'].'<br>'; | |
} | |
} | |
} | |
$arFields['ORDER_PROPS'] = $propsString; | |
$table = '<table border="1" bordercolor="black" cellpadding="0" cellspacing="0"><thead><tr>'; | |
$table .= '<td style="padding: 5px;">№</td>'; | |
$table .= '<td style="padding: 5px;">Артикул</td>'; | |
$table .= '<td style="padding: 5px;">Наименование</td>'; | |
$table .= '<td style="padding: 5px;">Кол-во</td>'; | |
$table .= '<td style="padding: 5px;">Цена c НДС, руб</td>'; | |
$table .= '<td style="padding: 5px;">Сумма c НДС, руб</td>'; | |
$table .= '</tr></thead><tbody>'; | |
foreach($arBasketItems['ITEMS'] as $key => $arItem){ | |
$price = $arItem['PRICE']; | |
$q = $arItem['QUANTITY']; | |
$curr = $arItem['CURRENCY']; | |
if($arResult['ITEMS'][$arItem['PRODUCT_ID']]['PROPERTY_CML2_LINK_VALUE']){ | |
$art = $arResult_SKU['ITEMS'][$arResult['ITEMS'][$arItem['PRODUCT_ID']]['PROPERTY_CML2_LINK_VALUE']]['PROPERTY_CML2_ARTICLE_VALUE']; | |
} else { | |
$art = $arResult['ITEMS'][$arItem['PRODUCT_ID']]['PROPERTY_CML2_ARTICLE_VALUE']; | |
} | |
$table .= '<tr>'; | |
$table .= '<td style="padding: 5px;">'.($key+1).'.</td>'; | |
$table .= '<td style="padding: 5px;">'.$art.'</td>'; | |
$table .= '<td style="padding: 5px;">'.$arItem['NAME'].'</td>'; | |
$table .= '<td style="padding: 5px;">'.$q.'</td>'; | |
$table .= '<td style="padding: 5px;">'.CCurrencyLang::CurrencyFormat($price, 'BYN').'</td>'; | |
$table .= '<td style="padding: 5px;">'.CCurrencyLang::CurrencyFormat($price*$q, 'BYN').'</td>'; | |
$table .= '</tr>'; | |
} | |
$table .= '</tbody>'; | |
$table .= '</table>'; | |
$arFields['ORDER_LIST'] = $table; | |
} | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment