- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/delivery/tracking/manager.php
- Класс: BitrixSaleDeliveryTrackingManager
- Вызов: Manager::processStatusesByDelivery
protected function processStatusesByDelivery($deliveryId, $shipmentsData)
{
$result = new Result();
$trackingObject = $this->getTrackingObjectByDeliveryId($deliveryId);
if($trackingObject)
{
$statusResults = $trackingObject->getStatusesShipment($shipmentsData);
$eventsParams = array();
/** @var StatusResult $statusResult */
foreach($statusResults as $number => $statusResult)
{
$eventParams = null;
if(empty($shipmentsData[$number]))
continue;
if(!$statusResult->isSuccess())
{
$eventLog = new CEventLog;
$eventLog->Add(array(
"SEVERITY" => CEventLog::SEVERITY_ERROR,
"AUDIT_TYPE_ID" => 'SALE_DELIVERY_TRACKING_STATUS_RESULT',
"MODULE_ID" => "sale",
"ITEM_ID" => $shipmentsData[$number]['SHIPMENT_ID'],
"DESCRIPTION" => implode('n', $statusResult->getErrorMessages())
));
continue;
}
if(($statusResult->status != $shipmentsData[$number]['TRACKING_STATUS']))
{
$eventParams = new StatusChangeEventParam();
$eventParams->orderId = $shipmentsData[$number]['ORDER_ID'];
$eventParams->shipmentId = $shipmentsData[$number]['SHIPMENT_ID'];
$eventParams->status = $statusResult->status;
$eventParams->trackingNumber = $number;
$eventParams->description = $statusResult->description;
$eventParams->lastChangeTimestamp = $statusResult->lastChangeTimestamp;
$eventParams->deliveryId = $deliveryId;
$eventsParams[] = $eventParams;
}
$res = $this->updateShipment(
$shipmentsData[$number]['SHIPMENT_ID'],
$statusResult
);
if(!$res->isSuccess())
{
$eventLog = new CEventLog;
$eventLog->Add(array(
"SEVERITY" => CEventLog::SEVERITY_ERROR,
"AUDIT_TYPE_ID" => 'SALE_DELIVERY_TRACKING_UPDATE_SHIPMENT',
"MODULE_ID" => "sale",
"ITEM_ID" => $shipmentsData[$number]['SHIPMENT_ID'],
"DESCRIPTION" => implode('n', $res->getErrorMessages())
));
}
}
$result->setData($eventsParams);
}
return $result;
}