CCrmInvoiceRecurringRestProxy::innerAdd

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmInvoiceRecurringRestProxy
  4. innerAdd
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/restservice.php
  • Класс: \CCrmInvoiceRecurringRestProxy
  • Вызов: CCrmInvoiceRecurringRestProxy::innerAdd
protected function innerAdd(&$fields, &$errors, array $params = null)
{
	$ID = null;
	$invoiceId = (int)$fields['INVOICE_ID'];
	if ($invoiceId <= 0)
	{
		$errors[] = 'Invoice ID is empty.';
		return false;
	}
	if(
		!CCrmInvoice::CheckUpdatePermission($invoiceId, CCrmPerms::GetCurrentUserPermissions())
		|| !CCrmInvoice::CheckCreatePermission(CCrmPerms::GetCurrentUserPermissions())
	)
	{
		$errors[] = 'Access denied.';
		return false;
	}

	try
	{
		if (
			$fields['IS_LIMIT'] !== \Bitrix\Crm\Recurring\Entity\Invoice::LIMITED_BY_TIMES
			&& $fields['IS_LIMIT'] !== \Bitrix\Crm\Recurring\Entity\Invoice::LIMITED_BY_DATE
		)
		{
			$fields['IS_LIMIT'] = \Bitrix\Crm\Recurring\Entity\Invoice::NO_LIMITED;
		}
		if (!empty($fields['PARAMS']) && is_array($fields['PARAMS']))
		{
			$fields['PARAMS'] = $this->prepareParams($fields);
		}
		else
		{
			$fields['PARAMS'] = [];
		}
		if(!empty($fields['START_DATE']))
		{
			$fields['START_DATE'] = new \Bitrix\Main\Type\Date($fields['START_DATE']);
		}
		if(!empty($fields['LIMIT_DATE']))
		{
			$fields['LIMIT_DATE'] = new \Bitrix\Main\Type\Date($fields['LIMIT_DATE']);
		}
		$newRecurringFields = $fields;

		$invoiceRecurringInstance = \Bitrix\Crm\Recurring\Entity\Invoice::getInstance();
		$invoiceFields = \CCrmInvoice::GetByID($invoiceId, false);
		if ($invoiceFields['IS_RECURRING'] === 'Y')
		{
			$recurringRawSearch = $invoiceRecurringInstance->getList([
				'filter' => ['INVOICE_ID' => $invoiceId],
				'limit' => 1
			]);
			if ($recurringRawSearch->fetch())
			{
				$errors[] = 'Invoice already have had recurring settings.';
				return false;
			}

			$result = $invoiceRecurringInstance->add($newRecurringFields);
			if ($result->isSuccess())
			{
				$ID = $result->getId();
			}
		}
		else
		{
			unset($newRecurringFields['INVOICE_ID']);
			$invoiceFields['PRODUCT_ROWS'] = \CCrmInvoice::GetProductRows($invoiceId);
			$invoiceFields['INVOICE_PROPERTIES'] = \CCrmInvoice::GetProperties($invoiceId, $invoiceFields['PERSON_TYPE_ID']);
			$result = $invoiceRecurringInstance->createEntity($invoiceFields, $newRecurringFields);
			if ($result->isSuccess())
			{
				$data = $result->getData();
				$ID = $data['ID'];
			}
		}

		if (!$result->isSuccess())
		{
			$errors = $result->getErrorMessages();
			return false;
		}

		return $ID;
	}
	catch(Main\SystemException $ex)
	{
		$errors[] = $ex->getMessage();
		return false;
	}
}

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