CAllCrmInvoice::savePdf

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CAllCrmInvoice
  4. savePdf
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_invoice.php
  • Класс: \CAllCrmInvoice
  • Вызов: CAllCrmInvoice::savePdf
static function savePdf($invoice_id, &$error = null)
{
	$error = false;

	if (!CModule::IncludeModule('sale'))
	{
		$error = 'MODULE SALE NOT INCLUDED!';
		return false;
	}

	$invoice_id = (int) $invoice_id;
	if ($invoice_id <= 0)
	{
		$error = 'INVOICE_ID NOT DEFINED!';
		return false;
	}

	if (!\CCrmInvoice::checkReadPermission($invoice_id))
	{
		$error = 'PERMISSION DENIED!';
		return false;
	}

	$pdfContent = '';

	$dbOrder = Compatible\Helper::getList(
		array("ID"=>"DESC"),
		array("ID" => $invoice_id),
		false,
		false,
		array('*', 'UF_DEAL_ID', 'UF_QUOTE_ID', 'UF_COMPANY_ID', 'UF_CONTACT_ID', 'UF_MYCOMPANY_ID')
	);

	$arOrder = $dbOrder->GetNext();
	$paymentData = is_array($arOrder) ? CCrmInvoice::PrepareSalePaymentData($arOrder) : null;
	if(!$arOrder)
	{
		$error = 'COULD NOT FIND ORDER!';
		return false;
	}

	if ($arOrder["SUM_PAID"] <> '')
		$arOrder["PRICE"] -= $arOrder["SUM_PAID"];

	$service = \Bitrix\Sale\PaySystem\Manager::getObjectById($arOrder["PAY_SYSTEM_ID"]);
	if ($service !== null)
	{
		$psa = new CSalePaySystemAction();
		$psa->InitParamArrays(
			$arOrder,
			0,
			"",
			array(
				'REQUISITE' => is_array($paymentData['REQUISITE']) ? $paymentData['REQUISITE'] : null,
				'BANK_DETAIL' => is_array($paymentData['BANK_DETAIL']) ? $paymentData['BANK_DETAIL'] : null,
				'CRM_COMPANY' => is_array($paymentData['CRM_COMPANY']) ? $paymentData['CRM_COMPANY'] : null,
				'CRM_CONTACT' => is_array($paymentData['CRM_CONTACT']) ? $paymentData['CRM_CONTACT'] : null,
				'MC_REQUISITE' => is_array($paymentData['MC_REQUISITE']) ? $paymentData['MC_REQUISITE'] : null,
				'MC_BANK_DETAIL' => is_array($paymentData['MC_BANK_DETAIL']) ? $paymentData['MC_BANK_DETAIL'] : null,
				'CRM_MYCOMPANY' => is_array($paymentData['CRM_MYCOMPANY']) ? $paymentData['CRM_MYCOMPANY'] : null
			),
			array(),
			array(),
			REGISTRY_TYPE_CRM_INVOICE
		);
		unset($psa);

		\Bitrix\Sale\BusinessValue::redefineProviderField(
			array(
				'PROPERTY' => $paymentData['USER_FIELDS']
			)
		);

		$order = Invoice::load($invoice_id);
		if ($order)
		{
			$collection = $order->getPaymentCollection();
			if ($collection)
			{
				/** @var \Bitrix\Sale\Payment $payment */
				foreach ($collection as $payment)
				{
					if (!$payment->isInner() && $service->isAffordPdf())
					{
						$file = $service->getPdf($payment);
						if ($file !== null)
						{
							return $file['ID'];
						}
					}
				}

			}
		}
	}

	return false;
}

Добавить комментарий