• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/compatible/ordercompatibility.php
  • Класс: BitrixSaleCompatibleOrderCompatibility
  • Вызов: OrderCompatibility::createShipmentFromRequest
static function createShipmentFromRequest(SaleShipmentCollection $shipmentCollection, $deliveryId, array $requestFields)
{

	$shipment = null;

	if (intval($deliveryId) > 0 && $service = SaleDeliveryServicesManager::getObjectById($deliveryId))
	{

		$shipment = $shipmentCollection->createItem($service);

		if ($service->isProfile())
			$serviceName = $service->getNameWithParent();
		else
			$serviceName = $service->getName();
		$shipment->setField('DELIVERY_NAME', $serviceName);


		if (isset($requestFields['DELIVERY_PRICE']) && floatval($requestFields['DELIVERY_PRICE']) > 0)
		{
			$basePriceDelivery = $requestFields['DELIVERY_PRICE'];
			$priceDelivery = $requestFields['PRICE_DELIVERY'];

			if (!empty($requestFields['PRICE_DELIVERY_DIFF']))
			{
				$basePriceDelivery = $priceDelivery + floatval($requestFields['PRICE_DELIVERY_DIFF']);
			}

			$shipment->setFieldNoDemand('BASE_PRICE_DELIVERY', $basePriceDelivery);
			$shipment->setFieldNoDemand('CURRENCY', $requestFields['CURRENCY']);

			$shipment->setFieldNoDemand('PRICE_DELIVERY', $priceDelivery);

			if (isset($requestFields['PRICE_DELIVERY']) && $requestFields['PRICE_DELIVERY'] < $requestFields['DELIVERY_PRICE'])
				$shipment->setFieldNoDemand('PRICE_DELIVERY', $requestFields['PRICE_DELIVERY']);
		}
		elseif (array_key_exists("PRICE_DELIVERY", $requestFields) && floatval($requestFields['PRICE_DELIVERY']) >= 0)
		{
			$shipment->setFieldNoDemand('PRICE_DELIVERY', floatval($requestFields['PRICE_DELIVERY']));
			$shipment->setFieldNoDemand('BASE_PRICE_DELIVERY', floatval($requestFields['PRICE_DELIVERY']));
			$shipment->setFieldNoDemand('CURRENCY', $requestFields['CURRENCY']);
			$shipment->setFieldNoDemand('CUSTOM_PRICE_DELIVERY', "Y");
		}
	}

	return $shipment;
}