Для сохранения ПДФ счета в файл написал такую функцию:
Код |
---|
function getOrderBillPdf($orderId,$pdfPath){
$payment = null;
if(($order = \Bitrix\Sale\Order::load($orderId))
&& ($paymentCollection = $order->getPaymentCollection())
){
foreach($paymentCollection as $p)
if(!$p->isInner()){
$payment = $p;
break;
}
}
if($payment
&& ($service = \Bitrix\Sale\PaySystem\Manager::getObjectById($payment->getPaymentSystemId()))
&& $service->isAffordPdf()
){
$context = \Bitrix\Main\Application::getInstance()->getContext();
$_REQUEST['pdf'] =
$_REQUEST['GET_CONTENT'] = 'Y';
if(($res = $service->initiatePay($payment,$context->getRequest(),\Bitrix\Sale\PaySystem\BaseServiceHandler::STRING))
&& $res->isSuccess()
){
return file_put_contents($pdfPath,$res->getTemplate());
}
}
} |
При вызове функции передаем айди заказа и путь куда надо сохранить PDF-файл
По сути это почти копия файла
/bitrix/modules/sale/ru/payment/bill/payment.php
то же самое можно сделать так
:Код |
---|
function getOrderBillPdf($orderId,$pdfPath){
$GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ID"] = $orderId;
$_REQUEST['pdf'] =
$_REQUEST['GET_CONTENT'] = 'Y';
$str = include($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/sale/ru/payment/bill/payment.php');
if($str)
return file_put_contents($pdfPath,$str);
}
|