Модуль: sale
Путь к файлу: ~/bitrix/modules/sale/lib/helpers/admin/blocks/ordershipment.php
Класс: BitrixSaleHelpersAdminBlocksOrderShipment
Вызов: OrderShipment::getEditTemplate
static function getEditTemplate($data, $index, $formType, $post)
{
global $USER, $APPLICATION;
$saleModulePermissions = $APPLICATION->GetGroupRight("sale");
$index++;
static $items = null;
if (is_null($items))
$items = self::getDeliveryServiceList();
$data['DELIVERY_ID'] ??= 0;
if (!isset($items[$data['DELIVERY_ID']]))
{
$delivery = self::getDeliveryServiceInfoById($data['DELIVERY_ID']);
if ($delivery)
$items[$delivery['ID']] = $delivery;
}
static $deliveries = null;
if (is_null($deliveries))
$deliveries = self::makeDeliveryServiceTree($items);
$deliveryId = 0;
$profileId = 0;
if (isset($post['DELIVERY_ID']))
{
if (isset($post['PROFILE']))
$data['DELIVERY_ID'] = $post['PROFILE'];
else
$data['DELIVERY_ID'] = $post['DELIVERY_ID'];
}
// default
$data['ID'] ??= 0;
$data['TRACKING_NUMBER'] ??= null;
$data['BASE_PRICE_DELIVERY'] ??= null;
$data['CALCULATED_PRICE'] ??= null;
$data['CALCULATED_WEIGHT'] ??= null;
$data['DEDUCTED'] ??= 'N';
$data['ALLOW_DELIVERY'] ??= 'N';
$data['DELIVERY_DOC_NUM'] ??= null;
$data['DELIVERY_DOC_DATE'] ??= null;
$profiles = array();
if ($data['DELIVERY_ID'])
{
$deliveryId = $data['DELIVERY_ID'];
$service = ServicesManager::getObjectById($deliveryId);
if ($service && $service::isProfile())
{
$profileId = $deliveryId;
$deliveryId = $service->getParentService()->getId();
$profiles = self::getDeliveryServiceProfiles($deliveryId);
if (!$profiles)
unset($deliveries[$deliveryId]);
}
else if ($service && $service->canHasProfiles())
{
unset($deliveries[$deliveryId]);
}
}
if (isset($post['ALLOW_DELIVERY']))
$data['ALLOW_DELIVERY'] = $post['ALLOW_DELIVERY'];
$allowedStatusesDelivery = DeliveryStatus::getStatusesUserCanDoOperations($USER->GetID(), array('delivery'));
$isAllowDelivery = isset($data["STATUS_ID"]) && in_array($data["STATUS_ID"], $allowedStatusesDelivery);
$class = ($data['ALLOW_DELIVERY'] == 'Y') ? '' : 'notdelivery';
$class .= ($isAllowDelivery) ? '' : ' not_active';
$status = ($data['ALLOW_DELIVERY'] == 'Y') ? 'YES' : 'NO';
$triangle = ($class === '') ? ' ▾ ' : '';
$allowDelivery = ''.Loc::getMessage('SALE_ORDER_SHIPMENT_ALLOW_DELIVERY_'.$status).' '.$triangle.' ';
$allowedStatusesDeduction = DeliveryStatus::getStatusesUserCanDoOperations($USER->GetID(), array('deduction'));
$isAllowDeduction = isset($data["STATUS_ID"]) && in_array($data["STATUS_ID"], $allowedStatusesDeduction);
if (isset($post['DEDUCTED']) && $isAllowDeduction)
$data['DEDUCTED'] = $post['DEDUCTED'];
$class = ($data['DEDUCTED'] == 'Y') ? '' : 'notdeducted';
$class .= ($isAllowDeduction) ? '' : ' not_active';
$status = ($data['DEDUCTED'] == 'Y') ? 'YES' : 'NO';
$triangle = ($class === '') ? ' ▾ ' : '';
$deducted = ''.Loc::getMessage('SALE_ORDER_SHIPMENT_DEDUCTED_'.$status).' '.$triangle.' ';
$lang = MainApplication::getInstance()->getContext()->getLanguage();
$map = '';
$extraServiceHTML = '';
$extraServiceManager = new BitrixSaleDeliveryExtraServicesManager($data['DELIVERY_ID']);
$extraServiceManager->setOperationCurrency($data['CURRENCY']);
if (isset($post['EXTRA_SERVICES']))
{
$data['EXTRA_SERVICES'] = $post['EXTRA_SERVICES'];
}
if (isset($post['EXTRA_SERVICES']))
{
$data['DELIVERY_STORE_ID'] = $post['DELIVERY_STORE_ID'];
}
if (!empty($data['EXTRA_SERVICES']))
{
$extraServiceManager->setValues($data['EXTRA_SERVICES']);
}
$extraService = $extraServiceManager->getItems();
if ($extraService)
$extraServiceHTML = self::getExtraServiceEditControl($extraService, $index, false, self::$shipment);
if ($data['DELIVERY_ID'] > 0)
$map = self::getMap($data['DELIVERY_ID'], $index, $data['DELIVERY_STORE_ID']);
$dataId = (int)($data['ID'] ?? 0);
if ($dataId > 0)
{
$dateInsert = new Date($data['DATE_INSERT']);
$title = Loc::getMessage('SALE_ORDER_SHIPMENT_BLOCK_EDIT_SHIPMENT_TITLE', array("#ID#" => $dataId, '#DATE_INSERT#' => $dateInsert));
}
else
{
$title = Loc::getMessage('SALE_ORDER_SHIPMENT_BLOCK_NEW_SHIPMENT_TITLE');
}
$customPriceDelivery = isset($post['CUSTOM_PRICE_DELIVERY']) ? htmlspecialcharsbx($post['CUSTOM_PRICE_DELIVERY']) : $data['CUSTOM_PRICE_DELIVERY'];
$customWeightDelivery = isset($post['CUSTOM_WEIGHT_DELIVERY']) ? htmlspecialcharsbx($post['CUSTOM_WEIGHT_DELIVERY']) : $data['CUSTOM_WEIGHT_DELIVERY'];
$basePriceDelivery = round(
(float)($post['BASE_PRICE_DELIVERY'] ?? $data['BASE_PRICE_DELIVERY'] ?? 0.0),
2
);
$priceDelivery = round(
(float)($post['PRICE_DELIVERY'] ?? $data['PRICE_DELIVERY'] ?? 0.0),
2
);
$weight = $post['WEIGHT'] ?? $data['WEIGHT'] ?? 0;
$weight = roundEx(
floatval(
$weight/self::getWeightKoef($data['SITE_ID'])
),
SALE_WEIGHT_PRECISION
);
$weightMeasureUnits = self::getWeightUnit($data['SITE_ID']);
$blockProfiles = '';
if ($profileId > 0 && $profiles)
{
$profiles = self::checkProfilesRestriction($profiles, self::$shipment);
$profilesTemplate = self::getProfileEditControl($profiles, $index, $profileId);
$blockProfiles = '
'.Loc::getMessage('SALE_ORDER_SHIPMENT_DELIVERY_SERVICE_PROFILE').':
'.$profilesTemplate.'
';
}
$id = (isset($post['ID'])) ? $post['SHIPMENT_ID'] : $data['ID'];
$companies = '';
if (!empty($data['COMPANIES']))
{
if ($saleModulePermissions == "P")
{
$userCompanyId = null;
$userCompanyList = CompanyManager::getUserCompanyList($USER->GetID());
if (is_array($userCompanyList) && count($userCompanyList) == 1)
{
$userCompanyId = reset($userCompanyList);
$companyName = $data['COMPANIES'][$userCompanyId]["NAME"]." [".$data['COMPANIES'][$userCompanyId]["ID"]."]";
$companies = htmlspecialcharsbx($companyName);
}
else
{
foreach ($data['COMPANIES'] as $companyId => $companyData)
{
$foundCompany = false;
if (!empty($userCompanyList) && is_array($userCompanyList))
{
foreach ($userCompanyList as $userCompanyId)
{
if ($userCompanyId == $companyId)
{
$foundCompany = true;
break;
}
}
}
if (!$foundCompany)
{
unset($data['COMPANIES'][$companyId]);
}
}
if (count($data['COMPANIES']) == 1)
{
$company = reset($data['COMPANIES']);
$companies = htmlspecialcharsbx($company["NAME"]." [".$company["ID"]."]");
}
}
}
if (empty($companies))
{
$companies = OrderEdit::makeSelectHtmlWithRestricted(
'SHIPMENT['.$index.'][COMPANY_ID]',
$data['COMPANIES'],
isset($post["COMPANY_ID"]) ? $post["COMPANY_ID"] : $data["COMPANY_ID"],
true,
array(
"class" => "adm-bus-select",
"id" => "SHIPMENT_COMPANY_ID_".$index
)
);
}
}
else
{
if ($saleModulePermissions >= "W")
{
$companies = str_replace("#URL#", "/bitrix/admin/sale_company_edit.php?lang=".$lang, Loc::getMessage('SALE_ORDER_SHIPMENT_ADD_COMPANY'));
}
}
if ($data['FFD_105_ENABLED'] === 'Y')
{
$checkLink = '';
if (!empty($data['CHECK']))
{
$checkLink .= OrderShipment::buildCheckHtml($data['CHECK']);
}
$checkLink .= ' ';
if ($data['HAS_ENABLED_CASHBOX'] === 'Y' && $data['CAN_PRINT_CHECK'] === 'Y')
{
$checkLink .= ''.Loc::getMessage('SALE_ORDER_SHIPMENT_CHECK_ADD').' ';
}
}
if (isset($items[$data['DELIVERY_ID']]['LOGOTIP']['MAIN']))
$logo = $items[$data['DELIVERY_ID']]['LOGOTIP']['MAIN'];
else
$logo = '/bitrix/images/sale/logo-default-d.gif';
$trackingNumber = htmlspecialcharsbx(isset($post['TRACKING_NUMBER']) ? $post['TRACKING_NUMBER'] : $data['TRACKING_NUMBER']);
$result = '
'.Loc::getMessage('SALE_ORDER_SHIPMENT_BLOCK_SERVICE').'
'.Loc::getMessage('SALE_ORDER_SHIPMENT_DELIVERY_SERVICE').':
'.self::getDeliverySelectHtml($deliveries, $deliveryId, $index).'
'.$blockProfiles.'
'.Loc::getMessage('SALE_ORDER_SHIPMENT_DELIVERY_BLOCK_PRICE').'
'.Loc::getMessage('SALE_ORDER_SHIPMENT_DELIVERY_BLOCK_WEIGHT').'
';
if ($companies)
{
$result .= '
'.Loc::getMessage('SALE_ORDER_SHIPMENT_BLOCK_SHIPMENT').'
'.Loc::getMessage('SALE_ORDER_SHIPMENT_OFFICE').':
'.$companies.'
';
}
if ($data['FFD_105_ENABLED'] === 'Y' && $data['ID'] > 0)
{
$result .= '
'.Loc::getMessage('SALE_ORDER_SHIPMENT_CHECK_LINK_TITLE').'
';
}
$result .= '
'.Loc::getMessage('SALE_ORDER_SHIPMENT_BLOCK_STATUS').'
'.Loc::getMessage('SALE_ORDER_SHIPMENT_ALLOW_DELIVERY').':
'.$allowDelivery.'
'.((!empty($data['EMP_ALLOW_DELIVERY_ID'])) ? '
' : '').'
'.Loc::getMessage('SALE_ORDER_SHIPMENT_DEDUCTED').':
'.$deducted.'
'.((!empty($data['EMP_DEDUCTED_ID'])) ? '
' : '').'
'.Loc::getMessage('SALE_ORDER_SHIPMENT_BLOCK_DELIVERY_INFO').'
'.$extraServiceHTML.'
';
if(!empty($data['DELIVERY_REQUEST_NAME']) || !empty($data['DELIVERY_REQUEST_ERROR_DESCRIPTION']))
{
$result .= '
'.Loc::getMessage('SALE_ORDER_SHIPMENT_DEL_REQ_INFO').'
';
if(!empty($data['DELIVERY_REQUEST_NAME']))
{
$result .='
'.Loc::getMessage('SALE_ORDER_SHIPMENT_DEL_REQ').':
'.$data['DELIVERY_REQUEST_NAME'].'
';
}
if(!empty($data['DELIVERY_REQUEST_ERROR_DESCRIPTION']))
{
$result .= '
'.Loc::getMessage('SALE_ORDER_SHIPMENT_DEL_REQ_ERROR').':
'.$data['DELIVERY_REQUEST_ERROR_DESCRIPTION'].'
';
}
$result .= '
';
}
if(is_array($data['DELIVERY_ADDITIONAL_INFO_EDIT']) && !empty($data['DELIVERY_ADDITIONAL_INFO_EDIT']))
{
$result .= '
'.Loc::getMessage('SALE_ORDER_SHIPMENT_BLOCK_DELIVERY_ADDITIONAL').'
';
foreach($data['DELIVERY_ADDITIONAL_INFO_EDIT'] as $name => $params)
{
$result .='
'.$params['LABEL'].':
'.BitrixSaleInternalsInputManager::getEditHtml('SHIPMENT['.$index.'][ADDITIONAL]['.$name.']', $params).'
';
}
$result .= '
';
}
$result .= '
';
$srcList = self::getImgDeliveryServiceList($items);
$params = array(
'index' => $index,
'id' => (int)$data['ID'],
'isAjax' => false,
'canAllow' => $isAllowDelivery,
'canDeduct' => $isAllowDeduction,
'canChangeStatus' => false,
'src_list' => $srcList,
'active' => true,
'discounts' => $data["DISCOUNTS"] ?? [],
'discountsMode' => ($formType == "edit" ? "view" : "edit"),
'templateType' => 'edit',
'weightKoef' => self::getWeightKoef($data['SITE_ID']),
'weightUnit' => self::getWeightUnit($data['SITE_ID'])
);
if ($customPriceDelivery == 'Y')
$params['calculated_price'] = $data['CALCULATED_PRICE'];
if ($customWeightDelivery == 'Y')
$params['calculated_weight'] = $data['CALCULATED_WEIGHT'];
$result .= self::initJsShipment($params);
return $result;
}