- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/helpers/admin/blocks/ordershipment.php
- Класс: BitrixSaleHelpersAdminBlocksOrderShipment
- Вызов: OrderShipment::prepareData
static function prepareData($error = false, $needRecalculate = true)
{
global $USER, $APPLICATION;
static $users = array();
static $userCompanyList = array();
$result = array();
if ($error)
{
$fields = self::$defaultFields;
}
else
{
$fields = self::$shipment->getFieldValues();
$fields['DELIVERY_STORE_ID'] = self::$shipment->getStoreId();
$fields["EXTRA_SERVICES"] = self::$shipment->getExtraServices();
$fields["STORE"] = self::$shipment->getStoreId();
}
/** @var BitrixSaleOrder $order */
$order = self::$shipment->getCollection()->getOrder();
$saleModulePermissions = $APPLICATION->GetGroupRight("sale");
if($saleModulePermissions == "P")
{
if (empty($userCompanyList))
{
$userCompanyList = CompanyManager::getUserCompanyList($USER->GetID());
}
$isUserResponsible = false;
if ($order->getField('RESPONSIBLE_ID') == $USER->GetID()
|| ($fields['RESPONSIBLE_ID'] == $USER->GetID()))
{
$isUserResponsible = true;
}
$isAllowCompany = in_array(self::$shipment->getField('COMPANY_ID'), $userCompanyList) || in_array($order->getField('COMPANY_ID'), $userCompanyList);
$fields['IS_USER_RESPONSIBLE'] = $isUserResponsible;
$fields['IS_ALLOW_COMPANY'] = $isAllowCompany;
if (!$isUserResponsible && !$isAllowCompany)
{
foreach ($fields as $fieldName => $fieldValue)
{
if (in_array($fieldName, static::getDisallowFields()))
{
unset($fields[$fieldName]);
}
}
}
}
if (!empty($fields['DELIVERY_DOC_DATE']))
{
$date = new Date($fields['DELIVERY_DOC_DATE']);
$fields['DELIVERY_DOC_DATE'] = $date->toString();
}
$empDeductedId = (int)($fields['EMP_DEDUCTED_ID'] ?? 0);
if ($empDeductedId > 0)
{
if (!array_key_exists($empDeductedId, $users))
$users[$empDeductedId] = $USER->GetByID($empDeductedId)->Fetch();
$fields['EMP_DEDUCTED_ID_NAME'] = $users[$empDeductedId]['NAME'];
$fields['EMP_DEDUCTED_ID_LAST_NAME'] = $users[$empDeductedId]['LAST_NAME'];
}
$empAllowDeliveryId = (int)($fields['EMP_ALLOW_DELIVERY_ID'] ?? 0);
if ($empAllowDeliveryId > 0)
{
if (!array_key_exists($empAllowDeliveryId, $users))
$users[$empAllowDeliveryId] = $USER->GetByID($empAllowDeliveryId)->Fetch();
$fields['EMP_ALLOW_DELIVERY_ID_NAME'] = $users[$empAllowDeliveryId]['NAME'];
$fields['EMP_ALLOW_DELIVERY_ID_LAST_NAME'] = $users[$empAllowDeliveryId]['LAST_NAME'];
}
$empCanceledId = (int)($fields['EMP_CANCELED_ID'] ?? 0);
if ($empCanceledId > 0)
{
if (!array_key_exists($empCanceledId, $users))
$users[$empCanceledId] = $USER->GetByID($empCanceledId)->Fetch();
$fields['EMP_CANCELLED_ID_NAME'] = $users[$empCanceledId]['NAME'];
$fields['EMP_CANCELLED_ID_LAST_NAME'] = $users[$empCanceledId]['LAST_NAME'];
}
$empMarkedId = (int)($fields['EMP_MARKED_ID'] ?? 0);
if ($empMarkedId > 0)
{
if (!array_key_exists($empMarkedId, $users))
$users[$empMarkedId] = $USER->GetByID($empMarkedId)->Fetch();
$fields['EMP_MARKED_ID_NAME'] = $users[$empMarkedId]['NAME'];
$fields['EMP_MARKED_ID_LAST_NAME'] = $users[$empMarkedId]['LAST_NAME'];
}
$fields['CURRENCY'] = $order->getCurrency();
if ($needRecalculate)
{
$calcResult = self::calculateDeliveryPrice(self::$shipment);
if ($calcResult->isSuccess())
$fields['CALCULATED_PRICE'] = $calcResult->getPrice();
}
$fields['CALCULATED_WEIGHT'] = self::$shipment->getShipmentItemCollection()->getWeight() / self::getWeightKoef($order->getSiteId());
if (
isset($fields['CUSTOM_PRICE_DELIVERY'])
&& $fields['CUSTOM_PRICE_DELIVERY'] === 'Y'
&& $fields['ID'] <= 0
)
{
$fields['BASE_PRICE_DELIVERY'] = self::$shipment->getField('BASE_PRICE_DELIVERY');
}
$discounts = OrderEdit::getDiscountsApplyResult($order, $needRecalculate);
if ($order instanceof BitrixSaleArchiveOrder)
{
$shipmentIds = $discounts['SHIPMENTS_ID'];
}
else
{
$shipmentIds = $order->getDiscount()->getShipmentsIds();
}
foreach ($shipmentIds as $shipmentId)
{
if ($shipmentId == self::$shipment->getId())
$fields['DISCOUNTS'] = $discounts;
}
/** @var BitrixSaleDeliveryServicesBase $delivery */
$delivery = self::$shipment->getDelivery();
if(!is_null($delivery))
{
$fields['HAS_TRACKING'] = $delivery->getTrackingClass() <> '' ? true : false;
if($fields['HAS_TRACKING'] && intval($fields['DELIVERY_ID']) > 0)
{
$trackingManager = BitrixSaleDeliveryTrackingManager::getInstance();
$fields['TRACKING_URL'] = $trackingManager->getTrackingUrl($fields['DELIVERY_ID'], $fields['TRACKING_NUMBER']);
}
$fields['DELIVERY_ADDITIONAL_INFO_EDIT'] = $delivery->getAdditionalInfoShipmentEdit(self::$shipment);
$fields['DELIVERY_ADDITIONAL_INFO_VIEW'] = $delivery->getAdditionalInfoShipmentView(self::$shipment);
}
$res = RequestsShipmentTable::getList(array(
'filter' => array('=SHIPMENT_ID' => self::$shipment->getId()),
'select' => array(
'*',
'REQUEST_DATE' => 'REQUEST.DATE'
)
));
if($request = $res->fetch())
{
if(intval($request['REQUEST_ID']) > 0)
{
$fields['DELIVERY_REQUEST_NAME'] = Loc::getMessage(
'SALE_ORDER_SHIPMENT_DEL_REQ_NAME',
array(
'#REQUEST_ID#' => $request['REQUEST_ID'],
'#REQUEST_DATE#' => $request['REQUEST_DATE']->format(BitrixMainTypeDate::getFormat())
));
$fields['DELIVERY_REQUEST_LINK'] = '/bitrix/admin/sale_delivery_request_view.php?lang='.LANGUAGE_ID.'&ID='.intval($request['REQUEST_ID']);
}
$sanitizer = new CBXSanitizer;
$sanitizer->SetLevel(CBXSanitizer::SECURE_LEVEL_MIDDLE);
if($request['ERROR_DESCRIPTION'] <> '')
$fields['DELIVERY_REQUEST_ERROR_DESCRIPTION'] = $sanitizer->SanitizeHtml($request['ERROR_DESCRIPTION']);
}
$fields['FFD_105_ENABLED'] = CashboxManager::isSupportedFFD105() ? 'Y' : 'N';
if ($fields['FFD_105_ENABLED'] === 'Y')
{
$fields['CHECK'] = CashboxCheckManager::getCheckInfo(self::$shipment);
}
$dbRes = CashboxTable::getList(array('filter' => array('=ACTIVE' => 'Y', '=ENABLED' => 'Y')));
$fields['HAS_ENABLED_CASHBOX'] = ($dbRes->fetch()) ? 'Y' : 'N';
$fields['CAN_PRINT_CHECK'] = 'Y';
if (SaleCashboxManager::isEnabledPaySystemPrint())
{
$fields['CAN_PRINT_CHECK'] = 'N';
}
$registry = SaleRegistry::getInstance(SaleRegistry::REGISTRY_TYPE_ORDER);
/** @var SaleOrder $orderClass */
$orderClass = $registry->getOrderClassName();
$fields['ORDER_LOCKED'] = $orderClass::isLocked($fields['ORDER_ID'] ?? 0);
$fields['SITE_ID'] = $order->getSiteId();
$fields['CUSTOM_WEIGHT_DELIVERY'] = self::$shipment->isMarkedFieldCustom('WEIGHT') ? 'Y' : 'N';
return $fields;
}