ResultEntity::addInvoice

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. ResultEntity
  4. addInvoice
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/resultentity.php
  • Класс: Bitrix\Crm\WebForm\ResultEntity
  • Вызов: ResultEntity::addInvoice
protected function addInvoice($params = [])
{
	if (Manager::isOrdersAvailable())
	{
		$this->addOrder();
		return;
	}

	if(!isset($params['FIELDS']))
	{
		$params['FIELDS'] = [];
	}

	$personTypes = \CCrmPaySystem::getPersonTypeIDs();
	$currentPersonTypeId = (int)$personTypes['CONTACT'];

	$isPersonTypeSet = false;
	if($this->companyId && $this->isInvoiceSettingsPayerCompany())
	{
		$isPersonTypeSet = true;
		$currentPersonTypeId = (int)$personTypes['COMPANY'];
		$params['FIELDS']['PERSON_TYPE_ID'] = $currentPersonTypeId;
		$params['FIELDS']['UF_COMPANY_ID'] = $this->companyId;
		$params['FIELDS']['INVOICE_PROPERTIES'] = array('COMPANY' => '-');
	}

	if($this->contactId && $this->isInvoiceSettingsPayerContact())
	{
		$isPersonTypeSet = true;
		$params['FIELDS']['UF_CONTACT_ID'] = $this->contactId;
		if(!$params['FIELDS']['PERSON_TYPE_ID'])
		{
			$currentPersonTypeId = (int)$personTypes['CONTACT'];
			$params['FIELDS']['PERSON_TYPE_ID'] = $currentPersonTypeId;
		}
		$params['FIELDS']['INVOICE_PROPERTIES'] = array('CONTACT' => '-');
	}

	if($this->dealId)
	{
		$params['FIELDS']['UF_DEAL_ID'] = $this->dealId;
	}
	if($this->quoteId)
	{
		$params['FIELDS']['UF_QUOTE_ID'] = $this->quoteId;
	}

	if(!$isPersonTypeSet)
	{
		return;
	}


	$billList = \CCrmPaySystem::GetPaySystemsListItems($currentPersonTypeId);
	if ($billList)
	{
		foreach ($billList as $billId => $billName)
		{
			$params['FIELDS']['PAY_SYSTEM_ID'] = $billId;
			break;
		}
	}
	else
	{
		if (Loader::includeModule('sale'))
		{
			$dbRes = \Bitrix\Sale\PaySystem\Manager::getList([
				'filter' => [
					'=PERSON_TYPE_ID' => $currentPersonTypeId,
					'=ENTITY_REGISTRY_TYPE' => REGISTRY_TYPE_CRM_INVOICE,
					'%ACTION_FILE' => ['bill', 'invoicedocument']
				]
			]);

			while ($data = $dbRes->fetch())
			{
				$params['FIELDS']['PAY_SYSTEM_ID'] = $data['ID'];
				break;
			}
		}
	}

	$params['SET_PRODUCTS'] = true;
	$this->invoiceId = $this->addByEntityName(\CCrmOwnerType::InvoiceName, $params);
}

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