- Модуль: 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;
}