• Модуль: 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;
}