- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/delivery/requests/manager.php
- Класс: BitrixSaleDeliveryRequestsManager
- Вызов: Manager::updateDeliveryRequest
static function updateDeliveryRequest($requestId, array $fields, bool $overwriteProperties = false): Result
{
$result = new Result();
if (empty($requestId))
{
$result->addError(new MainError(Loc::getMessage('SALE_DLVR_REQ_MNGR_ERROR_REQ_ID')));
return $result;
}
if (isset($fields['EXTERNAL_PROPERTIES']) && !is_array($fields['EXTERNAL_PROPERTIES']))
{
unset($fields['EXTERNAL_PROPERTIES']);
}
if (
$overwriteProperties === false
&& isset($fields['EXTERNAL_PROPERTIES'])
&& ($existingRequestFields = RequestTable::getById($requestId)->fetch())
)
{
$existingProperties = array_column(
is_null($existingRequestFields['EXTERNAL_PROPERTIES'])
? []
: $existingRequestFields['EXTERNAL_PROPERTIES'],
null,
'NAME'
);
$newProperties = array_column(
$fields['EXTERNAL_PROPERTIES'],
null,
'NAME'
);
$fields['EXTERNAL_PROPERTIES'] = array_values(array_merge($existingProperties, $newProperties));
}
$updateResult = RequestTable::update(
$requestId,
array_intersect_key(
$fields,
array_flip([
'STATUS',
'EXTERNAL_STATUS',
'EXTERNAL_STATUS_SEMANTIC',
'EXTERNAL_PROPERTIES',
])
)
);
if (!$updateResult->isSuccess())
{
$result->addErrors($updateResult->getErrors());
}
(new MainEvent(
'sale',
self::REQUEST_UPDATED_EVENT_CODE,
[
'REQUEST_ID' => $requestId,
'FIELDS' => $fields,
'RESULT' => $result,
]
))->send();
if ($result->isSuccess() && Loader::includeModule('pull'))
{
CPullWatch::AddToStack(
'SALE_DELIVERY_REQUEST',
[
'module_id' => 'sale',
'command' => 'onDeliveryRequestUpdate',
'params' => [
'ID' => $requestId,
]
]
);
}
return $result;
}