/** @global CDatabase $DB */
/** @global CUser $USER */
/** @global CMain $APPLICATION */
use Bitrix\Main;
use Bitrix\Catalog;
use Bitrix\Catalog\Access\AccessController;
use Bitrix\Catalog\Access\ActionDictionary;
define('NO_AGENT_CHECK', true);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/catalog/prolog.php");
Main\Loader::includeModule('catalog');
$accessController = AccessController::getCurrent();
if (!($accessController->check(ActionDictionary::ACTION_CATALOG_READ) || $accessController->check(ActionDictionary::ACTION_PRODUCT_DISCOUNT_SET)))
{
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
$bReadOnly = !$accessController->check(ActionDictionary::ACTION_PRODUCT_DISCOUNT_SET);
if ($ex = $APPLICATION->GetException())
{
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
ShowError($ex->GetString());
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
die();
}
IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/catalog/admin/cat_discount_coupon_edit.php");
IncludeModuleLangFile(__FILE__);
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/iblock/classes/general/subelement.php');
$intDiscountID = intval($_REQUEST['DISCOUNT_ID']);
$strSubTMP_ID = trim($_REQUEST['TMP_ID']);
$boolDiscount = true;
if (0 >= $intDiscountID)
{
$boolDiscount = false;
}
else
{
$rsDiscounts = CCatalogDiscount::GetList(
array(),
array('ID' => $intDiscountID),
false,
false,
array("ID")
);
if (!($arDiscount = $rsDiscounts->Fetch()))
{
$boolDiscount = false;
}
}
if (!$boolDiscount)
{
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
ShowError(GetMessage('BT_CAT_DISC_SUBCOUPON_DISCOUNT_ID_ABSENT'));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
die();
}
$boolMulti = (isset($_REQUEST['MULTI']) && 'Y' == $_REQUEST['MULTI']);
if (!$boolMulti)
{
$aTabs = array(
array("DIV" => "sub_edit1", "TAB" => GetMessage("CDEN_TAB_DISCOUNT"), "ICON" => "catalog", "TITLE" => GetMessage("CDEN_TAB_DISCOUNT_DESCR")),
);
}
else
{
$aTabs = array(
array("DIV" => "sub_edit1", "TAB" => GetMessage("CDEN_TAB_DISCOUNT_MULTI"), "ICON" => "catalog", "TITLE" => ""),
);
}
$arPostParams = array(
'bxpublic' => 'Y',
);
if (0 < $intDiscountID)
{
$arPostParams['DISCOUNT_ID'] = $intDiscountID;
$arPostParams['sessid'] = bitrix_sessid();
}
$arListUrl = array(
'LINK' => $APPLICATION->GetCurPageParam(),
'POST_PARAMS' => $arPostParams,
);
$errorMessage = "";
$bVarsFromForm = false;
$ID = intval($ID);
$arTypeList = Catalog\DiscountCouponTable::getCouponTypes(true);
if (!$bReadOnly && $_SERVER['REQUEST_METHOD']=="POST" && !empty($_POST['Update']) && check_bitrix_sessid())
{
if (!$boolMulti)
{
$DB->StartTransaction();
$arFields = array(
"ACTIVE" => (isset($_POST['ACTIVE']) && 'Y' == $_POST['ACTIVE'] ? 'Y' : 'N'),
"COUPON" => (isset($_POST["COUPON"]) ? $_POST["COUPON"] : ''),
"DATE_APPLY" => (isset($_POST['DATE_APPLY']) ? $_POST['DATE_APPLY'] : ''),
"ONE_TIME" => (isset($_POST['ONE_TIME']) ? $_POST['ONE_TIME'] : ''),
"DESCRIPTION" => (isset($_POST['DESCRIPTION']) ? $_POST['DESCRIPTION'] : ''),
);
if ($ID > 0)
{
$res = CCatalogDiscountCoupon::Update($ID, $arFields);
}
else
{
$arFields["DISCOUNT_ID"] = (isset($_POST['DISCOUNT_ID']) ? $_POST['DISCOUNT_ID'] : 0);
$ID = CCatalogDiscountCoupon::Add($arFields);
$res = ($ID>0);
}
if (!$res)
{
if ($ex = $APPLICATION->GetException())
$errorMessage .= $ex->GetString()."
";
else
$errorMessage .= (0 < $ID ? str_replace('#ID#', $ID, GetMessage('DSC_CPN_ERR_UPDATE')) : GetMessage('DSC_CPN_ERR_ADD'))."
";
$bVarsFromForm = true;
$DB->Rollback();
}
else
{
$DB->Commit();
?>
die();
}
}
else
{
$DB->StartTransaction();
$arFields = array(
"ONE_TIME" => (isset($_POST['ONE_TIME']) ? $_POST['ONE_TIME'] : '-'),
"COUNT" => (isset($_POST['COUNT']) ? $_POST['COUNT'] : 0),
);
if (!isset($arTypeList[$arFields['ONE_TIME']]))
{
$errorMessage .= GetMessage('BT_CAT_DISC_SUBCOUPON_ERR_COUPON_TYPE_BAD')."
";
$bVarsFromForm = true;
}
if (0 >= $arFields['COUNT'])
{
$errorMessage .= GetMessage('BT_CAT_DISC_SUBCOUPON_ERR_COUNT_BAD')."
";
$bVarsFromForm = true;
}
if (!$bVarsFromForm)
{
for ($i = 0; $i < $arFields['COUNT']; $i++)
{
$CID = CCatalogDiscountCoupon::Add(
array(
"DISCOUNT_ID" => $intDiscountID,
"ACTIVE" => "Y",
"ONE_TIME" => $arFields['ONE_TIME'],
"COUPON" => CatalogGenerateCoupon(),
"DATE_APPLY" => false
)
);
$cRes = ($CID > 0);
if (!$cRes)
{
if ($ex = $APPLICATION->GetException())
$errorMessage .= $ex->GetString()."
";
else
$errorMessage .= GetMessage('BT_CAT_DISCOUNT_EDIT_ERR_COUPON_ADD')."
";
$bVarsFromForm = true;
break;
}
}
}
if (!$bVarsFromForm)
{
$DB->Commit();
?>
die();
}
else
{
$DB->Rollback();
}
}
}
else
{
if (!empty($_REQUEST['dontsave']) && check_bitrix_sessid())
{
?>
die();
}
}
if ($ID > 0)
{
$APPLICATION->SetTitle(str_replace("#ID#", $ID, GetMessage("DSC_TITLE_UPDATE")));
}
else
{
if (!$boolMulti)
{
$APPLICATION->SetTitle(GetMessage("DSC_TITLE_ADD"));
}
else
{
$APPLICATION->SetTitle(GetMessage("DSC_TITLE_ADD_MULTI"));
}
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
$tabControl = new CAdminSubForm("subcoupons_edit", $aTabs, false, true, $arListUrl, false);
$tabControl->SetShowSettings(false);
if (!$boolMulti)
{
$arDefaultValues = array(
'DISCOUNT_ID' => $intDiscountID,
'ACTIVE' => 'Y',
'ONE_TIME' => Catalog\DiscountCouponTable::TYPE_ONE_ORDER,
'COUPON' => '',
'DATE_APPLY' => '',
'DESCRIPTION' => '',
);
$arSelect = array_merge(array('ID'), array_keys($arDefaultValues));
$arCoupon = array();
$rsCoupons = CCatalogDiscountCoupon::GetList(array(), array("ID" => $ID), false, false, $arSelect);
if (!($arCoupon = $rsCoupons->Fetch()))
{
$ID = 0;
$arCoupon = $arDefaultValues;
}
if ($bVarsFromForm)
{
if (0 < $ID)
{
$arCoupon = $arFields;
$arCoupon['DISCOUNT_ID'] = $intDiscountID;
}
else
{
$arCoupon = $arFields;
}
}
CAdminMessage::ShowMessage($errorMessage);
$tabControl->BeginPrologContent();
$tabControl->EndPrologContent();
$tabControl->BeginEpilogContent();
echo GetFilterHiddens("filter_");?>
echo bitrix_sessid_post()?>
$tabControl->EndEpilogContent();
$tabControl->Begin(array(
"FORM_ACTION" => '/bitrix/admin/cat_subcoupon_edit.php?lang='.LANGUAGE_ID,
));
$tabControl->BeginNextFormTab();
if ($ID > 0)
$tabControl->AddViewField('ID','ID:',$ID,false);
$tabControl->AddCheckBoxField("ACTIVE", GetMessage("DSC_ACTIVE").":", false, "Y", $arCoupon['ACTIVE'] == "Y");
$tabControl->BeginCustomField('ONE_TIME', GetMessage('DSC_COUPON_TYPE').':', true);
?>