require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
use Bitrix\Main\Localization\Loc;
use Bitrix\Sale\Delivery\ExtraServices;
Loc::loadMessages(__FILE__);
Bitrix\Main\Loader::includeModule('sale');
/** @var CMain $APPLICATION */
$saleModulePermissions = $APPLICATION->GetGroupRight("sale");
if ($saleModulePermissions < "W")
$APPLICATION->AuthForm(Loc::getMessage("SALE_DSE_ACCESS_DENIED"));
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php");
$ID = isset($_REQUEST["ID"]) ? intval($_REQUEST["ID"]) : 0;
$strError = "";
$fields = array();
$tabControlName = "tabControl";
$isItSavingProcess = ($_SERVER['REQUEST_METHOD'] == "POST" && (strlen($_POST["save"]) > 0 || strlen($_POST["apply"]) > 0)) ? true : false;
$isFormReloading = $_SERVER['REQUEST_METHOD'] == "POST" && !$isItSavingProcess;
if($saleModulePermissions == "W" && check_bitrix_sessid())
{
if ($isItSavingProcess || $isFormReloading)
{
if(isset($_POST["ID"])) $fields["ID"] = intval($_POST["ID"]);
if(isset($_POST["CODE"])) $fields["CODE"] = trim($_POST["CODE"]);
if(isset($_POST["NAME"])) $fields["NAME"] = trim($_POST["NAME"]);
if(isset($_POST["SORT"])) $fields["SORT"] = $_POST["SORT"];
if(isset($_POST["ACTIVE"])) $fields["ACTIVE"] = trim($_POST["ACTIVE"]);
if(isset($_POST["INIT_VALUE"])) $fields["INIT_VALUE"] = trim($_POST["INIT_VALUE"]);
if(isset($_POST["CLASS_NAME"])) $fields["CLASS_NAME"] = trim($_POST["CLASS_NAME"]);
if(isset($_POST["DESCRIPTION"])) $fields["DESCRIPTION"] = trim($_POST["DESCRIPTION"]);
if(isset($_POST["DELIVERY_ID"])) $fields["DELIVERY_ID"] = intval($_POST["DELIVERY_ID"]);
if(isset($_POST["PARAMS"], $_POST["PARAMS"]["PARAMS"])) $fields["PARAMS"] = $_POST["PARAMS"]["PARAMS"];
if(isset($_POST["RIGHTS"]))
$fields["RIGHTS"] = $_POST["RIGHTS"];
else
$fields["RIGHTS"] = array("Y", "N", "N");
if($isItSavingProcess)
{
if($fields["DELIVERY_ID"] > 0)
{
$fields = ExtraServices\Manager::prepareParamsToSave($fields);
if($ID > 0)
$res = ExtraServices\Table::update($ID, $fields);
else
$res = ExtraServices\Table::add($fields);
if(!$res->isSuccess())
$strError .= Loc::getMessage("SALE_ESDE_ERROR_SAVE").": ".implode("
",$res-> getErrorMessages());
elseif($ID <= 0)
$ID = $res->getId();
}
else
{
$strError .= Loc::getMessage("SALE_ESDE_ERROR_ID").'.
\n';
}
if(strlen($strError) <= 0)
{
if (strlen($_POST["apply"]) > 0)
LocalRedirect($APPLICATION->GetCurPageParam("ID=".$ID, array('ID')));
elseif(strlen($_POST["save"]) > 0)
LocalRedirect((isset($_REQUEST["back_url"]) ? $_REQUEST["back_url"] : "sale_delivery_service_edit.php?lang=".LANG."&ID=".$fields["DELIVERY_ID"]));
}
}
}
}
if($ID > 0)
{
$res = ExtraServices\Table::getById($ID);
$fields = $res->fetch();
}
if(isset($fields["DELIVERY_ID"]))
$DELIVERY_ID = $fields["DELIVERY_ID"];
elseif(isset($_REQUEST["DELIVERY_ID"]))
$DELIVERY_ID = $_REQUEST["DELIVERY_ID"];
else
$DELIVERY_ID = 0;
$DELIVERY_ID = intval($DELIVERY_ID);
if($DELIVERY_ID <= 0)
$strError .= Loc::getMessage("SALE_ESDE_ERROR_ID");
$currencyLang = "";
$deliveryService = null;
if($DELIVERY_ID > 0)
{
$deliveryService = \Bitrix\Sale\Delivery\Services\Manager::getService($DELIVERY_ID);
if($deliveryService && \Bitrix\Main\Loader::includeModule('currency'))
{
$curFormat = \CCurrencyLang::getCurrencyFormat($deliveryService->getCurrency());
$currencyLang = trim(str_replace("#", '', $curFormat["FORMAT_STRING"]));
}
else
{
$currencyLang = $deliveryService->getCurrency();
}
}
if($deliveryService && $ID <= 0 && isset($_GET["ES_CODE"]) && strlen($_GET["ES_CODE"]) > 0)
{
$embeddedList = $deliveryService->getEmbeddedExtraServicesList();
if(isset($embeddedList[$_GET["ES_CODE"]]))
{
$fields = $embeddedList[$_GET["ES_CODE"]];
$fields["CODE"] = $_GET["ES_CODE"];
$fields["ID"] = strval(mktime());
}
}
$aTabs = array(
array(
"DIV" => "edit_main",
"TAB" => Loc::getMessage("SALE_ESDE_TAB_GENERAL"),
"ICON" => "sale",
"TITLE" => Loc::getMessage("SALE_ESDE_TAB_GENERAL_TITLE")
)
);
$tabControl = new CAdminTabControl("tabControl", $aTabs);
$APPLICATION->SetTitle(Loc::getMessage("SALE_ESDE_PAGE_TITLE").($ID > 0 ? " ID: ".$ID : ""));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
\Bitrix\Sale\Internals\Input\Manager::initJs();
$aMenu = array(
array(
"TEXT" => GetMessage("SALE_ESDE_TO_LIST"),
"LINK" => isset($_GET["back_url"]) ? $_GET["back_url"] : "/bitrix/admin/sale_delivery_service_list.php?lang=".LANGUAGE_ID."&ID=".$DELIVERY_ID,
"ICON" => "btn_list"
)
);
if ($ID > 0 && $saleModulePermissions >= "W")
{
$aMenu[] = array("SEPARATOR" => "Y");
$aMenu[] = array(
"TEXT" => Loc::getMessage("SALE_ESDE_CREATE_NEW"),
"LINK" => "/bitrix/admin/sale_delivery_eservice_edit.php?lang=".LANGUAGE_ID."&DELIVERY_ID=".$DELIVERY_ID.(isset($_REQUEST["back_url"]) ? "&back_url=".urlencode($_REQUEST["back_url"]) : ""),
"ICON" => "btn_new"
);
if(!isset($fields["RIGHTS"]["ADMIN"]) || $fields["RIGHTS"]["ADMIN"] == "Y")
{
$aMenu[] = array(
"TEXT" => Loc::getMessage("SALE_ESDE_DELETE_ITEM"),
"LINK" => "javascript:if(confirm('".Loc::getMessage("SALE_ESDE_CONFIRM_DEL_MESSAGE")."')) window.location='".
"sale_delivery_service_edit.php?lang=".LANG."&ID=".$DELIVERY_ID."&action=delete_extra_service".
"&ES_ID=".$ID."&".bitrix_sessid_get()."'",
"ICON" => "btn_delete"
);
}
}
$context = new CAdminContextMenu($aMenu);
$context->Show();
if(strlen($strError) > 0)
CAdminMessage::ShowMessage(Array("DETAILS"=>$strError, "TYPE"=>"ERROR", "MESSAGE"=>Loc::getMessage("SALE_DSE_ERROR"), "HTML"=>true));
?>