Эта тема выдается поисковиком, когда ищешь подобное решение, я выложу свой вариант ( вдруг кто то будет искать решение - поймет в какую сторону двигаться)
В файле local/php_interface/init.php обрабатывал событие нового заказа (почтовое событие, в письме должно приходить описание, картинка товара , цена )
У меня на сайте мультирегиональность и только самовывоз, потому - надо было выводить в письме адрес склада +
Надо было сделать так , что б именно на этот склад приходил email с уведомлением о новом заказе. Я достал почту ( занесенную в поле email в настройке склада магазин>склад>нужный склад) занес ее в #EMAIL2# и вставил ее в шаблоне SALE_NEW_FOLDER в адрес копии письма. (прикрепил скрин для наглядности)
Код |
---|
AddEventHandler('sale', 'OnOrderNewSendEmail', array('CSendOrderTable', 'OnOrderNewSendEmailHandler'));
class CSendOrderTable {
public static function OnOrderNewSendEmailHandler($ID, &$eventName, &$arFields) {
if ($ID>0 && CModule::IncludeModule('iblock')) {
$arFields['ORDER_LIST'] = '<table cellpadding="5" cellspacing="5"><tr><td><span>Товар</span></td><td><span></span></td><td><span>цена</span></td><td><span>кол-во</span></td><td><span>сумма</span></td></tr>';
$rsBasket = CSaleBasket::GetList(array(), array('ORDER_ID' => $ID));
while ($arBasket = $rsBasket->GetNext()) {
$arPicture = false;
//мы берем картинку только если это товар из инфоблока
if ($arBasket['MODULE'] == 'catalog') {
if ($arProduct = CIBlockElement::GetByID($arBasket['PRODUCT_ID'])->Fetch()) {
if ($arProduct['PREVIEW_PICTURE'] > 0) {
$fileID = $arProduct['PREVIEW_PICTURE'];
} elseif ($arProduct['DETAIL_PICTURE'] > 0) {
$fileID = $arProduct['DETAIL_PICTURE'];
} else {
$fileID = 0;
}
$arPicture = CFile::ResizeImageGet($fileID, array('width' => 90, 'height' => 110));
$arPicture['SIZE'] = getimagesize($_SERVER['DOCUMENT_ROOT'].$arPicture['src']);
}
}
$arFields['ORDER_LIST'] .= '<tr valign="top">'
. '<td>'.($arPicture ? '<img src="http://'.$GLOBALS['SERVER_NAME'].(str_replace(array('+', ' '), '%20', $arPicture['src'])).'" width="'.$arPicture['SIZE'][0].'" height="'.$arPicture['SIZE'][1].'" alt="">' : '').'</td>'
. '<td>'.$arBasket['NAME'].'</td>'
. '<td style="white-space: nowrap">'.SaleFormatCurrency($arBasket['PRICE'], $arBasket['CURRENCY']).'</td>'
. '<td style="white-space: nowrap">'.(int)$arBasket['QUANTITY'].' шт.</td>'
. '<td style="white-space: nowrap">'.round((int)$arBasket['PRICE'] * (int)$arBasket['QUANTITY'], 2).'</td>'
. '</tr>';
}
$arFields['ORDER_LIST'] .= '</table>';
}
/** находим склад самовывоза **/
$arStore = [];
$order = \Bitrix\Sale\Order::load($ID);
$shipments = $order->getShipmentCollection();
foreach ($shipments as $shipment) {
if (!$shipment->isSystem()) {
$storeId = $shipment->getStoreId();
if ($storeId > 0) {
$dbList = \CCatalogStore::GetList(
array("ID" => "DESC"),
array("ID" => $storeId),
false,
false,
array( "ADDRESS", "DESCRIPTION", "EMAIL")
);
if ($store = $dbList->Fetch()) {
$arStore = $store;
}
}
}
}
$arFields['ADDRESS'] = $arStore['ADDRESS'];
$arFields['EMAIL2'] = $arStore['EMAIL'];
/** тут беру информацию о номере тел. и др. (вдруг др. другим понадобится понадобится ) **/
$dbSalesOrderProps = CSaleOrderPropsValue::GetOrderProps($ID);
while ($arSaleOrderProps = $dbSalesOrderProps->Fetch()){
if($arSaleOrderProps['CODE']=='TIME_DELIVERY_TEXT'){
//Объявление переменной для письма
$arFields['DELIVERY_DESCRIPTION'] = $arSaleOrderProps['VALUE'];
} elseif($arSaleOrderProps['CODE']=='PHONE'){
$arFields['PHONE'] = $arSaleOrderProps['VALUE'];
} elseif($arSaleOrderProps['CODE']=='LOCATION'){
$arFields['LOCATION'] = $arSaleOrderProps['VALUE'];
}
}
}
} |