- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/controller/action/entity/saveorderaction.php
- Класс: BitrixSaleControllerActionEntitySaveOrderAction
- Вызов: SaveOrderAction::saveOrder
private function saveOrder(array $fields)
{
$result = new SaleResult();
$resultData = [];
$prepareOrderResult = $this->prepareOrder($fields);
if ($prepareOrderResult->isSuccess())
{
$getOrderData = $prepareOrderResult->getData();
/** @var SaleOrder $order */
$order = $getOrderData['order'];
$setUserResult = $this->setUser($order, $fields);
if ($setUserResult->isSuccess())
{
$resultData['USER'] = $setUserResult->getData();
}
else
{
$this->fillErrorCollection(
$result,
$setUserResult->getErrors(),
SaleControllerErrorEnumeration::SAVE_ORDER_ACTION_SET_USER
);
return $result;
}
$userProfileData = $fields['USER_PROFILE'] ?? null;
$setProfileResult = $this->setProfile($order, $userProfileData);
if (!$setProfileResult->isSuccess())
{
$this->fillErrorCollection(
$result,
$setProfileResult->getErrors(),
SaleControllerErrorEnumeration::SAVE_ORDER_ACTION_SET_PROFILE
);
return $result;
}
$doFinalActionsResult = $this->doFinalActions($order);
if (!$doFinalActionsResult->isSuccess())
{
$this->fillErrorCollection(
$result,
$doFinalActionsResult->getErrors(),
SaleControllerErrorEnumeration::SAVE_ORDER_ACTION_FINAL_ACTIONS
);
return $result;
}
$saveResult = $order->save();
if (!$saveResult->isSuccess())
{
$this->fillErrorCollection(
$result,
$saveResult->getErrors(),
SaleControllerErrorEnumeration::SAVE_ORDER_ACTION_SAVE
);
return $result;
}
if (
MainLoader::includeModule('crm')
&& class_exists(CrmIntegrationCompilationManager::class)
)
{
if (isset($this->compilationDealId))
{
Manager::copyOrderProductsToDeal($order, $this->compilationDealId);
}
CrmIntegrationCompilationManager::sendOrderBoundEvent($order);
CrmIntegrationCompilationManager::sendToCompilationDealTimeline($order);
}
$resultData['ORDER'] = $order;
$result->setData($resultData);
}
else
{
$result->addErrors($prepareOrderResult->getErrors());
}
return $result;
}