%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/sale/admin/ |
| Current File : //home/bitrix/www/bitrix/modules/sale/admin/discount_coupon_edit.php |
<?
/** @global CMain $APPLICATION */
use Bitrix\Main,
Bitrix\Main\Loader,
Bitrix\Main\Localization\Loc,
Bitrix\Sale\Internals;
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_before.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/sale/prolog.php');
$selfFolderUrl = $adminPage->getSelfFolderUrl();
$listUrl = $selfFolderUrl."sale_discount_coupons.php?lang=".LANGUAGE_ID;
$listUrl = $adminSidePanelHelper->editUrlToPublicPage($listUrl);
$subWindow = defined('BX_PUBLIC_MODE') && BX_PUBLIC_MODE == 1;
$prefix = ($subWindow ? 'COUPON_' : '');
$saleModulePermissions = $APPLICATION->GetGroupRight('sale');
$readOnly = ($saleModulePermissions < 'W');
if ($saleModulePermissions < 'R')
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
Loader::includeModule('sale');
Loc::loadMessages(__FILE__);
if ($subWindow)
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/iblock/classes/general/subelement.php');
if (!$subWindow && $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();
}
$couponTypes = Internals\DiscountCouponTable::getCouponTypes(true);
$request = Main\Context::getCurrent()->getRequest();
$multiCoupons = false;
$discountID = 0;
if ($subWindow)
{
$multiCoupons = (string)$request->get('MULTI') == 'Y';
$discountID = (int)$request->get('DISCOUNT_ID');
$discount = Internals\DiscountTable::getList(array(
'select' => array('ID'),
'filter' => array('=ID' => $discountID)
))->fetch();
if (!$discount)
{
require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_after.php');
ShowError(Loc::getMessage('BX_SALE_DISCOUNT_COUPON_ERR_DISCOUNT_ID_ABSENT'));
require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin.php');
die();
}
unset($discount);
}
$returnUrl = '';
if (!$subWindow)
{
$rawReturnUrl = (string)$request->get('return_url');
if ($rawReturnUrl != '')
{
$currentUrl = $APPLICATION->GetCurPage();
if (strtolower(substr($rawReturnUrl, strlen($currentUrl))) != strtolower($currentUrl))
$returnUrl = $rawReturnUrl;
}
unset($rawReturnUrl);
}
$tabList = array(
array(
'ICON' => 'sale',
'DIV' => 'couponEdit01',
'TAB' => Loc::getMessage('BX_SALE_DISCOUNT_COUPON_EDIT_TAB_NAME_COMMON'),
'TITLE' => (
$multiCoupons
? Loc::getMessage('BX_SALE_DISCOUNT_COUPON_EDIT_TAB_TITLE_MULTI_COMMON')
: Loc::getMessage('BX_SALE_DISCOUNT_COUPON_EDIT_TAB_TITLE_COMMON')
)
)
);
$couponFormID = '';
if ($subWindow)
{
$subFormListUrl = [
'LINK' => $APPLICATION->GetCurPageParam(),
'POST_PARAMS' => [
'bxpublic' => 'Y',
'DISCOUNT_ID' => $discountID,
'sessid' => bitrix_sessid()
]
];
$couponFormID = 'saleSubCouponControl';
$control = new CAdminSubForm($couponFormID, $tabList, false, true, $subFormListUrl, false);
unset($subFormListUrl);
}
else
{
$couponFormID = ($multiCoupons ? 'saleMultiCouponControl' : 'saleCouponControl');
$control = new CAdminForm($couponFormID, $tabList);
$control->SetShowSettings(false);
}
unset($tabList);
$couponFormID .= '_form';
$errors = array();
$fields = array();
$copy = false;
$couponID = (int)$request->get('ID');
if ($couponID < 0)
$couponID = 0;
if ($couponID > 0)
$copy = ($request->get('action') == 'copy');
if (
check_bitrix_sessid()
&& !$readOnly
&& $request->isPost()
&& (string)$request->getPost('Update') == 'Y'
)
{
$adminSidePanelHelper->decodeUriComponent($request);
$rawData = $request->getPostList();
if ($multiCoupons)
{
$fields['COUNT'] = 0;
$fields['COUPON'] = array(
'DISCOUNT_ID' => $discountID,
'MAX_USE' => 0
);
if (!empty($rawData[$prefix.'ACTIVE_FROM']))
$fields['COUPON']['ACTIVE_FROM'] = Main\Type\DateTime::createFromUserTime($rawData[$prefix.'ACTIVE_FROM']);
if (!empty($rawData[$prefix.'ACTIVE_TO']))
$fields['COUPON']['ACTIVE_TO'] = Main\Type\DateTime::createFromUserTime($rawData[$prefix.'ACTIVE_TO']);
if (isset($rawData[$prefix.'TYPE']))
$fields['COUPON']['TYPE'] = $rawData[$prefix.'TYPE'];
if (isset($fields['COUPON']['TYPE']) && $fields['COUPON']['TYPE'] == Internals\DiscountCouponTable::TYPE_MULTI_ORDER)
{
if (isset($rawData[$prefix.'MAX_USE']))
$fields['COUPON']['MAX_USE'] = $rawData[$prefix.'MAX_USE'];
}
if (isset($rawData[$prefix.'COUNT']))
$fields['COUNT'] = (int)$rawData[$prefix.'COUNT'];
if ($fields['COUNT'] <= 0)
$errors[] = Loc::getMessage('BX_SALE_DISCOUNT_COUPON_ERR_COUPON_COUNT');
$checkResult = Internals\DiscountCouponTable::checkPacket($fields['COUPON'], false);
if (!$checkResult->isSuccess(true))
{
$errors = $checkResult->getErrorMessages();
}
else
{
$couponsResult = Internals\DiscountCouponTable::addPacket(
$fields['COUPON'],
$fields['COUNT']
);
if (!$couponsResult->isSuccess())
$errors = $couponsResult->getErrorMessages();
unset($couponsResult);
}
unset($checkResult);
}
else
{
if ($subWindow)
$fields['DISCOUNT_ID'] = $discountID;
elseif (!empty($rawData['DISCOUNT_ID']))
$fields['DISCOUNT_ID'] = $rawData['DISCOUNT_ID'];
if (isset($rawData['COUPON']))
$fields['COUPON'] = $rawData['COUPON'];
if (!empty($rawData[$prefix.'ACTIVE']))
$fields['ACTIVE'] = $rawData[$prefix.'ACTIVE'];
$fields['ACTIVE_FROM'] = (!empty($rawData[$prefix.'ACTIVE_FROM']) ? Main\Type\DateTime::createFromUserTime($rawData[$prefix.'ACTIVE_FROM']) : null);
$fields['ACTIVE_TO'] = (!empty($rawData[$prefix.'ACTIVE_TO']) ? Main\Type\DateTime::createFromUserTime($rawData[$prefix.'ACTIVE_TO']) : null);
if (isset($rawData[$prefix.'TYPE']))
$fields['TYPE'] = $rawData[$prefix.'TYPE'];
if (isset($fields['TYPE']) && $fields['TYPE'] == Internals\DiscountCouponTable::TYPE_MULTI_ORDER)
{
if (isset($rawData[$prefix.'MAX_USE']))
$fields['MAX_USE'] = $rawData[$prefix.'MAX_USE'];
}
if (isset($rawData[$prefix.'USER_ID']))
$fields['USER_ID'] = $rawData[$prefix.'USER_ID'];
if (isset($rawData[$prefix.'DESCRIPTION']))
$fields['DESCRIPTION'] = $rawData[$prefix.'DESCRIPTION'];
if ($couponID == 0 || $copy)
$result = Internals\DiscountCouponTable::add($fields);
else
$result = Internals\DiscountCouponTable::update($couponID, $fields);
if (!$result->isSuccess())
{
$errors = $result->getErrorMessages();
}
else
{
if ($couponID == 0 || $copy)
$couponID = $result->getId();
}
unset($result);
}
unset($rawData);
if (empty($errors))
{
if ($subWindow)
{
?>
<script type="text/javascript">
var currentWindow = top.window;
if (top.BX.SidePanel.Instance && top.BX.SidePanel.Instance.getTopSlider())
{
currentWindow = top.BX.SidePanel.Instance.getTopSlider().getWindow();
}
currentWindow.BX.closeWait();
currentWindow.BX.WindowManager.Get().AllowClose();
currentWindow.BX.WindowManager.Get().Close();
currentWindow.ReloadSubList();
</script>
<?
die();
}
else
{
if ($adminSidePanelHelper->isAjaxRequest())
{
$adminSidePanelHelper->sendSuccessResponse("base", array("ID" => $couponID));
}
if ((string)$request->getPost('apply') != '')
{
$applyUrl = $selfFolderUrl.'sale_discount_coupon_edit.php?lang='.LANGUAGE_ID.'&ID='.$couponID.'&'.$control->ActiveTabParam();
$applyUrl = $adminSidePanelHelper->setDefaultQueryParams($applyUrl);
LocalRedirect($applyUrl);
}
else
{
$adminSidePanelHelper->localRedirect($listUrl);
LocalRedirect($listUrl);
}
}
}
else
{
$adminSidePanelHelper->sendJsonErrorResponse(implode("; ", $errors));
}
}
elseif ($subWindow)
{
if ((string)$request->get('dontsave') != '')
{
?>
<script type="text/javascript">
var currentWindow = top.window;
if (top.BX.SidePanel.Instance && top.BX.SidePanel.Instance.getTopSlider())
{
currentWindow = top.BX.SidePanel.Instance.getTopSlider().getWindow();
}
currentWindow.BX.closeWait();
currentWindow.BX.WindowManager.Get().AllowClose();
currentWindow.BX.WindowManager.Get().Close();
</script>
<?
die();
}
}
$APPLICATION->SetTitle(
$couponID == 0
? (
!$multiCoupons
? Loc::getMessage('BX_SALE_DISCOUNT_COUPON_EDIT_TITLE_ADD')
: Loc::getMessage('BX_SALE_DISCOUNT_COUPON_EDIT_TITLE_MULTI_ADD')
)
: (
!$copy
? Loc::getMessage('BX_SALE_DISCOUNT_COUPON_EDIT_TITLE_UPDATE', array('#ID#' => $couponID))
: Loc::getMessage('BX_SALE_DISCOUNT_COUPON_EDIT_TITLE_COPY', array('#ID#' => $couponID))
)
);
require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_after.php');
$contextMenuItems = array(
array(
'ICON' => 'btn_list',
'TEXT' => Loc::getMessage('BX_SALE_DISCOUNT_COUPONT_CONTEXT_COUPON_LIST'),
'LINK' => $listUrl
)
);
if (!$subWindow && !$readOnly && $couponID > 0)
{
if (!$copy)
{
$addUrl = $selfFolderUrl."sale_discount_coupon_edit.php?lang=".LANGUAGE_ID;
$addUrl = $adminSidePanelHelper->editUrlToPublicPage($addUrl);
if (!$adminSidePanelHelper->isPublicFrame())
$addUrl = $adminSidePanelHelper->setDefaultQueryParams($addUrl);
$contextMenuItems[] = array(
'ICON' => 'btn_new',
'TEXT' => Loc::getMessage('BX_SALE_DISCOUNT_COUPONT_CONTEXT_NEW'),
'LINK' => $addUrl
);
$copyUrl = $selfFolderUrl."sale_discount_coupon_edit.php?lang=".LANGUAGE_ID."&ID=".$discountID."&action=copy";
$copyUrl = $adminSidePanelHelper->editUrlToPublicPage($copyUrl);
if (!$adminSidePanelHelper->isPublicFrame())
$copyUrl = $adminSidePanelHelper->setDefaultQueryParams($copyUrl);
$contextMenuItems[] = array(
'ICON' => 'btn_copy',
'TEXT' => Loc::getMessage('BX_SALE_DISCOUNT_COUPONT_CONTEXT_COPY'),
'LINK' => $copyUrl
);
$deleteUrl = $selfFolderUrl."sale_discount_coupons.php?lang=".LANGUAGE_ID."&ID=".$couponID."&action=delete&".bitrix_sessid_get();
$buttonAction = "LINK";
if ($adminSidePanelHelper->isPublicFrame())
{
$deleteUrl = $adminSidePanelHelper->editUrlToPublicPage($deleteUrl);
$buttonAction = "ONCLICK";
}
$contextMenuItems[] = array(
'ICON' => 'btn_delete',
'TEXT' => Loc::getMessage('BX_SALE_DISCOUNT_COUPON_CONTEXT_DELETE'),
$buttonAction => "javascript:if(confirm('".CUtil::JSEscape(Loc::getMessage('BX_SALE_DISCOUNT_COUPON_CONTEXT_DELETE_CONFIRM'))."')) top.window.location.href='".$deleteUrl."';",
'WARNING' => 'Y',
);
}
}
$contextMenu = new CAdminContextMenu($contextMenuItems);
$contextMenu->Show();
unset($contextMenu, $contextMenuItems);
if (!empty($errors))
{
$errorMessage = new CAdminMessage(
array(
'DETAILS' => implode('<br>', $errors),
'TYPE' => 'ERROR',
'MESSAGE' => Loc::getMessage('BX_SALE_DISCOUNT_COUPON_ERR_SAVE'),
'HTML' => true
)
);
echo $errorMessage->Show();
unset($errorMessage);
}
$selectFields = array();
if (!$multiCoupons)
{
$defaultValues = array(
'DISCOUNT_ID' => '',
'COUPON' => '',
'ACTIVE' => 'Y',
'ACTIVE_FROM' => null,
'ACTIVE_TO' => null,
'TYPE' => Internals\DiscountCouponTable::TYPE_ONE_ORDER,
'MAX_USE' => 0,
'USE_COUNT' => 0,
'USER_ID' => 0,
'DESCRIPTION' => '',
'DATE_APPLY' => null
);
$selectFields = array('ID', 'DISCOUNT_NAME' => 'DISCOUNT.NAME');
$selectFields = array_merge($selectFields, array_keys($defaultValues));
}
else
{
$defaultValues = array(
'COUNT' => '',
'COUPON' => array(
'DISCOUNT_ID' => '',
'ACTIVE_FROM' => null,
'ACTIVE_TO' => null,
'TYPE' => Internals\DiscountCouponTable::TYPE_ONE_ORDER,
'MAX_USE' => 0,
)
);
}
$coupon = array();
if (!$multiCoupons && $couponID > 0)
{
$coupon = Internals\DiscountCouponTable::getList(array(
'select' => $selectFields,
'filter' => array('=ID' => $couponID)
))->fetch();
if (!$coupon)
$couponID = 0;
}
if ($couponID == 0)
$coupon = $defaultValues;
if (!$multiCoupons)
{
$coupon['DISCOUNT_NAME'] = (string)$coupon['DISCOUNT_NAME'];
$coupon['DISCOUNT_ID'] = (int)$coupon['DISCOUNT_ID'];
$coupon['TYPE'] = (int)$coupon['TYPE'];
$coupon['USE_COUNT'] = (int)$coupon['USE_COUNT'];
$coupon['MAX_USE'] = (int)$coupon['MAX_USE'];
$coupon['USER_ID'] = (int)$coupon['USER_ID'];
$coupon['DESCRIPTION'] = (string)$coupon['DESCRIPTION'];
}
else
{
$coupon['COUNT'] = (int)$coupon['COUNT'];
$coupon['COUPON']['DISCOUNT_ID'] = (int)$coupon['COUPON']['DISCOUNT_ID'];
$coupon['COUPON']['TYPE'] = (int)$coupon['COUPON']['TYPE'];
$coupon['COUPON']['MAX_USE'] = (int)$coupon['COUPON']['MAX_USE'];
}
if (!empty($errors))
$coupon = array_merge($coupon, $fields);
$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 $couponID; ?>">
<?
if ($subWindow)
{
?><input type="hidden" name="DISCOUNT_ID" value="<? echo $discountID; ?>">
<input type="hidden" name="MULTI" value="<? echo ($multiCoupons ? 'Y' : 'N');?>"><?
}
if ($copy)
{
?><input type="hidden" name="action" value="copy"><?
}
if (!empty($returnUrl))
{
?><input type="hidden" name="return_url" value="<? echo htmlspecialcharsbx($returnUrl); ?>"><?
}
echo bitrix_sessid_post();
$control->EndEpilogContent();
$formActionUrl = $selfFolderUrl.'sale_discount_coupon_edit.php?lang='.LANGUAGE_ID;
$formActionUrl = $adminSidePanelHelper->setDefaultQueryParams($formActionUrl);
$control->Begin(array('FORM_ACTION' => $formActionUrl));
$control->BeginNextFormTab();
if ($multiCoupons)
{
$control->AddEditField($prefix.'COUNT', Loc::getMessage('BX_SALE_DISCOUNT_COUPON_COUNT'), true, array(), ($coupon['COUNT'] > 0 ? $coupon['COUNT'] : ''));
$control->BeginCustomField($prefix.'PERIOD', Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_PERIOD'), false);
?><tr id="tr_COUPON_PERIOD">
<td width="40%"><? echo $control->GetCustomLabelHTML(); ?></td>
<td width="60%"><?
$periodValue = '';
CTimeZone::Disable();
$activeFrom = ($coupon['COUPON']['ACTIVE_FROM'] instanceof Main\Type\DateTime ? $coupon['COUPON']['ACTIVE_FROM']->toString() : '');
$activeTo = ($coupon['COUPON']['ACTIVE_TO'] instanceof Main\Type\DateTime ? $coupon['COUPON']['ACTIVE_TO']->toString() : '');
CTimeZone::Enable();
if ($activeFrom != '' || $activeTo != '')
$periodValue = CAdminCalendar::PERIOD_INTERVAL;
$calendar = new CAdminCalendar;
echo $calendar->CalendarPeriodCustom(
$prefix.'ACTIVE_FROM', $prefix.'ACTIVE_TO',
$activeFrom, $activeTo,
true, 19, true,
array(
CAdminCalendar::PERIOD_EMPTY => Loc::getMessage('BX_SALE_DISCOUNT_COUPON_PERIOD_EMPTY'),
CAdminCalendar::PERIOD_INTERVAL => Loc::getMessage('BX_SALE_DISCOUNT_COUPON_PERIOD_INTERVAL')
),
$periodValue
);
unset($calendar, $activeTo, $activeFrom, $periodValue);
?></td>
</tr><?
$control->EndCustomField($prefix.'PERIOD');
$control->AddDropDownField(
$prefix.'TYPE',
Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_TYPE'),
true,
$couponTypes,
$coupon['COUPON']['TYPE'],
array('id="'.$prefix.'TYPE'.'"', 'size="3"')
);
$control->AddEditField(
$prefix.'MAX_USE',
Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_MAX_USE'),
false,
array('id' => $prefix.'MAX_USE'),
($coupon['COUPON']['MAX_USE'] > 0 ? $coupon['COUPON']['MAX_USE'] : '')
);
$control->Buttons(false, '');
$control->Show();
?>
<script type="text/javascript">
var couponType = BX('<?=$prefix.'TYPE'; ?>'),
maxUse = BX('<?=$prefix.'MAX_USE'; ?>'),
rowMaxUse;
rowMaxUse = BX.findParent(maxUse, { 'tagName': 'tr' });
BX.ready(function(){
BX.style(
rowMaxUse,
'display',
(couponType.value == '<?=Internals\DiscountCouponTable::TYPE_MULTI_ORDER; ?>' ? 'table-row' : 'none')
);
BX.bind(couponType, 'change', function ()
{
BX.style(
rowMaxUse,
'display',
(couponType.value == '<?=Internals\DiscountCouponTable::TYPE_MULTI_ORDER; ?>' ? 'table-row' : 'none')
);
if (top.BX.WindowManager.Get())
{
top.BX.WindowManager.Get().adjustSizeEx();
}
else
{
BX.WindowManager.Get().adjustSizeEx();
}
});
if (top.BX.WindowManager.Get())
{
top.BX.WindowManager.Get().adjustSizeEx();
}
else
{
BX.WindowManager.Get().adjustSizeEx();
}
});
</script>
<?
}
else
{
if ($couponID > 0 && !$copy)
$control->AddViewField($prefix.'ID', Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_ID'), $couponID, false);
$control->AddCheckBoxField($prefix.'ACTIVE', Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_ACTIVE'), true, array('Y', 'N'), $coupon['ACTIVE'] == 'Y');
if ($couponID > 0)
{
$discountEditUrl = $selfFolderUrl."sale_discount_edit.php?lang=".LANGUAGE_ID."&ID=".$coupon['DISCOUNT_ID'];
$discountEditUrl = $adminSidePanelHelper->editUrlToPublicPage($discountEditUrl);
$discountName = '<a href="'.$discountEditUrl.'">['.$coupon['DISCOUNT_ID'].']</a>';
if ($coupon['DISCOUNT_NAME'] !== '')
$discountName .= ' '.htmlspecialcharsbx($coupon['DISCOUNT_NAME']);
$discountName .= '<input type="hidden" name="DISCOUNT_ID" value="'.$coupon['DISCOUNT_ID'].'">';
$control->AddViewField('DISCOUNT_ID', Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_DISCOUNT'), $discountName, true);
}
elseif (!$subWindow)
{
$discountList = array();
$discountIterator = Internals\DiscountTable::getList(array(
'select' => array('ID', 'NAME'),
'filter' => array('=ACTIVE' => 'Y'),
'order' => array('SORT' => 'ASC', 'NAME' => 'ASC')
));
while ($discount = $discountIterator->fetch())
{
$discount['ID'] = (int)$discount['ID'];
$discount['NAME'] = (string)$discount['NAME'];
$discountList[$discount['ID']] = '['.$discount['ID'].']'.($discount['NAME'] !== '' ? ' '.$discount['NAME'] : '');
}
unset($discount, $discountIterator);
if (!empty($discountList))
{
$control->AddDropDownField(
'DISCOUNT_ID',
Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_DISCOUNT'),
true,
$discountList,
$coupon['DISCOUNT_ID']
);
}
else
{
$control->BeginCustomField('DISCOUNT_ID', Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_DISCOUNT'), true);
$discountEditPath = $selfFolderUrl.'sale_discount_edit.php?lang='.LANGUAGE_ID.'&return_url='.urlencode($APPLICATION->GetCurPageParam());
$discountEditPath = $adminSidePanelHelper->editUrlToPublicPage($discountEditPath);
?><tr id="tr_DISCOUNT_ID">
<td width="40%"><? echo $control->GetCustomLabelHTML(); ?></td>
<td width="60%">
<? echo Loc::getMessage('BX_SALE_DISCOUNT_COUPON_MESS_DISCOUNT_ABSENT'); ?> <a href="<? echo $discountEditPath ?>"><?
echo Loc::getMessage('BX_SALE_DISCOUNT_COUPON_MESS_DISCOUNT_ADD'); ?></a></td>
</tr><?
unset($discountEditPath);
$control->EndCustomField('DISCOUNT_ID');
}
unset($discountList);
}
$control->BeginCustomField('COUPON', Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_COUPON'), true);
?><tr id="tr_COUPON" class="adm-detail-required-field">
<td width="40%"><? echo $control->GetCustomLabelHTML(); ?></td>
<td width="60%" id="td_COUPON_VALUE">
<input type="text" id="COUPON" name="COUPON" size="32" maxlength="32" value="<? echo htmlspecialcharsbx($coupon['COUPON']); ?>" />
<input type="button" value="<? echo Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_COUPON_GENERATE'); ?>" id="COUPON_GENERATE">
</td>
</tr><?
$control->EndCustomField('COUPON',
'<input type="hidden" name="COUPON" value="'.htmlspecialcharsbx($coupon['COUPON']).'">'
);
$showTypeSelect = (
$couponID == 0
|| !isset($couponTypes[$coupon['TYPE']])
|| $coupon['DATE_APPLY'] == null
);
if ($showTypeSelect)
{
$control->AddDropDownField(
$prefix.'TYPE',
Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_TYPE'),
true,
$couponTypes,
$coupon['TYPE'],
array('id="'.$prefix.'TYPE'.'"', 'size="3"')
);
}
else
{
$control->AddViewField(
$prefix.'TYPE',
Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_TYPE'),
$couponTypes[$coupon['TYPE']],
true
);
}
$control->BeginCustomField($prefix.'PERIOD', Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_PERIOD'), false);
?><tr id="tr_COUPON_PERIOD">
<td width="40%"><? echo $control->GetCustomLabelHTML(); ?></td>
<td width="60%"><?
$periodValue = '';
CTimeZone::Disable();
$activeFrom = ($coupon['ACTIVE_FROM'] instanceof Main\Type\DateTime ? $coupon['ACTIVE_FROM']->toString() : '');
$activeTo = ($coupon['ACTIVE_TO'] instanceof Main\Type\DateTime ? $coupon['ACTIVE_TO']->toString() : '');
CTimeZone::Enable();
if ($activeFrom != '' || $activeTo != '')
$periodValue = CAdminCalendar::PERIOD_INTERVAL;
$calendar = new CAdminCalendar;
echo $calendar->CalendarPeriodCustom(
$prefix.'ACTIVE_FROM', $prefix.'ACTIVE_TO',
$activeFrom, $activeTo,
true, 19, true,
array(
CAdminCalendar::PERIOD_EMPTY => Loc::getMessage('BX_SALE_DISCOUNT_COUPON_PERIOD_EMPTY'),
CAdminCalendar::PERIOD_INTERVAL => Loc::getMessage('BX_SALE_DISCOUNT_COUPON_PERIOD_INTERVAL')
),
$periodValue
);
unset($activeTo, $activeFrom, $periodValue);
?></td>
</tr><?
$control->EndCustomField($prefix.'PERIOD');
$control->BeginCustomField($prefix.'USER_ID', Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_USER_ID'), false);
?><tr id="tr_USER_ID">
<td width="40%"><? echo $control->GetCustomLabelHTML(); ?></td>
<td width="60%"><?
echo FindUserID(
$prefix.'USER_ID',
($coupon['USER_ID'] > 0 ? $coupon['USER_ID'] : ''),
'',
$couponFormID
);
?></td>
</tr><?
$control->EndCustomField($prefix.'USER_ID');
if ($showTypeSelect || ($couponID > 0 && $coupon['TYPE'] == Internals\DiscountCouponTable::TYPE_MULTI_ORDER))
$control->AddEditField(
$prefix.'MAX_USE',
Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_MAX_USE'),
false,
array('id' => $prefix.'MAX_USE'),
($coupon['MAX_USE'] > 0 ? $coupon['MAX_USE'] : '')
);
if ($couponID > 0 && $coupon['TYPE'] == Internals\DiscountCouponTable::TYPE_MULTI_ORDER && $coupon['USE_COUNT'] > 0)
$control->AddViewField(
$prefix.'USE_COUNT',
Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_USE_COUNT'),
$coupon['USE_COUNT'],
false
);
$control->AddTextField(
$prefix.'DESCRIPTION',
Loc::getMessage('BX_SALE_DISCOUNT_COUPON_FIELD_DESCRIPTION'),
$coupon['DESCRIPTION'],
array(),
false
);
if ($subWindow)
{
$control->Buttons(false, '');
}
else
{
$control->Buttons(array('disabled' => $readOnly, 'back_url' => $listUrl));
}
$control->Show();
?>
<script type="text/javascript">
BX.ready(function(){
var obCouponValue = BX('COUPON'),
obCouponBtn = BX('COUPON_GENERATE'),
couponType = BX('<?=$prefix.'TYPE'; ?>'),
maxUse,
rowMaxUse;
if (!!obCouponValue && !!obCouponBtn)
{
BX.bind(obCouponBtn, 'click', function(){
var url,
data;
BX.showWait();
url = '/bitrix/tools/sale/generate_coupon.php';
data = {
lang: BX.message('LANGUAGE_ID'),
sessid: BX.bitrix_sessid()
};
BX.ajax.loadJSON(
url,
data,
function(data){
var boolFlag = true,
strErr = '',
obCouponErr,
obCouponCell;
if (BX.type.isString(data))
{
boolFlag = false;
strErr = data;
}
else
{
if (data.STATUS != 'OK')
{
boolFlag = false;
strErr = data.MESSAGE;
}
}
obCouponErr = BX('COUPON_GENERATE_ERR');
if (boolFlag)
{
obCouponValue.value = data.COUPON;
if (!!obCouponErr)
obCouponErr = BX.remove(obCouponErr);
}
else
{
if (!obCouponErr)
{
obCouponCell = BX('td_COUPON_VALUE');
if (!!obCouponCell)
{
obCouponErr = obCouponCell.insertBefore(BX.create(
'IMG',
{
props: {
id: 'COUPON_GENERATE_ERR',
src: '/bitrix/panel/main/images_old/icon_warn.gif'
},
style: {
marginRight: '10px',
verticalAlign: 'middle'
}
}
), obCouponBtn);
}
}
BX.adjust(obCouponErr, {props: { title: strErr }});
}
BX.closeWait();
});
});
}
if (!!couponType)
{
maxUse = BX('<?=$prefix.'MAX_USE'; ?>');
rowMaxUse = BX.findParent(maxUse, { 'tagName': 'tr' });
BX.style(
rowMaxUse,
'display',
(couponType.value == '<?=Internals\DiscountCouponTable::TYPE_MULTI_ORDER; ?>' ? 'table-row' : 'none')
);
BX.bind(couponType, 'change', function ()
{
BX.style(
rowMaxUse,
'display',
(couponType.value == '<?=Internals\DiscountCouponTable::TYPE_MULTI_ORDER; ?>' ? 'table-row' : 'none')
);
<?
if ($subWindow)
{
?>if (top.BX.WindowManager.Get())
{
top.BX.WindowManager.Get().adjustSizeEx();
}
else
{
BX.WindowManager.Get().adjustSizeEx();
}
<?
}
?>
});
}
});
<?
if ($subWindow)
{
?>if (top.BX.WindowManager.Get())
{
top.BX.WindowManager.Get().adjustSizeEx();
}
else
{
BX.WindowManager.Get().adjustSizeEx();
}
<?
}
?></script><?
}
require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin.php');