- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/delivery/services/automatic.php
- Класс: BitrixSaleDeliveryServicesAutomatic
- Вызов: Automatic::getConfigStructure
protected function getConfigStructure()
{
static $handlers = null;
static $jsData = array();
$initedHandlers = self::getRegisteredHandlers("SID");
sortByColumn($initedHandlers, array(mb_strtoupper("NAME") => SORT_ASC));
if($handlers === null)
{
$handlers = array("" => "");
foreach($initedHandlers as $handler)
{
if (isset($handler["DEPRECATED"]) && $handler["DEPRECATED"] = "Y")
{
continue;
}
if (!self::isAutomaticHandlerCompatible($handler))
{
continue;
}
$handlers[$handler["SID"]] = $handler["NAME"]." [".$handler["SID"]."]";
$jsData[$handler["SID"]] = array(
htmlspecialcharsbx($handler["NAME"]),
htmlspecialcharsbx($handler["DESCRIPTION"]),
htmlspecialcharsbx($handler["DESCRIPTION_INNER"])
);
}
}
if (($this->handlerInitParams["SID"] ?? '') == '' || $this->id <=0)
{
$result = array(
"MAIN" => array(
"TITLE" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_SETTINGS"),
"DESCRIPTION" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_SETTINGS_DSCR"),
"ITEMS" => array (
"SID" => array(
"TYPE" => "ENUM",
"NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_CHOOSE"),
"OPTIONS" => $handlers,
"ONCHANGE" => "var data=".CUtil::PhpToJSObject($jsData)."; BX.onCustomEvent('onDeliveryServiceNameChange',[{name: data[this.value][0], description: data[this.value][1]}]); BX('adm-sale-delivery-auto-description_inner_view').innerHTML=data[this.value][2]; //this.form.submit();"
),
"DESCRIPTION_INNER" => array(
"TYPE" => "DELIVERY_READ_ONLY",
"NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_DESCRIPTION_INNER"),
"ID" => "adm-sale-delivery-auto-description_inner",
"DEFAULT" => ""
),
)
)
);
}
else
{
$handler = $this->handlerInitParams["SID"];
$result = array(
"MAIN" => array(
"TITLE" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_SETTINGS"),
"DESCRIPTION" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_SETTINGS_DSCR"),
"ITEMS" => array (
"SID" => array(
"TYPE" => "DELIVERY_READ_ONLY",
"NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_HANDLER_CHOOSE"),
"VALUE" => $handler,
"VALUE_VIEW" => $handlers[$handler]
),
"DESCRIPTION_INNER" => array(
"TYPE" => "DELIVERY_READ_ONLY",
"NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_DESCRIPTION_INNER"),
"VALUE" => $this->handlerInitParams["DESCRIPTION_INNER"]
)
)
)
);
}
$serviceCurrency = $this->currency;
if(BitrixMainLoader::includeModule('currency'))
{
$currencyList = CurrencyManager::getCurrencyList();
if (isset($currencyList[$this->currency]))
$serviceCurrency = $currencyList[$this->currency];
unset($currencyList);
}
$marginTypes = array(
"%" => "%",
"CURRENCY" => $serviceCurrency
);
$result["MAIN"]["ITEMS"]["MARGIN_VALUE"] = array(
"TYPE" => "STRING",
"NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_MARGIN_VALUE"),
"DEFAULT" => 0
);
$result["MAIN"]["ITEMS"]["MARGIN_TYPE"] = array(
"TYPE" => "ENUM",
"NAME" => Loc::getMessage("SALE_DLVR_HANDL_AUT_MARGIN_TYPE"),
"DEFAULT" => "%",
"OPTIONS" => $marginTypes
);
if($this->sid <> '')
{
$configProfileIds = array_keys($this->handlerInitParams["PROFILES"]);
}
else
{
$configProfileIds = array();
}
if(isset($this->oldConfig["CONFIG_GROUPS"]))
{
$groupProfileIds = array_keys($this->oldConfig["CONFIG_GROUPS"]);
$intersect = array_intersect($groupProfileIds, $configProfileIds);
foreach($intersect as $pid)
unset($this->oldConfig["CONFIG_GROUPS"][$pid]);
}
$oldConfig = $this->convertOldConfigToNew($this->oldConfig);
if(!empty($oldConfig))
{
if(isset($oldConfig["CONFIG_GROUPS"]["MAIN"]))
{
$oldConfig["CONFIG_GROUPS"]["MAIN_OLD"] = $oldConfig["CONFIG_GROUPS"]["MAIN"];
unset($oldConfig["CONFIG_GROUPS"]["MAIN"]);
}
$result = array_merge($result, $oldConfig);
}
return $result;
}