- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/delivery/services/automatic.php
- Класс: BitrixSaleDeliveryServicesAutomatic
- Вызов: Automatic::convertNewServiceToOld
static function convertNewServiceToOld($service, $sid = false)
{
if(!$sid && !isset($service["CONFIG"]["MAIN"]["SID"]))
return array();
self::initHandlers();
$handlers = self::getRegisteredHandlers("SID");
if($sid !== false)
$service["SID"] = $sid;
else
$service["SID"] = $service["CONFIG"]["MAIN"]["SID"];
$handlerExists = isset($handlers[$service["SID"]]) && is_array($handlers[$service["SID"]]);
$service["TAX_RATE"] = $service["CONFIG"]["MAIN"]["MARGIN_VALUE"]; //todo: %, CURRENCY
$service["INSTALLED"] = 'Y';
$service["BASE_CURRENCY"] = $service["CURRENCY"];
$service["SETTINGS"] = $service["CONFIG"]["MAIN"]["OLD_SETTINGS"] ?? '';
$service["HANDLER"] = '';
if ($handlerExists)
{
$service["HANDLER"] = $handlers[$service["SID"]]["HANDLER"] ?? '';
}
$service['LOGOTIP'] = (int)($service['LOGOTIP'] ?? 0);
if ($service["LOGOTIP"] > 0)
{
$service["LOGOTIP"] = CFile::getFileArray($service["LOGOTIP"]);
}
$siteId = false;
$serviceId = (int)($service['ID'] ?? 0);
if ($serviceId)
{
$restrictions = BitrixSaleDeliveryRestrictionsManager::getRestrictionsList($serviceId);
foreach($restrictions as $restriction)
{
if($restriction["CLASS_NAME"] == 'BitrixSaleDeliveryRestrictionsBySite' && !empty($restriction["PARAMS"]["SITE_ID"]))
{
if(is_array($restriction["PARAMS"]["SITE_ID"]))
{
reset($restriction["PARAMS"]["SITE_ID"]);
$siteId = current($restriction["PARAMS"]["SITE_ID"]);
}
else
{
$siteId = $restriction["PARAMS"]["SITE_ID"];
}
break;
}
}
}
if(!$siteId)
$siteId = Helper::getDefaultSiteId();
$service['CONFIG'] = [];
if ($handlerExists)
{
$service["CONFIG"] = self::createConfig($handlers[$service["SID"]], $service["SETTINGS"], $siteId);
}
$service["SETTINGS"] = unserialize($service["SETTINGS"], ['allowed_classes' => false]);
$service["PROFILES"] = array();
if ($serviceId > 0)
{
foreach(Manager::getByParentId($serviceId) as $profile)
{
$profileId = $profile["CONFIG"]["MAIN"]["PROFILE_ID"];
$profileParams = array(
"TITLE" => $profile["NAME"],
"DESCRIPTION" => $profile["DESCRIPTION"],
"TAX_RATE" => $service["CONFIG"]["MAIN"]["MARGIN_VALUE"] ?? '',
"ACTIVE" => $profile["ACTIVE"]
);
$restrictions = RestrictionsManager::getRestrictionsList($profile["ID"]);
foreach($restrictions as $restriction)
{
switch($restriction["CLASS_NAME"])
{
case 'BitrixSaleDeliveryRestrictionsByWeight':
$profileParams["RESTRICTIONS_WEIGHT"] = array($restriction["PARAMS"]["MIN_WEIGHT"], $restriction["PARAMS"]["MAX_WEIGHT"]);
break;
case 'BitrixSaleDeliveryRestrictionsByPrice':
$profileParams["RESTRICTIONS_SUM"] = array($restriction["PARAMS"]["MIN_PRICE"], $restriction["PARAMS"]["MAX_PRICE"]);
break;
case 'BitrixSaleDeliveryRestrictionsByDimensions':
$profileParams["RESTRICTIONS_DIMENSIONS"] = array(
$restriction["PARAMS"]["LENGTH"],
$restriction["PARAMS"]["WIDTH"],
$restriction["PARAMS"]["HEIGHT"]
);
$profileParams["RESTRICTIONS_MAX_SIZE"] = $restriction["PARAMS"]["MAX_DIMENSION"];
$profileParams["RESTRICTIONS_DIMENSIONS_SUM"] = $restriction["PARAMS"]["MAX_DIMENSIONS_SUM"];
break;
default:
break;
}
}
$service["PROFILES"][$profileId] = $profileParams;
}
}
unset($service["CODE"]);
if ($handlerExists)
{
$result = array_merge($handlers[$service["SID"]], $service);
}
else
{
$result = $service;
}
return $result;
}