[spoiler]
В данном примере опишу функционал отправки счетов в формате pdf, который мы создавали для заказчиков выписок из ЕГРЮЛ на сайте-магазине
В этом магазине используется кастомизированный компонент создания заказа, сделанный на основе компонента bitrix:sale.basket.order.ajax - объединенный компонент корзины и формы заказа.
Добавим в данный компонент условие: если покупатель выбрал платежную систему "Безналичный расчет" (в данном примере, ID этой платежной системы = 9), то создадим pdf-файл счета и приложим его к письму-уведомлению о заказе. Находим в компоненте строку "if($bSend)" и заменяем блок этого условия на следующий код:
if($bSend) { $event = new CEvent; if($PAYSYSTEM_ID == 9) { ob_start(); $_REQUEST["ORDER_ID"] = $ORDER_ID; $_REQUEST["pdf"] = 'Y'; $APPLICATION->IncludeComponent("bitrix:sale.order.payment", "", Array()); $pdf_content=ob_get_contents(); ob_clean(); $fid = CFile::SaveFile(array( 'name' => 'bill_'.$ORDER_ID.'.pdf', 'size' => strlen($pdf_content), 'type' => 'application/pdf', 'MODULE_ID' => 'sale', 'content' => $pdf_content, ), 'bills' ); $event->Send($eventName, SITE_ID, $arFields, "N", "", array($fid)); } else { $event->Send($eventName, SITE_ID, $arFields, "N"); } } |
В целом, этот способ гораздо проще