• Модуль: 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;
}