- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/recurring/mail.php
- Класс: Bitrix\Crm\Recurring\Mail
- Вызов: Mail::getPdfAttachment
static function getPdfAttachment($invoiceId)
{
if (!Loader::includeModule('sale'))
{
return false;
}
$siteId = '';
$invoice = Invoice::load($invoiceId);
if (!$invoice)
{
return false;
}
$paymentCollection = $invoice->getPaymentCollection();
/** @var \Bitrix\Sale\Payment $payment */
$payment = $paymentCollection->current();
$paySystem = $payment->getPaymentSystemId();
$action = new \CSalePaySystemAction();
$dbRes = Invoice::getList(
array(
'select' => array('*', 'UF_DEAL_ID', 'UF_QUOTE_ID', 'UF_COMPANY_ID', 'UF_CONTACT_ID', 'UF_MYCOMPANY_ID'),
'filter' => array('ID' => $invoiceId)
)
);
if ($data = $dbRes->fetch())
{
$paymentData = is_array($data) ? \CCrmInvoice::PrepareSalePaymentData($data, array('PUBLIC_LINK_MODE' => 'Y')) : null;
$action->InitParamArrays($data, $invoiceId, '', $paymentData, array(), array(), REGISTRY_TYPE_CRM_INVOICE);
$siteId = $data['LID'];
if (!empty($paymentData['USER_FIELDS']))
{
BusinessValue::redefineProviderField([
'PROPERTY' => $paymentData['USER_FIELDS']
]);
}
}
$service = PaySystem\Manager::getObjectById($paySystem);
if ($service && $service->isAffordPdf())
{
$file = $service->getPdf($payment);
if ($file === null)
{
if ($service->isAffordDocumentGeneratePdf()
&& !$service->isPdfGenerated($payment)
)
{
$service->registerCallbackOnGenerate(
$payment,
[
'CALLBACK_CLASS' => '\Bitrix\Crm\Recurring\Mail',
'CALLBACK_METHOD' => 'send',
'MODULE_ID' => 'crm',
]
);
return true;
}
return false;
}
$storageTypeId = StorageType::getDefaultTypeID();
return StorageManager::saveEmailAttachment($file, $storageTypeId, $siteId);
}
return false;
}