%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/sale/admin/ |
| Current File : //home/bitrix/www/bitrix/modules/sale/admin/discount_edit.php |
<?
/** @global CMain $APPLICATION */
use Bitrix\Main;
use Bitrix\Sale;
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_before.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/sale/prolog.php');
Main\Loader::includeModule('sale');
$selfFolderUrl = $adminPage->getSelfFolderUrl();
$listUrl = $selfFolderUrl."sale_discount.php?lang=".LANGUAGE_ID;
$listUrl = $adminSidePanelHelper->editUrlToPublicPage($listUrl);
$saleModulePermissions = $APPLICATION->GetGroupRight('sale');
$readOnly = ($saleModulePermissions < 'W');
if ($readOnly)
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
$enableDiscountConstructor = Sale\Config\Feature::isDiscountConstructorEnabled();
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(__FILE__);
if (!Main\Loader::includeModule('catalog'))
{
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
ShowError(GetMessage('BX_SALE_DISCOUNT_EDIT_ERR_MODULE_CATALOG_IS_ABSENT'));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
die();
}
$tabList = array(
array('DIV' => 'edit1', 'ICON' => 'sale', 'TAB' => GetMessage("BT_SALE_DISCOUNT_EDIT_TAB_NAME_COMMON"), 'TITLE' => GetMessage("BT_SALE_DISCOUNT_EDIT_TAB_TITLE_COMMON")),
array('DIV' => 'edit3', 'ICON' => 'sale', 'TAB' => GetMessage("BT_SALE_DISCOUNT_EDIT_TAB_NAME_ACTIONS"), 'TITLE' => GetMessage("BT_CAT_DISCOUNT_EDIT_TAB_TITLE_ACTIONS")),
array('DIV' => 'edit2', 'ICON' => 'sale', 'TAB' => GetMessage("BT_SALE_DISCOUNT_EDIT_TAB_NAME_GROUPS"), 'TITLE' => GetMessage("BT_SALE_DISCOUNT_EDIT_TAB_TITLE_GROUPS")),
array('DIV' => 'edit5', 'ICON' => 'sale', 'TAB' => GetMessage('BX_SALE_DISCOUNT_EDIT_TAB_NAME_COUPONS'), 'TITLE' => GetMessage('BX_SALE_DISCOUNT_EDIT_TAB_TITLE_COUPONS')),
array('DIV' => 'edit4', 'ICON' => 'sale', 'TAB' => GetMessage("BT_SALE_DISCOUNT_EDIT_TAB_NAME_MISC"), 'TITLE' => GetMessage("BT_SALE_DISCOUNT_EDIT_TAB_TITLE_MISC")),
);
$control = new CAdminForm("sale_discount", $tabList);
$couponTypes = Sale\Internals\DiscountCouponTable::getCouponTypes(true);
$errors = array();
$boolCondParseError = false;
$boolActParseError = false;
$couponsAdd = false;
$discountID = 0;
$copy = false;
if (isset($_REQUEST['ID']))
{
$discountID = (int)$_REQUEST['ID'];
if ($discountID < 0)
$discountID = 0;
}
if ($discountID > 0)
{
$copy = (isset($_REQUEST['action']) && (string)$_REQUEST['action'] == 'copy');
}
$discountGroupsToShow = [];
if ($adminSidePanelHelper->isPublicSidePanel())
{
if (\Bitrix\Main\Loader::includeModule('crm'))
{
$discountGroupsToShow = \Bitrix\Crm\Order\BuyerGroup::getPublicList();
}
}
else
{
$discountGroupsToShow = Main\GroupTable::getList(array(
'select' => array('ID', 'NAME'),
'order' => array('C_SORT' => 'ASC', 'ID' => 'ASC')
))->fetchAll();
}
$arFields = array();
if (
check_bitrix_sessid()
&& !$readOnly
&& $_SERVER['REQUEST_METHOD'] == 'POST'
&& !empty($_POST['AJAX_ACTION'])
)
{
switch ($_POST['AJAX_ACTION'])
{
case 'getUserName':
$userId = (int)$_POST['USER_ID'];
$APPLICATION->RestartBuffer();
echo Main\Web\Json::encode(array(
'userId' => $userId,
'name' => \Bitrix\Sale\Helpers\Admin\OrderEdit::getUserName($userId),
));
CMain::FinalActions();
die;
break;
}
}
if (
check_bitrix_sessid()
&& !$readOnly
&& $_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST['Update']) && (string)$_POST['Update'] == 'Y'
)
{
$adminSidePanelHelper->decodeUriComponent();
$CONDITIONS = null;
$ACTIONS = null;
$obCond3 = new CSaleCondTree();
$boolCond = $obCond3->Init(BT_COND_MODE_PARSE, BT_COND_BUILD_SALE, array('INIT_CONTROLS' => array(
'SITE_ID' => $_POST['LID'],
'CURRENCY' => CSaleLang::GetLangCurrency($_POST['LID']),
)));
if (!$boolCond)
{
if ($ex = $APPLICATION->GetException())
$errors[] = $ex->GetString();
else
$errors[] = (0 < $discountID ? str_replace('#ID#', $discountID, GetMessage('BT_SALE_DISCOUNT_EDIT_ERR_UPDATE')) : GetMessage('BT_SALE_DISCOUNT_EDIT_ERR_ADD'));
}
else
{
$boolCond = false;
if (array_key_exists('CONDITIONS', $_POST) && array_key_exists('CONDITIONS_CHECK', $_POST))
{
if (is_string($_POST['CONDITIONS']) && is_string($_POST['CONDITIONS_CHECK']) && md5($_POST['CONDITIONS']) == $_POST['CONDITIONS_CHECK'])
{
$CONDITIONS = base64_decode($_POST['CONDITIONS']);
if (CheckSerializedData($CONDITIONS))
{
$CONDITIONS = unserialize($CONDITIONS);
$boolCond = true;
}
else
{
$boolCondParseError = true;
}
}
}
if (!$boolCond)
$CONDITIONS = $obCond3->Parse();
if (empty($CONDITIONS))
{
if ($ex = $APPLICATION->GetException())
$errors[] = $ex->GetString();
else
$errors[] = (0 < $discountID ? str_replace('#ID#', $discountID, GetMessage('BT_SALE_DISCOUNT_EDIT_ERR_UPDATE')) : GetMessage('BT_SALE_DISCOUNT_EDIT_ERR_ADD'));
$boolCondParseError = true;
}
}
$obAct3 = new CSaleActionTree();
$boolAct = $obAct3->Init(BT_COND_MODE_PARSE, BT_COND_BUILD_SALE_ACTIONS, array('PREFIX' => 'actrl', 'INIT_CONTROLS' => array(
'SITE_ID' => $_POST['LID'],
'CURRENCY' => CSaleLang::GetLangCurrency($_POST['LID']),
)));
if (!$boolAct)
{
if ($ex = $APPLICATION->GetException())
$errors[] = $ex->GetString();
else
$errors[] = (0 < $discountID ? str_replace('#ID#', $discountID, GetMessage('BT_SALE_DISCOUNT_EDIT_ERR_UPDATE')) : GetMessage('BT_SALE_DISCOUNT_EDIT_ERR_ADD'));
}
else
{
$boolAct = false;
if (array_key_exists('ACTIONS', $_POST) && array_key_exists('ACTIONS_CHECK', $_POST))
{
if (is_string($_POST['ACTIONS']) && is_string($_POST['ACTIONS_CHECK']) && md5($_POST['ACTIONS']) == $_POST['ACTIONS_CHECK'])
{
$ACTIONS = base64_decode($_POST['ACTIONS']);
if (CheckSerializedData($ACTIONS))
{
$ACTIONS = unserialize($ACTIONS);
$boolAct = true;
}
else
{
$boolActParseError = true;
}
}
}
if (!$boolAct)
$ACTIONS = $obAct3->Parse();
if (empty($ACTIONS))
{
if ($ex = $APPLICATION->GetException())
$errors[] = $ex->GetString();
else
$errors[] = (0 < $discountID ? str_replace('#ID#', $discountID, GetMessage('BT_SALE_DISCOUNT_EDIT_ERR_UPDATE')) : GetMessage('BT_SALE_DISCOUNT_EDIT_ERR_ADD'));
$boolActParseError = true;
}
}
$arGroupID = array();
if (isset($_POST['USER_GROUPS']) && is_array($_POST['USER_GROUPS']))
{
$arGroupID = $_POST['USER_GROUPS'];
}
if ($adminSidePanelHelper->isPublicSidePanel() && \Bitrix\Main\Loader::includeModule('crm'))
{
$discountGroupList = [];
$rsDiscountGroups = CSaleDiscount::GetDiscountGroupList([], ['DISCOUNT_ID' => $discountID], false, false, ['GROUP_ID']);
while ($arDiscountGroup = $rsDiscountGroups->Fetch())
{
$discountGroupList[] = (int)$arDiscountGroup['GROUP_ID'];
}
$arGroupID = \Bitrix\Crm\Order\BuyerGroup::prepareGroupIds($discountGroupList, $arGroupID);
}
Main\Type\Collection::normalizeArrayValuesByInt($arGroupID, true);
$arFields = array(
"LID" => (array_key_exists('LID', $_POST) ? $_POST['LID'] : ''),
"NAME" => (array_key_exists('NAME', $_POST) ? $_POST['NAME'] : ''),
"ACTIVE_FROM" => (array_key_exists('ACTIVE_FROM', $_POST) ? $_POST['ACTIVE_FROM'] : ''),
"ACTIVE_TO" => (array_key_exists('ACTIVE_TO', $_POST) ? $_POST['ACTIVE_TO'] : ''),
"ACTIVE" => (array_key_exists('ACTIVE', $_POST) && 'Y' == $_POST['ACTIVE'] ? 'Y' : 'N'),
"SORT" => (array_key_exists('SORT', $_POST) ? $_POST['SORT'] : 500),
"PRIORITY" => (array_key_exists('PRIORITY', $_POST) ? $_POST['PRIORITY'] : ''),
"LAST_DISCOUNT" => (array_key_exists('LAST_DISCOUNT', $_POST) && 'N' == $_POST['LAST_DISCOUNT'] ? 'N' : 'Y'),
"LAST_LEVEL_DISCOUNT" => (array_key_exists('LAST_LEVEL_DISCOUNT', $_POST) && 'N' == $_POST['LAST_LEVEL_DISCOUNT'] ? 'N' : 'Y'),
"XML_ID" => (array_key_exists('XML_ID', $_POST) ? $_POST['XML_ID'] : ''),
'CONDITIONS' => $CONDITIONS,
'ACTIONS' => $ACTIONS,
'USER_GROUPS' => $arGroupID,
);
$additionalFields = array();
if ($discountID == 0 || $copy)
{
$additionalFields = array(
'COUPON_ADD' => (isset($_POST['COUPON_ADD']) && $_POST['COUPON_ADD'] == 'Y' ? 'Y' : 'N'),
'COUPON_COUNT' => (isset($_POST['COUPON_COUNT']) ? (int)$_POST['COUPON_COUNT'] : 0)
);
if ($additionalFields['COUPON_ADD'] == 'Y')
{
if ($additionalFields['COUPON_COUNT'] <= 0)
{
$errors[] = GetMessage('BX_SALE_DISCOUNT_EDIT_ERR_COUPONS_COUNT');
}
$couponsFields = array(
'DISCOUNT_ID' => $discountID,
'ACTIVE' => 'Y'
);
if (isset($_POST['COUPON']))
{
$couponsFields['TYPE'] = (isset($_POST['COUPON']['TYPE']) ? (int)$_POST['COUPON']['TYPE'] : 0);
$couponsFields['ACTIVE_FROM'] = (
!empty($_POST['COUPON']['ACTIVE_FROM'])
? Main\Type\DateTime::createFromUserTime($_POST['COUPON']['ACTIVE_FROM'])
: null
);
$couponsFields['ACTIVE_TO'] = (
!empty($_POST['COUPON']['ACTIVE_TO'])
? Main\Type\DateTime::createFromUserTime($_POST['COUPON']['ACTIVE_TO'])
: null
);
$couponsFields['MAX_USE'] = (isset($_POST['COUPON']['MAX_USE']) ? (int)$_POST['COUPON']['MAX_USE'] : 0);
}
$couponsResult = Sale\Internals\DiscountCouponTable::checkPacket($couponsFields, ($discountID <= 0));
if (!$couponsResult->isSuccess(true))
{
$errors = (empty($errors) ? $couponsResult->getErrorMessages() : array_merge($errors, $couponsResult->getErrorMessages()));
}
unset($couponsResult);
$additionalFields['COUPON'] = $couponsFields;
$couponsAdd = true;
}
}
if (empty($errors))
{
if ($discountID > 0 && !$copy)
{
$arFields['PRESET_ID'] = null;
$arFields['PREDICTIONS'] = null;
if (!CSaleDiscount::Update($discountID, $arFields))
{
if ($ex = $APPLICATION->GetException())
$errors[] = $ex->GetString();
else
$errors[] = str_replace('#ID#', $discountID, GetMessage('BT_SALE_DISCOUNT_EDIT_ERR_UPDATE'));
}
}
else
{
unset($arFields['PRESET_ID'], $arFields['PREDICTIONS'], $arFields['PREDICTIONS_APP']);
$discountID = (int)CSaleDiscount::Add($arFields);
if ($discountID <= 0)
{
if ($ex = $APPLICATION->GetException())
$errors[] = $ex->GetString();
else
$errors[] = GetMessage('BT_SALE_DISCOUNT_EDIT_ERR_ADD');
}
else
{
if ($couponsAdd)
{
$couponsFields['DISCOUNT_ID'] = $discountID;
$couponsResult = Sale\Internals\DiscountCouponTable::addPacket(
$couponsFields,
$additionalFields['COUPON_COUNT']
);
if (!$couponsResult->isSuccess())
{
$errors = $couponsResult->getErrorMessages();
}
}
}
}
}
if (empty($errors))
{
if ($adminSidePanelHelper->isAjaxRequest())
{
$adminSidePanelHelper->sendSuccessResponse("base", array("ID" => $discountID));
}
if (empty($_POST['apply']))
{
$adminSidePanelHelper->localRedirect($listUrl);
LocalRedirect($listUrl);
}
else
{
$applyUrl = $selfFolderUrl."sale_discount_edit.php?lang=".LANGUAGE_ID."&ID=".$discountID.'&'.$control->ActiveTabParam();
$applyUrl = $adminSidePanelHelper->setDefaultQueryParams($applyUrl);
LocalRedirect($applyUrl);
}
}
else
{
$adminSidePanelHelper->sendJsonErrorResponse(implode("; ", $errors));
}
}
if ($discountID > 0 && !$copy)
$APPLICATION->SetTitle(GetMessage('BT_SALE_DISCOUNT_EDIT_MESS_UPDATE_DISCOUNT', array('#ID#' => $discountID)));
else
$APPLICATION->SetTitle(GetMessage('BT_SALE_DISCOUNT_EDIT_MESS_ADD_DISCOUNT'));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
$defaultValues = array(
'LID' => '',
'NAME' => '',
'CURRENCY' => '',
'DISCOUNT_VALUE' => '',
'DISCOUNT_TYPE' => 'P',
'ACTIVE' => 'Y',
'SORT' => '100',
'ACTIVE_FROM' => '',
'ACTIVE_TO' => '',
'PRIORITY' => 1,
'LAST_DISCOUNT' => 'Y',
'LAST_LEVEL_DISCOUNT' => 'N',
'CONDITIONS' => '',
'XML_ID' => '',
'ACTIONS' => '',
'PRESET_ID' => null,
);
if (isset($_REQUEST['LID']))
$defaultValues['LID'] = trim($_REQUEST['LID']);
if ('' == $defaultValues['LID'])
$defaultValues['LID'] = 's1';
$defaultCoupons = array(
'COUPON_ADD' => 'N',
'COUPON_COUNT' => '',
'COUPON' => array(
'ACTIVE_FROM' => null,
'ACTIVE_TO' => null,
'TYPE' => Sale\Internals\DiscountCouponTable::TYPE_ONE_ORDER,
'MAX_USE' => 0
)
);
$arSelect = array_merge(array('ID'), array_keys($defaultValues));
$arDiscount = array();
$arDiscountGroupList = array();
$coupons = $defaultCoupons;
$rsDiscounts = CSaleDiscount::GetList(array(), array("ID" => $discountID), false, false, $arSelect);
if (!($arDiscount = $rsDiscounts->Fetch()))
{
$discountID = 0;
$arDiscount = $defaultValues;
}
else
{
$rsDiscountGroups = CSaleDiscount::GetDiscountGroupList(array(),array('DISCOUNT_ID' => $discountID),false,false,array('GROUP_ID'));
while ($arDiscountGroup = $rsDiscountGroups->Fetch())
{
$arDiscountGroupList[] = (int)$arDiscountGroup['GROUP_ID'];
}
}
if (!empty($arDiscount['PRESET_ID']))
{
$redirectUrl = $selfFolderUrl.'sale_discount_preset_detail.php?DISCOUNT_ID='.$arDiscount['ID'].'&from_list=coupon&lang='.LANGUAGE_ID;
$redirectUrl = $adminSidePanelHelper->setDefaultQueryParams($redirectUrl);
$adminSidePanelHelper->localRedirect($redirectUrl);
LocalRedirect($redirectUrl);
}
if (!empty($errors))
{
if ($boolCondParseError || $boolActParseError)
{
$mxTempo = $arDiscount['CONDITIONS'];
$mxTempo2 = $arDiscount['ACTIONS'];
$arDiscount = $arFields;
if ($boolCondParseError)
$arDiscount['CONDITIONS'] = $mxTempo;
if ($boolActParseError)
$arDiscount['ACTIONS'] = $mxTempo2;
unset($mxTempo);
unset($mxTempo2);
}
else
{
$arDiscount = $arFields;
}
$arDiscountGroupList = $arFields['USER_GROUPS'];
if (isset($additionalFields))
$coupons = array_merge($coupons, $additionalFields);
}
$contextMenuItems = array(
array(
"TEXT" => GetMessage("BT_SALE_DISCOUNT_EDIT_MESS_DISCOUNT_LIST"),
"LINK" => $listUrl,
"ICON" => "btn_list"
)
);
if ($discountID > 0 && $saleModulePermissions == 'W')
{
if (!$copy)
{
$addUrl = $selfFolderUrl."sale_discount_edit.php?lang=".LANGUAGE_ID;
$addUrl = $adminSidePanelHelper->editUrlToPublicPage($addUrl);
if (!$adminSidePanelHelper->isPublicFrame())
$addUrl = $adminSidePanelHelper->setDefaultQueryParams($addUrl);
$contextMenuItems[] = array(
"TEXT" => GetMessage("BT_SALE_DISCOUNT_EDIT_MESS_NEW_DISCOUNT"),
"LINK" => $addUrl,
"ICON" => "btn_new"
);
$copyUrl = $selfFolderUrl."sale_discount_edit.php?lang=".LANGUAGE_ID."&ID=".$discountID."&action=copy";
$copyUrl = $adminSidePanelHelper->editUrlToPublicPage($copyUrl);
if (!$adminSidePanelHelper->isPublicFrame())
$copyUrl = $adminSidePanelHelper->setDefaultQueryParams($copyUrl);
$contextMenuItems[] = array(
"TEXT" => GetMessage("BT_SALE_DISCOUNT_EDIT_MESS_COPY_DISCOUNT"),
"LINK" => $copyUrl,
"ICON" => "btn_copy",
);
$deleteUrl = $selfFolderUrl."sale_discount.php?action=delete&ID[]=".$discountID."&lang=".LANGUAGE_ID."&".bitrix_sessid_get();
$buttonAction = "LINK";
if ($adminSidePanelHelper->isPublicFrame())
{
$deleteUrl = $adminSidePanelHelper->editUrlToPublicPage($deleteUrl);
$buttonAction = "ONCLICK";
}
$contextMenuItems[] = array(
"TEXT" => GetMessage("BT_SALE_DISCOUNT_EDIT_MESS_DELETE_DISCOUNT"),
$buttonAction => "javascript:if(confirm('".GetMessageJS("BT_SALE_DISCOUNT_EDIT_MESS_DELETE_DISCOUNT_CONFIRM")."')) top.window.location.href='".$deleteUrl."';",
"WARNING" => "Y",
"ICON" => "btn_delete"
);
}
}
$contextMenu = new CAdminContextMenu($contextMenuItems);
$contextMenu->Show();
unset($contextMenu, $contextMenuItems);
if (!empty($errors))
{
$errorMessage = new CAdminMessage(
array(
"DETAILS" => implode('<br>', $errors),
"TYPE" => "ERROR",
"MESSAGE" => GetMessage("BT_SALE_DISCOUNT_EDIT_MESS_SAVE_ERROR"),
"HTML" => true
)
);
echo $errorMessage->Show();
unset($errorMessage);
}
$io = CBXVirtualIo::GetInstance();
$hintPath = '/bitrix/images/sale/discount/';
$hintLastDiscountImageName = $hintPath.'hint_last_discount_'.LANGUAGE_ID.'.png';
$hintSizes = '';
if (!$io->FileExists($_SERVER['DOCUMENT_ROOT'].$hintLastDiscountImageName))
{
$hintLastDiscountImageName = $hintPath.'hint_last_discount_'.Main\Localization\Loc::getDefaultLang(LANGUAGE_ID).'.png';
if (!$io->FileExists($_SERVER['DOCUMENT_ROOT'].$hintLastDiscountImageName))
$hintLastDiscountImageName = '';
}
if ($hintLastDiscountImageName !== '')
{
$imgSizes = getimagesize($io->GetPhysicalName($_SERVER['DOCUMENT_ROOT'].$hintLastDiscountImageName));
if (!empty($imgSizes))
$hintSizes = $imgSizes[3];
unset($imgSizes);
}
$arSiteList = array();
$siteIterator = Main\SiteTable::getList(array(
'select' => array('LID', 'NAME', 'SORT'),
'order' => array('SORT' => 'ASC')
));
while ($site = $siteIterator->fetch())
{
$saleSite = (string)Main\Config\Option::get('sale', 'SHOP_SITE_'.$site['LID']);
if ($site['LID'] == $saleSite || $site['LID'] == $arDiscount['LID'])
$arSiteList[$site['LID']] = '('.$site['LID'].') '.$site['NAME'];
}
unset($site, $siteIterator);
$control->BeginPrologContent();
CJSCore::Init(array('date'));
$control->EndPrologContent();
$control->BeginEpilogContent();
echo GetFilterHiddens("filter_");?>
<input type="hidden" name="Update" value="Y">
<input type="hidden" name="lang" value="<? echo LANGUAGE_ID; ?>">
<input type="hidden" name="ID" value="<? echo $discountID; ?>">
<?
if ($copy)
{
?><input type="hidden" name="action" value="copy"><?
}
echo bitrix_sessid_post();
$control->EndEpilogContent();
$formActionUrl = $selfFolderUrl.'sale_discount_edit.php?lang='.LANGUAGE_ID;
$formActionUrl = $adminSidePanelHelper->setDefaultQueryParams($formActionUrl);
$control->Begin(array("FORM_ACTION" => $formActionUrl));
$control->BeginNextFormTab();
if ($discountID > 0 && !$copy)
$control->AddViewField('ID','ID:',$discountID,false);
$control->AddCheckBoxField("ACTIVE", GetMessage("SDEN_ACTIVE").":", false, "Y", $arDiscount['ACTIVE'] == "Y");
$control->AddDropDownField("LID", GetMessage('SDEN_SITE').':', true, $arSiteList, $arDiscount['LID']);
$control->AddEditField("NAME", GetMessage("BT_SALE_DISCOUNT_EDIT_FIELDS_NAME").":", false, array("size" => 50, "maxlength" => 255), htmlspecialcharsbx($arDiscount['NAME']));
$control->BeginCustomField("PERIOD", GetMessage('SDEN_PERIOD').":",false);
?><tr id="tr_PERIOD">
<td width="40%"><? echo $control->GetCustomLabelHTML(); ?></td>
<td width="60%"><?
$periodValue = '';
if ('' != $arDiscount['ACTIVE_FROM'] || '' != $arDiscount['ACTIVE_TO'])
$periodValue = CAdminCalendar::PERIOD_INTERVAL;
echo CAdminCalendar::CalendarPeriodCustom(
'ACTIVE_FROM',
'ACTIVE_TO',
$arDiscount['ACTIVE_FROM'],
$arDiscount['ACTIVE_TO'],
true,
19,
true,
array(
CAdminCalendar::PERIOD_EMPTY => GetMessage('BT_SALE_DISCOUNT_EDIT_CALENDARE_PERIOD_EMPTY'),
CAdminCalendar::PERIOD_INTERVAL => GetMessage('BT_SALE_DISCOUNT_EDIT_CALENDARE_PERIOD_INTERVAL')
),
$periodValue
);
?></td>
</tr><?
$control->EndCustomField("PERIOD",
'<input type="hidden" name="ACTIVE_FROM" value="'.htmlspecialcharsbx($arDiscount['ACTIVE_FROM']).'">'.
'<input type="hidden" name="ACTIVE_TO" value="'.htmlspecialcharsbx($arDiscount['ACTIVE_FROM']).'">'
);
$control->AddSection('BT_SALE_DISCOUNT_SECT_PRIORITY', GetMessage('BT_SALE_DISCOUNT_SECTION_PRIORITY'));
$control->BeginCustomField('PRIORITY', GetMessage("BT_SALE_DISCOUNT_EDIT_FIELDS_PRIORITY").':', false);
?><tr id="tr_PRIORITY">
<td width="40%"><span id="tr_HELP_notice"></span> <? echo $control->GetCustomLabelHTML(); ?><br /><? echo GetMessage('BT_SALE_DISCOUNT_EDIT_FIELDS_PRIORITY_DESCR'); ?></td>
<td width="60%">
<input type="text" name="PRIORITY" size="20" maxlength="20" value="<? echo intval($arDiscount['PRIORITY']); ?>">
</td>
</tr><?
$control->EndCustomField("PRIORITY",
'<input type="hidden" name="PRIORITY" value="'.intval($arDiscount['PRIORITY']).'">'
);
$control->BeginCustomField('SORT', GetMessage("BT_SALE_DISCOUNT_EDIT_FIELDS_SORT_2").':', false);
?><tr id="tr_SORT">
<td width="40%"><span id="tr_HELP_notice2"></span> <? echo $control->GetCustomLabelHTML(); ?><br /><? echo GetMessage('BT_SALE_DISCOUNT_EDIT_FIELDS_SORT_DESCR'); ?></td>
<td width="60%">
<input type="text" name="SORT" size="20" maxlength="20" value="<? echo intval($arDiscount['SORT']); ?>">
</td>
</tr><?
$control->EndCustomField("SORT",
'<input type="hidden" name="SORT" value="'.intval($arDiscount['SORT']).'">'
);
$control->BeginCustomField("LAST_LEVEL_DISCOUNT", GetMessage('BT_SALE_DISCOUNT_EDIT_FIELDS_LAST_LEVEL_DISCOUNT').":",false);
?><tr id="tr_LAST_LEVEL_DISCOUNT">
<td width="40%"><span id="tr_HELP_notice3"></span> <? echo $control->GetCustomLabelHTML(); ?>
</td>
<td width="60%">
<input type="hidden" value="N" name="LAST_LEVEL_DISCOUNT">
<input type="checkbox" value="Y" name="LAST_LEVEL_DISCOUNT" <? echo ('Y' == $arDiscount['LAST_LEVEL_DISCOUNT']? 'checked' : '');?>>
</td>
</tr><?
$control->EndCustomField("LAST_LEVEL_DISCOUNT",
'<input type="hidden" name="LAST_LEVEL_DISCOUNT" value="'.htmlspecialcharsbx($arDiscount['LAST_LEVEL_DISCOUNT']).'">'
);
$control->BeginCustomField("LAST_DISCOUNT", GetMessage('BT_SALE_DISCOUNT_EDIT_FIELDS_LAST_DISCOUNT').":",false);
?><tr id="tr_LAST_DISCOUNT">
<td width="40%"><span id="tr_HELP_notice4"></span> <? echo $control->GetCustomLabelHTML(); ?>
</td>
<td width="60%">
<input type="hidden" value="N" name="LAST_DISCOUNT">
<input type="checkbox" value="Y" name="LAST_DISCOUNT" <? echo ('Y' == $arDiscount['LAST_DISCOUNT']? 'checked' : '');?>>
</td>
</tr><?
$control->EndCustomField("LAST_DISCOUNT",
'<input type="hidden" name="LAST_DISCOUNT" value="'.htmlspecialcharsbx($arDiscount['LAST_DISCOUNT']).'">'
);
$control->BeginNextFormTab();
$control->AddSection("BT_SALE_DISCOUNT_SECT_APP", GetMessage("BT_SALE_DISCOUNT_SECTIONS_APP"));
$control->BeginCustomField("ACTIONS", GetMessage('BT_SALE_DISCOUNT_EDIT_FIELDS_APP').":",false);
?><tr id="ACTIONS">
<td valign="top" colspan="2"><div id="tree_actions" style="position: relative; z-index: 1;"></div><?
if (!is_array($arDiscount['ACTIONS']))
{
if (CheckSerializedData($arDiscount['ACTIONS']))
$arDiscount['ACTIONS'] = unserialize($arDiscount['ACTIONS']);
else
$arDiscount['ACTIONS'] = '';
}
$arCondParams = array(
'FORM_NAME' => 'sale_discount_form',
'CONT_ID' => 'tree_actions',
'JS_NAME' => 'JSSaleAct',
'PREFIX' => 'actrl',
'INIT_CONTROLS' => array(
'SITE_ID' => $arDiscount['LID'],
'CURRENCY' => CSaleLang::GetLangCurrency($arDiscount['LID']),
),
'SYSTEM_MESSAGES' => array(
'SELECT_CONTROL' => GetMessage('BT_SALE_DISCOUNT_ACTIONS_SELECT_CONTROL'),
'ADD_CONTROL' => GetMessage('BT_SALE_DISCOUNT_ACTIONS_ADD_CONTROL'),
'DELETE_CONTROL' => GetMessage('BT_SALE_DISCOUNT_ACTIONS_DELETE_CONTROL'),
),
);
$obAct = new CSaleActionTree();
$boolAct = $obAct->Init(BT_COND_MODE_DEFAULT, BT_COND_BUILD_SALE_ACTIONS, $arCondParams);
if (!$boolAct)
{
if ($ex = $APPLICATION->GetException())
echo $ex->GetString()."<br>";
}
else
{
$obAct->Show($arDiscount['ACTIONS']);
}
?></td>
</tr><?
$strApp = base64_encode(serialize($arDiscount['ACTIONS']));
$control->EndCustomField('ACTIONS',
'<input type="hidden" name="ACTIONS" value="'.htmlspecialcharsbx($strApp).'">'.
'<input type="hidden" name="ACTIONS_CHECK" value="'.htmlspecialcharsbx(md5($strApp)).'">'
);
$control->AddSection("BT_SALE_DISCOUNT_SECT_COND", GetMessage("BT_SALE_DISCOUNT_SECTIONS_COND_ADD"));
$control->BeginCustomField("CONDITIONS", GetMessage('BT_SALE_DISCOUNT_EDIT_FIELDS_COND_ADD').":",false);
?><tr id="tr_CONDITIONS">
<td valign="top" colspan="2"><div id="tree" style="position: relative; z-index: 1;"></div><?
if (!is_array($arDiscount['CONDITIONS']))
{
if (CheckSerializedData($arDiscount['CONDITIONS']))
$arDiscount['CONDITIONS'] = unserialize($arDiscount['CONDITIONS']);
else
$arDiscount['CONDITIONS'] = '';
}
$arCondParams = array(
'FORM_NAME' => 'sale_discount_form',
'CONT_ID' => 'tree',
'JS_NAME' => 'JSSaleCond',
'INIT_CONTROLS' => array(
'SITE_ID' => $arDiscount['LID'],
'CURRENCY' => CSaleLang::GetLangCurrency($arDiscount['LID']),
),
);
$obCond = new CSaleCondTree();
$boolCond = $obCond->Init(BT_COND_MODE_DEFAULT, BT_COND_BUILD_SALE, $arCondParams);
if (!$boolCond)
{
if ($ex = $APPLICATION->GetException())
echo $ex->GetString()."<br>";
}
else
{
$obCond->Show($arDiscount['CONDITIONS']);
}
?></td>
</tr><?
$strCond = base64_encode(serialize($arDiscount['CONDITIONS']));
$control->EndCustomField('CONDITIONS',
'<input type="hidden" name="CONDITIONS" value="'.htmlspecialcharsbx($strCond).'">'.
'<input type="hidden" name="CONDITIONS_CHECK" value="'.htmlspecialcharsbx(md5($strCond)).'">'
);
$control->BeginNextFormTab();
$strHidden = '';
$control->BeginCustomField('USER_GROUPS', GetMessage('BT_SALE_DISCOUNT_EDIT_FIELDS_GROUPS').':', true);
?><tr id="tr_USER_GROUPS" class="adm-detail-required-field">
<td valign="top" width="40%"><? echo $control->GetCustomLabelHTML(); ?></td>
<td valign="top" width="60%">
<select name="USER_GROUPS[]" multiple size="8">
<?
foreach ($discountGroupsToShow as $group)
{
$group['ID'] = (int)$group['ID'];
$selected = (in_array($group['ID'], $arDiscountGroupList) ? ' selected' : '');
?>
<option value="<?=$group['ID']?>"<?=$selected?>>
[<?=$group['ID']?>] <?=htmlspecialcharsEx($group['NAME'])?>
</option>
<?
}
unset($selected, $group);
?>
</select>
</td>
</tr><?
if ($discountID > 0 && !empty($arDiscountGroupList))
{
$arHidden = array();
foreach ($arDiscountGroupList as &$value)
{
if (0 < intval($value))
$arHidden[] = '<input type="hidden" name="USER_GROUPS[]" value="'.intval($value).'">';
}
if (isset($value))
unset($value);
$strHidden = implode('',$arHidden);
}
if ($strHidden == '')
$strHidden = '<input type="hidden" name="USER_GROUPS[]" value="">';
$control->EndCustomField('USER_GROUPS', $strHidden);
$control->BeginNextFormTab();
$control->BeginCustomField('COUPONS', GetMessage('BX_SALE_DISCOUNT_EDIT_FIELDS_COUPONS'), false);
define('B_ADMIN_SUBCOUPONS', 1);
define('B_ADMIN_SUBCOUPONS_LIST', false);
$couponsReadOnly = $readOnly;
$couponsAjaxPath = '/bitrix/tools/sale/discount_coupon_list.php?lang='.LANGUAGE_ID.'&find_discount_id='.$discountID;
if ($discountID > 0 && !$copy)
{
?><tr id="tr_COUPONS"><td colspan="2"><?
require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/sale/tools/discount_coupon_list.php');
?></td></tr><?
}
else
{
?><tr id="tr_COUPON_ADD">
<td width="40%"><? echo GetMessage('BX_SALE_DISCOUNT_EDIT_FIELDS_COUPON_ADD'); ?></td>
<td width="60%">
<input type="hidden" value="N" name="COUPON_ADD" id="COUPON_ADD_N">
<input type="checkbox" value="Y" name="COUPON_ADD" id="COUPON_ADD_Y" <? echo ($coupons['COUPON_ADD'] == 'Y' ? 'checked' : ''); ?>>
</td>
</tr>
<tr id="tr_COUPON_COUNT" class="adm-detail-required-field" style="display: <? echo ($coupons['COUPON_ADD'] == 'Y' ? 'table-row' : 'none'); ?>;">
<td width="40%"><? echo GetMessage('BX_SALE_DISCOUNT_EDIT_FIELDS_COUPON_COUNT'); ?></td>
<td width="60%"><input type="text" name="COUPON_COUNT" value="<? echo (int)$coupons['COUPON_COUNT']; ?>"></td>
</tr>
<tr id="tr_COUPON_PERIOD" style="display: <? echo ($coupons['COUPON_ADD'] == 'Y' ? 'table-row' : 'none'); ?>;">
<td width="40%"><? echo GetMessage('BX_SALE_DISCOUNT_EDIT_FIELDS_COUPON_PERIOD'); ?></td>
<td width="60%"><?
$periodValue = '';
$activeFrom = ($coupons['COUPON']['ACTIVE_FROM'] instanceof Main\Type\DateTime ? $coupons['COUPON']['ACTIVE_FROM']->toString() : '');
$activeTo = ($coupons['COUPON']['ACTIVE_TO'] instanceof Main\Type\DateTime ? $coupons['COUPON']['ACTIVE_TO']->toString() : '');
if ($activeFrom != '' || $activeTo != '')
$periodValue = CAdminCalendar::PERIOD_INTERVAL;
$calendar = new CAdminCalendar;
echo $calendar->CalendarPeriodCustom(
'COUPON[ACTIVE_FROM]', 'COUPON[ACTIVE_TO]',
$activeFrom, $activeTo,
true, 19, true,
array(
CAdminCalendar::PERIOD_EMPTY => GetMessage('BX_SALE_DISCOUNT_COUPON_PERIOD_EMPTY'),
CAdminCalendar::PERIOD_INTERVAL => GetMessage('BX_SALE_DISCOUNT_COUPON_PERIOD_INTERVAL')
),
$periodValue
);
unset($calendar);
?></td>
</tr>
<tr id="tr_COUPON_TYPE" class="adm-detail-required-field" style="display: <? echo ($coupons['COUPON_ADD'] == 'Y' ? 'table-row' : 'none'); ?>;">
<td width="40%"><? echo GetMessage('BX_SALE_DISCOUNT_EDIT_FIELDS_COUPON_TYPE'); ?></td>
<td width="60%">
<select name="COUPON[TYPE]" size="3"><?
foreach ($couponTypes as $type => $title)
{
?><option value="<? echo $type; ?>" <? echo ($type == $coupons['COUPON']['TYPE'] ? 'selected' : ''); ?>><? echo htmlspecialcharsEx($title); ?></option><?
}
?></select>
</td>
</tr>
<tr id="tr_COUPON_MAX_USE" style="display: <? echo ($coupons['COUPON_ADD'] == 'Y' ? 'table-row' : 'none'); ?>;">
<td width="40%"><? echo GetMessage('BX_SALE_DISCOUNT_EDIT_FIELDS_COUPON_MAX_USE'); ?></td>
<td width="60%"><input type="text" name="COUPON[MAX_USE]" value="<? echo ($coupons['COUPON_MAX_USE'] > 0 ? $coupons['COUPON_MAX_USE'] : ''); ?>"></td>
</tr><?
}
$control->EndCustomField('COUPONS');
$control->BeginNextFormTab();
$control->AddEditField("XML_ID", GetMessage("BT_SALE_DISCOUNT_EDIT_FIELDS_XML_ID").":", false, array("size" => 50, "maxlength" => 255), htmlspecialcharsbx($arDiscount['XML_ID']));
$control->Buttons(array("disabled" => ($saleModulePermissions < "W"), "back_url" => $listUrl));
$control->Show();
?>
<script type="text/javascript">
BX.ready(function(){
var obCouponAdd = BX('COUPON_ADD_Y'),
obCouponType = BX('tr_COUPON_TYPE'),
obCouponCount = BX('tr_COUPON_COUNT'),
obCouponPeriod = BX('tr_COUPON_PERIOD'),
obCouponMaxUse = BX('tr_COUPON_MAX_USE'),
priorityHint = ['tr_HELP_notice', 'tr_HELP_notice2', 'tr_HELP_notice3', 'tr_HELP_notice4'],
i,
hintImage = '<?=$hintLastDiscountImageName; ?>';
if (!!obCouponAdd && (!!obCouponType || !!obCouponCount || !!obCouponPeriod || !!obCouponMaxUse))
{
BX.bind(obCouponAdd, 'click', function(){
if (!!obCouponType)
BX.style(obCouponType, 'display', (obCouponAdd.checked ? 'table-row' : 'none'));
if (!!obCouponCount)
BX.style(obCouponCount, 'display', (obCouponAdd.checked ? 'table-row' : 'none'));
if (!!obCouponPeriod)
BX.style(obCouponPeriod, 'display', (obCouponAdd.checked ? 'table-row' : 'none'));
if (!!obCouponMaxUse)
BX.style(obCouponMaxUse, 'display', (obCouponAdd.checked ? 'table-row' : 'none'));
});
if (!!obCouponType)
BX.style(obCouponType, 'display', (obCouponAdd.checked ? 'table-row' : 'none'));
if (!!obCouponCount)
BX.style(obCouponCount, 'display', (obCouponAdd.checked ? 'table-row' : 'none'));
if (!!obCouponPeriod)
BX.style(obCouponPeriod, 'display', (obCouponAdd.checked ? 'table-row' : 'none'));
if (!!obCouponMaxUse)
BX.style(obCouponMaxUse, 'display', (obCouponAdd.checked ? 'table-row' : 'none'));
}
if (hintImage != '')
{
for (i = 0; i < priorityHint.length; i++)
{
BX.hint_replace(BX(priorityHint[i]), '<img style="padding-left: 16px;" src="' + hintImage + '" <?=$hintSizes; ?> alt="">');
}
}
});
</script>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");