[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");
}
} |
В целом, этот способ гораздо проще .