require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
$saleModulePermissions = $APPLICATION->GetGroupRight("sale");
if ($saleModulePermissions < "W")
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
\Bitrix\Main\Loader::includeModule('sale');
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php");
IncludeModuleLangFile(__FILE__);
$lheStyle = '
';
$APPLICATION->AddHeadString($lheStyle, true, true);
$SID = $_REQUEST["SID"];
//$bInstall = strlen($handlerPath) > 0 && strlen($SID) <= 0;
$errorsList = "";
//$obDelivery = new CSaleDeliveryHandler();
if (CModule::IncludeModule("fileman"))
$bFilemanModuleInst = true;
$siteList = array();
$rsSites = CSite::GetList();
$i = 0;
while($arRes = $rsSites->Fetch())
{
$siteList[] = array(
'ID' => $arRes['ID'],
'NAME' => $arRes['NAME'],
);
}
$siteCount = count($siteList);
if ($_SERVER["REQUEST_METHOD"] == "POST" && !empty($_REQUEST["Update"]) && check_bitrix_sessid())
{
$arHandlersData = isset($_POST["STRUCTURE"]) ? urldecode($_POST["STRUCTURE"]) : '';
$arHandlersData = json_decode($arHandlersData, true);
if('utf-8' != mb_strtolower(SITE_CHARSET))
$arHandlersData = $APPLICATION->ConvertCharsetArray($arHandlersData, 'utf-8', SITE_CHARSET);
if ($arHandlersData)
{
if ($_REQUEST["USE_DIFF_SITES_SETTINGS"] != "Y")
{
$curSITE_ID = $_REQUEST["current_site"];
$arHandlersData = array("ALL" => $arHandlersData[$curSITE_ID]);
$arHandlersData["ALL"]["LID"] = false;
}
foreach ($arHandlersData as $siteID => $arHandler)
{
foreach ($arHandlersData[$siteID]["PROFILES"] as $profile_id => $arProfile)
{
if (is_array($arProfile["RESTRICTIONS_SUM"]))
{
$currency = array_shift($arProfile["RESTRICTIONS_SUM"]);
foreach ($arProfile["RESTRICTIONS_SUM"] as $key => $value)
{
$arProfile["RESTRICTIONS_SUM"][$key] = CCurrencyRates::ConvertCurrency($value, $currency, $arHandlersData[$siteID]["BASE_CURRENCY"]);
}
$arHandlersData[$siteID]["PROFILES"][$profile_id] = $arProfile;
}
}
$arConfig = array();
foreach ($arHandlersData[$siteID]["CONFIG"]["CONFIG"] as $configID => $arHandlerConfig)
{
if(isset($arHandlerConfig["CHECK_FORMAT"]))
{
$formatError = CSaleDeliveryHelper::getFormatError($arHandlerConfig["VALUE"], $arHandlerConfig["CHECK_FORMAT"], $arHandlerConfig["TITLE"]);
if(!is_null($formatError))
$errorsList .= $formatError;
}
$arConfig[$configID] = $arHandlerConfig["VALUE"];
}
$arHandlersData[$siteID]["CONFIG"] = $arConfig;
//$arHandlersData[$siteID]["HANDLER"] = $handlerPath;
}
//add logotip
$arPicture = array();
if(array_key_exists("LOGOTIP", $_FILES) && $_FILES["LOGOTIP"]["error"] == 0)
$arPicture = $_FILES["LOGOTIP"];
if($_POST["LOGOTIP_del"] == "Y")
$arPicture["del"] = trim($_POST["LOGOTIP_del"]);
if(!empty($arPicture))
$arHandlersData["ALL"]["LOGOTIP"] = $arPicture;
foreach ($arHandlersData as $SITE_ID => $arHandlerData)
{
$APPLICATION->ResetException();
$arHandlerData["PROFILE_USE_DEFAULT"] == "N";
CSaleDeliveryHandler::Set($SID, $arHandlerData, $SITE_ID == "ALL" ? false : $SITE_ID);
if ($ex = $APPLICATION->GetException())
{
$errorsList .= $ex->GetString()."
";
}
}
//pay system for delivery
if (is_set($_POST["PAY_SYSTEM"]) && is_array($_POST["PAY_SYSTEM"]))
{
foreach ($_POST["PAY_SYSTEM"] as $profileName => $arPSIds)
CSaleDelivery2PaySystem::UpdateDelivery($SID, array(
"PAYSYSTEM_ID" => $arPSIds,
"DELIVERY_PROFILE_ID" => $profileName
)
);
}
if ($errorsList == '')
{
if ($_REQUEST["apply"] <> '')
LocalRedirect($APPLICATION->GetCurPage()."?lang=" . LANGUAGE_ID . "&SID=".urlencode($SID));
else
LocalRedirect('/bitrix/admin/sale_delivery_handlers.php?lang='.LANG);
die();
}
}
else
{
$errorsList .= GetMessage('SALE_DH_ERROR_UNRECOGNIZED')."
";
}
}
$rsDeliveryInfo = CSaleDeliveryHandler::GetBySID($SID);
if ($rsDeliveryInfo->SelectedRowsCount() <= 0)
{
echo 'error';
die();
}
while ($arHandler = $rsDeliveryInfo->Fetch())
{
$bInstall = $arHandler["INSTALLED"] == "N";
unset($arHandler["DBGETSETTINGS"]);
unset($arHandler["DBSETSETTINGS"]);
unset($arHandler["GETCONFIG"]);
unset($arHandler["COMPABILITY"]);
unset($arHandler["CALCULATOR"]);
if ($arHandler["LID"] <> '')
$arDeliveryInfo[$arHandler["LID"]] = $arHandler;
else
{
$arDeliveryInfo = array("ALL" => $arHandler);
break;
}
}
if (count($arDeliveryInfo) > 0 && !isset($arDeliveryInfo['ALL']) && count($arDeliveryInfo) != count($siteList))
{
$tmp = array_values($arDeliveryInfo);
$ar = $tmp[0];
foreach ($siteList as $arSite)
{
if (!isset($arDeliveryInfo[$arSite['ID']]))
{
$arDeliveryInfo[$arSite['ID']] = $ar;
$arDeliveryInfo[$arSite['ID']]['ACTIVE'] = 'N';
unset($arDeliveryInfo[$arSite['ID']]["ID"]);
}
}
}
if (!$bInstall)
{
if (count($arDeliveryInfo) > 0)
{
$arSitesConfigured = array_keys($arDeliveryInfo);
$bSites = $arSitesConfigured[0] != "ALL";
if (!$bSites)
{
foreach ($siteList as $arSite)
{
$arDeliveryInfo[$arSite["ID"]] = $arDeliveryInfo["ALL"];
$arDeliveryInfo[$arSite["ID"]]["LID"] = $arSite["ID"];
}
unset($arDeliveryInfo["ALL"]);
}
$handlerPath = $arDeliveryInfo[$siteList[0]["ID"]]["HANDLER"];
$deliveryHint = $arDeliveryInfo[$siteList[0]["ID"]]['DESCRIPTION_INNER'];
$deliveryName = $arDeliveryInfo[$siteList[0]["ID"]]['NAME'];
}
else
{
$bInstall = true;
}
}
else if(isset($arDeliveryInfo["ALL"]))
{
$arDeliveryInfoTmp = $arDeliveryInfo;
$arDeliveryInfoTmp["ALL"]["ACTIVE"] = 'N';
$arDeliveryInfoTmp["ALL"]["SORT"] = '100';
$arDeliveryInfo = array();
foreach ($siteList as $arSite)
{
$arDeliveryInfo[$arSite["ID"]] = $arDeliveryInfoTmp["ALL"];
$arDeliveryInfo[$arSite["ID"]]["LID"] = $arSite["ID"];
}
unset($arDeliveryInfoTmp);
$handlerPath = $arDeliveryInfo[$siteList[0]["ID"]]["HANDLER"];
$deliveryHint = $arDeliveryInfo[$siteList[0]["ID"]]['DESCRIPTION_INNER'];
$deliveryName = $arDeliveryInfo[$siteList[0]["ID"]]['NAME'];
$bSites = false;
}
else
{
$bSites = true;
foreach ($siteList as $arSite)
{
$arDeliveryInfo[$arSite["ID"]]["ACTIVE"] = 'N';
$arDeliveryInfo[$arSite["ID"]]["SORT"] = '100';
}
$handlerPath = $arDeliveryInfo[$siteList[0]["ID"]]["HANDLER"];
$deliveryHint = $arDeliveryInfo[$siteList[0]["ID"]]['DESCRIPTION_INNER'];
$deliveryName = $arDeliveryInfo[$siteList[0]["ID"]]['NAME'];
}
foreach ($siteList as $arSite)
{
$curSITE_ID = $arSite["ID"];
unset($arDeliveryInfo[$curSITE_ID]["SETTINGS"]);
if (!is_array($arDeliveryInfo[$curSITE_ID]["CONFIG"]["CONFIG_GROUPS"]))
{
$arDeliveryInfo[$curSITE_ID]["CONFIG"]["CONFIG"] = array();
foreach ($arDeliveryInfo[$curSITE_ID]["CONFIG"] as $key => $arConfig)
{
if ($key != "CONFIG")
{
$arConfig["GROUP"] = "none";
$arDeliveryInfo[$curSITE_ID]["CONFIG"]["CONFIG"] = $arConfig;
unset($arDeliveryInfo[$curSITE_ID]["CONFIG"][$key]);
}
}
$arDeliveryInfo[$curSITE_ID]["CONFIG"]["CONFIG_GROUPS"] = array("none" => "");
}
foreach ($arDeliveryInfo[$curSITE_ID]['PROFILES'] as $key => $arProfile)
{
if (!is_set($arProfile['ACTIVE'])) $arProfile['ACTIVE'] = "Y";
if (!is_set($arProfile['TAX_RATE'])) $arProfile['TAX_RATE'] = "0";
if (!is_set($arProfile['RESTRICTIONS_DIMENSIONS_SUM'])) $arProfile['RESTRICTIONS_DIMENSIONS_SUM'] = "0";
if (!is_set($arProfile['RESTRICTIONS_MAX_SIZE'])) $arProfile['RESTRICTIONS_MAX_SIZE'] = "0";
if (!is_array($arProfile["RESTRICTIONS_WEIGHT"]) || count($arProfile["RESTRICTIONS_WEIGHT"]) <= 0)
$arProfile["RESTRICTIONS_WEIGHT"] = array(0);
if (!is_array($arProfile["RESTRICTIONS_DIMENSIONS"]) || count($arProfile["RESTRICTIONS_DIMENSIONS"]) <= 0)
$arProfile["RESTRICTIONS_DIMENSIONS"] = array(0);
if (!is_array($arProfile["RESTRICTIONS_SUM"]) || count($arProfile["RESTRICTIONS_SUM"]) <= 0)
$arProfile["RESTRICTIONS_SUM"] = array(0);
else
array_unshift($arProfile["RESTRICTIONS_SUM"], $arDeliveryInfo[$curSITE_ID]['BASE_CURRENCY']);
foreach ($arProfile["RESTRICTIONS_WEIGHT"] as $pkey => $value)
$arProfile["RESTRICTIONS_WEIGHT"][$pkey] = number_format(doubleval($value), 2, '.', '');
foreach ($arProfile["RESTRICTIONS_SUM"] as $pkey => $value)
$arProfile["RESTRICTIONS_SUM"][$pkey] = $pkey > 0 ? number_format(doubleval($value), 2, '.', '') : $value;
if (count($arProfile["RESTRICTIONS_SUM"]) < 3)
$arProfile["RESTRICTIONS_SUM"][] = "0.00";
foreach ($arProfile["RESTRICTIONS_DIMENSIONS"] as $pkey => $value)
$arProfile["RESTRICTIONS_DIMENSIONS"][$pkey] = number_format(doubleval($value), 2, '.', '');
$arDeliveryInfo[$curSITE_ID]['PROFILES'][$key] = $arProfile;
}
}
$APPLICATION->SetTitle(GetMessage("SALE_DH_TITLE_EDIT").": (".htmlspecialcharsEx($SID).") ".$deliveryName);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
$aTabs = array(
array("DIV" => "editbase", "TAB" => GetMessage("SALE_DH_EDIT_BASECONFIG"), "TITLE" => GetMessage("SALE_DH_EDIT_BASECONFIG_DESCR"))
);
$SITE_ID = $siteList[0]['ID'];
if (is_array($arDeliveryInfo[$SITE_ID]["CONFIG"]))
{
if (is_array($arDeliveryInfo[$SITE_ID]["CONFIG"]["CONFIG_GROUPS"]))
{
foreach ($arDeliveryInfo[$SITE_ID]["CONFIG"]["CONFIG_GROUPS"] as $group => $title)
{
$configTabsCount++;
$aTabs[] = array("DIV" => "edit_".htmlspecialcharsbx($group), "TAB" => htmlspecialcharsbx($title), "TITLE" => htmlspecialcharsbx($title));
}
}
else
{
$configTabsCount++;
$aTabs[] = array("DIV" => "edit_config", "TAB" => GetMessage('SALE_DH_EDIT_CONFIG'), "TITLE" => GetMessage('SALE_DH_EDIT_CONFIG_DESCR'));
}
}
if(is_array($arDeliveryInfo[$SITE_ID]["PROFILES"]))
{
foreach ($arDeliveryInfo[$SITE_ID]["PROFILES"] as $profileId => $arProfile)
{
if(!array_key_exists($profileId, $arDeliveryInfo[$SITE_ID]["CONFIG"]["CONFIG_GROUPS"]))
{
$configTabsCount++;
$aTabs[] = array("DIV" => "edit_".htmlspecialcharsbx($profileId), "TAB" => htmlspecialcharsbx($arProfile["TITLE"]), "TITLE" => htmlspecialcharsbx($arProfile["TITLE"]));
}
}
}
//$aTabs[] = array("DIV" => "editbase_profiles", "TAB" => GetMessage('SALE_DH_EDIT_PROFILES'), "TITLE" => GetMessage('SALE_DH_EDIT_PROFILES_DESCR'));
//$aTabs[] = array("DIV" => "delivery2pay", "TAB" => GetMessage('SALE_TAB_DELIVERY_PAY'), "TITLE" => GetMessage('SALE_TAB_DELIVERY_PAY_DESC'));
$tabControl = new CAdminViewTabControl("tabControl", $aTabs, true, false);
$parentTabControl = new CAdminTabControl('parentTabControl', array(
array("DIV" => "edit_main", "TAB" => GetMessage('SALE_DH_TAB_TITLE_EDIT'), "ICON" => "sale", "TITLE" => GetMessage('SALE_DH_TAB_TITLE_EDIT_ALT'))
), true, true);
$aContext = array(
array(
"TEXT" => GetMessage("SALE_DH_LIST"),
"LINK" => "sale_delivery_handlers.php?lang=".LANG,
"TITLE" => GetMessage("SALE_DH_LIST_ALT"),
"ICON" => "btn_list"
),
);
$obContextMenu = new CAdminContextMenu($aContext);
$obContextMenu->Show();
$arConfigValues = array();
foreach ($arDeliveryInfo[$SITE_ID]["CONFIG"]["CONFIG"] as $config_id => $arConfig)
{
if ($arConfig["TYPE"] != "MULTISELECT")
$arConfigValues[$config_id] = $arConfig["VALUE"] <> '' ? $arConfig["VALUE"] : $arConfig["DEFAULT"];
else
{
if (is_set($arConfig["VALUE"]) && !is_array($arConfig["VALUE"]))
$arConfig["VALUE"] = array("0" => $arConfig["VALUE"]);
if (!is_set($arConfig["VALUE"]) && is_set($arConfig["DEFAULT"]) && !is_array($arConfig["DEFAULT"]))
$arConfig["DEFAULT"] = array("0" => $arConfig["DEFAULT"]);
$arConfigValues[$config_id] = count($arConfig["VALUE"]) > 0 ? $arConfig["VALUE"] : $arConfig["DEFAULT"];
}
}
?>