- Модуль: salescenter
- Путь к файлу: ~/bitrix/modules/salescenter/lib/controller/order.php
- Класс: BitrixSalesCenterControllerOrder
- Вызов: Order::getCompatibleDeliverySystemsAction
public function getCompatibleDeliverySystemsAction(
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)
{
$shipmentCollection = $order->getShipmentCollection()->getNotSystemItems();
foreach ($shipmentCollection as $shipment)
{
break;
}
}
$availableServices = [];
$activeServices = DeliveryServicesManager::getActiveList();
foreach ($activeServices as $service)
{
$isCompatible = false;
$compatibleExtraServiceIds = null;
if (is_null($shipment))
{
$isCompatible = true;
}
else
{
$serviceObject = DeliveryServicesManager::getObjectById($service['ID']);
if ($serviceObject && $serviceObject->isCompatible($shipment))
{
$isCompatible = true;
$compatibleExtraServiceIds = $serviceObject->getCompatibleExtraServiceIds($shipment);
}
}
if ($isCompatible)
{
$availableServices[$service['ID']] = $compatibleExtraServiceIds;
}
}
return [
'availableServices' => $availableServices
];
}