require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php");
$saleModulePermissions = $APPLICATION->GetGroupRight("sale");
if ($saleModulePermissions == "D")
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/include.php");
if(!CBXFeatures::IsFeatureEnabled('SaleRecurring'))
{
require($DOCUMENT_ROOT."/bitrix/modules/main/include/prolog_admin_after.php");
ShowError(GetMessage("SALE_FEATURE_NOT_ALLOW"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
die();
}
IncludeModuleLangFile(__FILE__);
$errorMessage = "";
$bVarsFromForm = false;
ClearVars();
$ID = IntVal($ID);
$simpleForm = COption::GetOptionString("sale", "lock_catalog", "Y");
$bSimpleForm = (($simpleForm=="Y") ? True : False);
if ($bSimpleForm)
{
if ($ID > 0)
{
if ($arRecurring = CSaleRecurring::GetByID($ID))
{
if ($arRecurring["MODULE"] != "catalog"
|| $arRecurring["CALLBACK_FUNC"] != "CatalogRecurringCallback"
|| $arRecurring["PRODUCT_PROVIDER_CLASS"] != "CCatalogProductProvider")
{
$bSimpleForm = False;
}
}
}
}
if ($REQUEST_METHOD=="POST" && strlen($Update)>0 && $saleModulePermissions >= "U" && check_bitrix_sessid())
{
if ($ID <= 0 && $saleModulePermissions < "W")
$errorMessage .= GetMessage("SRE_NO_PERMS2ADD").".
";
$NEXT_DATE = Trim($NEXT_DATE);
if (strlen($NEXT_DATE) <= 0)
$errorMessage .= GetMessage("SRE_EMPTY_NEXT").".
";
if ($saleModulePermissions >= "W")
{
$USER_ID = IntVal($USER_ID);
if ($USER_ID <= 0)
$errorMessage .= GetMessage("SRE_EMPTY_USER").".
";
$MODULE = Trim($MODULE);
if (strlen($MODULE) <= 0)
$errorMessage .= GetMessage("SRE_EMPTY_MODULE").".
";
$PRODUCT_ID = IntVal($PRODUCT_ID);
if ($PRODUCT_ID <= 0)
$errorMessage .= GetMessage("SRE_EMPTY_PRODUCT").".
";
$CALLBACK_FUNC = Trim($CALLBACK_FUNC);
$PRODUCT_PROVIDER_CLASS = Trim($PRODUCT_PROVIDER_CLASS);
if (!(strlen($CALLBACK_FUNC) > 0 || strlen($PRODUCT_PROVIDER_CLASS) > 0))
{
$errorMessage .= GetMessage("SRE_EMPTY_CALLBACK").".
";
}
}
$ORDER_ID = IntVal($ORDER_ID);
if ($ORDER_ID <= 0)
$errorMessage .= GetMessage("SRE_EMPTY_BASE_ORDER").".
";
if (strlen($errorMessage) <= 0)
{
$CANCELED = (($CANCELED == "Y") ? "Y" : "N");
$PRIOR_DATE = Trim($PRIOR_DATE);
$REMAINING_ATTEMPTS = IntVal($REMAINING_ATTEMPTS);
$SUCCESS_PAYMENT = (($SUCCESS_PAYMENT == "Y") ? "Y" : "N");
$arFields = array(
"CANCELED" => $CANCELED,
"PRIOR_DATE" => ((strlen($PRIOR_DATE) > 0) ? $PRIOR_DATE : False),
"NEXT_DATE" => $NEXT_DATE,
"DESCRIPTION" => ((strlen($DESCRIPTION) > 0) ? $DESCRIPTION : False),
"CANCELED_REASON" => ((strlen($CANCELED_REASON) > 0) ? $CANCELED_REASON : False),
"ORDER_ID" => $ORDER_ID,
"REMAINING_ATTEMPTS" => $REMAINING_ATTEMPTS,
"SUCCESS_PAYMENT" => $SUCCESS_PAYMENT
);
if ($saleModulePermissions >= "W")
{
$arFields["USER_ID"] = $USER_ID;
$arFields["MODULE"] = $MODULE;
$arFields["PRODUCT_ID"] = $PRODUCT_ID;
$arFields["PRODUCT_NAME"] = $PRODUCT_NAME;
$arFields["PRODUCT_URL"] = $PRODUCT_URL;
$arFields["CALLBACK_FUNC"] = $CALLBACK_FUNC;
$arFields["PRODUCT_PROVIDER_CLASS"] = $PRODUCT_PROVIDER_CLASS;
}
if ($ID > 0)
{
$res = CSaleRecurring::Update($ID, $arFields);
}
else
{
$ID = CSaleRecurring::Add($arFields);
$res = ($ID > 0);
}
if (!$res)
{
$bVarsFromForm = true;
if ($ex = $APPLICATION->GetException())
$errorMessage .= $ex->GetString().".
";
else
$errorMessage .= GetMessage("SRE_ERROR_SAVING").".
";
}
else
{
if (strlen($apply)<=0)
LocalRedirect("/bitrix/admin/sale_recurring_admin.php?lang=".LANGUAGE_ID.GetFilterParams("filter_", false));
}
}
else
{
$bVarsFromForm = true;
}
}
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php");
if ($ID > 0)
$APPLICATION->SetTitle(GetMessage("SRE_TITLE_UPDATE"));
else
$APPLICATION->SetTitle(GetMessage("SRE_TITLE_ADD"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
$dbRecurring = CSaleRecurring::GetList(
array(),
array("ID" => $ID),
false,
false,
array("ID", "USER_ID", "MODULE", "PRODUCT_ID", "PRODUCT_NAME", "PRODUCT_URL", "PRODUCT_PRICE_ID", "RECUR_SCHEME_TYPE", "RECUR_SCHEME_LENGTH", "WITHOUT_ORDER", "PRICE", "CURRENCY", "ORDER_ID", "CANCELED", "CALLBACK_FUNC", "PRODUCT_PROVIDER_CLASS", "DESCRIPTION", "TIMESTAMP_X", "PRIOR_DATE", "NEXT_DATE", "REMAINING_ATTEMPTS", "SUCCESS_PAYMENT", "USER_LOGIN", "USER_NAME", "USER_LAST_NAME", "CANCELED_REASON")
);
if (!$dbRecurring->ExtractFields("str_"))
{
if ($saleModulePermissions < "W")
$errorMessage .= GetMessage("SRE_NO_PERMS2ADD").".
";
$ID = 0;
$str_CANCELED = "N";
$str_REMAINING_ATTEMPTS = (Defined("SALE_PROC_REC_ATTEMPTS") ? SALE_PROC_REC_ATTEMPTS : 3);
$str_SUCCESS_PAYMENT = "Y";
}
if ($bVarsFromForm)
$DB->InitTableVarsForEdit("b_sale_recurring", "", "str_");
$aMenu = array(
array(
"TEXT" => GetMessage("SREN_2FLIST"),
"ICON" => "btn_list",
"LINK" => "/bitrix/admin/sale_recurring_admin.php?lang=".LANGUAGE_ID.GetFilterParams("filter_")
)
);
if ($ID > 0 && $saleModulePermissions >= "U")
{
$aMenu[] = array("SEPARATOR" => "Y");
$aMenu[] = array(
"TEXT" => GetMessage("SREN_NEW_RECURR"),
"ICON" => "btn_new",
"LINK" => "/bitrix/admin/sale_recurring_edit.php?lang=".LANGUAGE_ID.GetFilterParams("filter_")
);
if ($saleModulePermissions >= "W")
{
$aMenu[] = array(
"TEXT" => GetMessage("SREN_DELETE_RECURR"),
"ICON" => "btn_delete",
"LINK" => "javascript:if(confirm('".GetMessageJS("SREN_DELETE_RECURR_CONFIRM")."')) window.location='/bitrix/admin/sale_recurring_admin.php?ID=".$ID."&action=delete&lang=".LANGUAGE_ID."&".bitrix_sessid_get()."#tb';",
"WARNING" => "Y"
);
}
}
$context = new CAdminContextMenu($aMenu);
$context->Show();
if(strlen($errorMessage)>0)
echo CAdminMessage::ShowMessage(Array("DETAILS"=>$errorMessage, "TYPE"=>"ERROR", "MESSAGE"=>GetMessage("SRE_ERROR"), "HTML"=>true));?>