• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/controller/order.php
  • Класс: BitrixSalesCenterControllerOrder
  • Вызов: Order::refreshDeliveryAction
public function refreshDeliveryAction(
	array $basketItems = [],
	array $options = [],
	int $deliveryServiceId = 0,
	array $shipmentPropValues = [],
	array $deliveryRelatedServiceValues = [],
	int $deliveryResponsibleId = 0
)
{
	$basketItems = $this->processBasketItems($basketItems);

	$options['basketItems'] = $basketItems;
	$options['deliveryId'] = $deliveryServiceId;
	$options['deliveryExtraServicesValues'] = $deliveryRelatedServiceValues;
	$options['deliveryResponsibleId'] = $deliveryResponsibleId;
	$options['shipmentPropValues'] = $shipmentPropValues;

	$order = $this->buildOrder(
		$options,
		[
			'builderScenario' => SalescenterBuilderSettingsContainer::BUILDER_SCENARIO_SHIPMENT,
		]
	);
	$shipment = null;
	if ($order)
	{
		$shipment = $this->findNewShipment($order);
	}

	if (!$shipment)
	{
		if (!$this->getErrors())
		{
			$this->addError(new Error(Loc::getMessage('SALESCENTER_CONTROLLER_ORDER_BUILD_ERROR')));
		}

		return null;
	}

	$deliveryPriceResult = $shipment->calculateDelivery();
	if (!$deliveryPriceResult->isSuccess())
	{
		$this->addErrors($deliveryPriceResult->getErrors());
	}
	return [
		'deliveryPrice' => $deliveryPriceResult->getPrice(),
	];
}