• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/controller/orderentity.php
  • Класс: Bitrix\Crm\Controller\OrderEntity
  • Вызов: OrderEntity::addAction
public function addAction(array $fields): ?array
{
	$r = new Result();

	$res = $this->existsByFilter([
		'OWNER_TYPE_ID'=>$fields['OWNER_TYPE_ID'],
		'OWNER_ID'=>$fields['OWNER_ID'],
		'ORDER_ID'=>$fields['ORDER_ID']
	]);

	if($res->isSuccess() == false)
	{
		/** @var Order $order */
		$order = $this->loadOrder($fields['ORDER_ID']);

		if($this->setEntityBinding($order, $fields['OWNER_ID'], $fields['OWNER_TYPE_ID'])
			->isSuccess())
		{
			$r = $order->save();
		}
		else
		{
			$r->addError(new Error('setEntityBinding error', 201650000010));
		}
	}
	else
	{
		$r->addError(new Error('Duplicate entry for key [ownerId, ownerTypeId, orderId]', 201650000001));
	}

	if(!$r->isSuccess())
	{
		$this->addErrors($r->getErrors());
		return null;
	}
	else
	{
		$registry = Registry::getInstance(Registry::REGISTRY_TYPE_ORDER);
		/** @var EntityBinding $entityBindingClassName */
		$entityBindingClassName = $registry->get(ENTITY_CRM_ORDER_ENTITY_BINDING);

		return [
			'DEAL_ORDER'=>
				$entityBindingClassName::getList([
					'filter'=>[
						'OWNER_TYPE_ID'=>$fields['OWNER_TYPE_ID'],
						'OWNER_ID'=>$fields['OWNER_ID'],
						'ORDER_ID'=>$fields['ORDER_ID']
					]
				])->fetchAll()[0]
		];
	}
}