• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/controller/order.php
  • Класс: BitrixSalesCenterControllerOrder
  • Вызов: Order::obtainShipmentFields
protected function obtainShipmentFields(array $data, array $basketItems)
{
	$result = [
		'ALLOW_DELIVERY' => 'Y',
		'RESPONSIBLE_ID' => $data['deliveryResponsibleId'] ?? 0,
		'IS_REALIZATION' => 'N',
	];

	if (!empty($data['deliveryId']))
	{
		$result['DELIVERY_ID'] = $data['deliveryId'];
	}
	else
	{
		$result['DELIVERY_ID'] = SaleDeliveryServicesEmptyDeliveryService::getEmptyDeliveryServiceId();
	}

	if (!empty($data['deliveryExtraServicesValues']))
	{
		$extraServices = [];

		foreach ($data['deliveryExtraServicesValues'] as $deliveryRelatedServiceValue)
		{
			$extraServices[$deliveryRelatedServiceValue['id']] = $deliveryRelatedServiceValue['value'];
		}

		$result['EXTRA_SERVICES'] = $extraServices;
	}

	if (
		isset($data['deliveryPrice'])
		&& isset($data['expectedDeliveryPrice'])
		&& $data['deliveryPrice'] !== $data['expectedDeliveryPrice']
	)
	{
		$result['CUSTOM_PRICE_DELIVERY'] = 'Y';
	}

	$result['PRICE_DELIVERY'] = (float)($data['deliveryPrice'] ?? 0);

	if (isset($data['shipmentPropValues']) && is_array($data['shipmentPropValues']))
	{
		$result['PROPERTIES'] = $this->obtainPropertiesFields($data['shipmentPropValues']);
	}

	$result['PRODUCT'] = [];

	foreach ($basketItems as $index => $item)
	{
		$result['PRODUCT'][] = [
			'BASKET_CODE' => $index,
			'QUANTITY' => $item['QUANTITY'],
			'AMOUNT' => $item['QUANTITY']
		];
	}

	return $result;
}