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