11if (!defined(
'B_ADMIN_SUBCOUPONS') || B_ADMIN_SUBCOUPONS != 1 || !defined(
'B_ADMIN_SUBCOUPONS_LIST'))
14$prologAbsent = (!defined(
"B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !==
true);
18$selfFolderUrl = (defined(
"SELF_FOLDER_URL") ? SELF_FOLDER_URL :
"/bitrix/admin/");
22 require_once(
$_SERVER[
'DOCUMENT_ROOT'].
'/bitrix/modules/main/include/prolog_admin_before.php');
23 Loader::includeModule(
'sale');
27 $discountID = (int)
$_REQUEST[
'find_discount_id'];
28 $couponsAjaxPath =
'/bitrix/tools/sale/discount_coupon_list.php?lang='.LANGUAGE_ID.
'&find_discount_id='.$discountID;
32if (!isset($discountID) || $discountID <= 0 || !isset($couponsAjaxPath) || empty($couponsAjaxPath))
39 $USER->CanDoOperation(
'view_subordinate_users')
40 ||
$USER->CanDoOperation(
'view_all_users')
41 ||
$USER->CanDoOperation(
'edit_all_users')
42 ||
$USER->CanDoOperation(
'edit_subordinate_users')
45Loc::loadMessages(__FILE__);
47require_once(
$_SERVER[
'DOCUMENT_ROOT'].
'/bitrix/modules/iblock/classes/general/subelement.php');
63 '=DISCOUNT_ID' => $discountID
70if (!$couponsReadOnly &&
$adminList->EditAction())
72 if (isset($FIELDS) && is_array($FIELDS))
74 $conn = Application::getConnection();
76 foreach ($FIELDS as $couponID =>
$fields)
78 $couponID = (int)$couponID;
79 if ($couponID <= 0 || !$adminList->IsUpdated($couponID))
83 $conn->startTransaction();
86 $result = Internals\DiscountCouponTable::update($couponID,
$fields);
90 $conn->commitTransaction();
94 $conn->rollbackTransaction();
95 $adminList->AddUpdateError(implode(
'<br>',
$result->getErrorMessages()), $couponID);
104if (!$couponsReadOnly && ($listID =
$adminList->GroupAction()))
106 $checkUseCoupons = (
$_REQUEST[
'action'] ==
'delete');
108 if (
$_REQUEST[
'action_target'] ==
'selected')
112 'select' =>
array(
'ID'),
117 $listID[] = $coupon[
'ID'];
121 $listID = array_filter($listID);
130 'ACTIVE' => (
$_REQUEST[
'action'] ==
'activate' ?
'Y' :
'N')
132 foreach ($listID as &$couponID)
134 $result = Internals\DiscountCouponTable::update($couponID,
$fields);
136 $adminList->AddGroupError(implode(
'<br>',
$result->getErrorMessages()), $couponID);
145 foreach ($listID as &$couponID)
147 $result = Internals\DiscountCouponTable::delete($couponID);
149 $adminList->AddGroupError(implode(
'<br>',
$result->getErrorMessages()), $couponID);
172 'content' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_NAME_COUPON'),
173 'title' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_TITLE_COUPON'),
179 'content' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_NAME_ACTIVE'),
180 'title' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_TITLE_ACTIVE'),
185 'id' =>
'ACTIVE_FROM',
186 'content' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_NAME_ACTIVE_FROM'),
187 'title' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_TITLE_ACTIVE_FROM'),
188 'sort' =>
'ACTIVE_FROM',
193 'content' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_NAME_ACTIVE_TO'),
194 'title' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_TITLE_ACTIVE_TO'),
195 'sort' =>
'ACTIVE_TO',
200 'content' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_NAME_TYPE'),
201 'title' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_TITLE_TYPE'),
207 'content' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_NAME_MAX_USE'),
208 'title' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_TITLE_MAX_USE'),
214 'content' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_NAME_USE_COUNT'),
215 'title' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_TITLE_USE_COUNT'),
216 'sort' =>
'USE_COUNT',
221 'content' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_NAME_USER_ID'),
222 'title' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_TITLE_USER_ID'),
227 'id' =>
'DATE_APPLY',
228 'content' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_NAME_DATE_APPLY'),
229 'title' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_TITLE_DATE_APPLY'),
230 'sort' =>
'DATE_APPLY',
234 'id' =>
'MODIFIED_BY',
235 'content' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_NAME_MODIFIED_BY'),
236 'title' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_TITLE_MODIFIED_BY'),
237 'sort' =>
'MODIFIED_BY',
241 'id' =>
'TIMESTAMP_X',
242 'content' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_NAME_TIMESTAMP_X'),
243 'title' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_TITLE_TIMESTAMP_X'),
244 'sort' =>
'TIMESTAMP_X',
248 'id' =>
'CREATED_BY',
249 'content' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_NAME_CREATED_BY'),
250 'title' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_TITLE_CREATED_BY'),
251 'sort' =>
'CREATED_BY',
255 'id' =>
'DATE_CREATE',
256 'content' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_NAME_DATE_CREATE'),
257 'title' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_TITLE_DATE_CREATE'),
258 'sort' =>
'DATE_CREATE',
262 'id' =>
'DESCRIPTION',
263 'content' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_NAME_DESCRIPTION'),
264 'title' => Loc::getMessage(
'SALE_ADM_DSC_CPN_HEADER_TITLE_DESCRIPTION'),
316 $countQuery =
new Main\Entity\Query(
Internals\DiscountCouponTable::getEntity());
317 $countQuery->addSelect(
new Main\
Entity\ExpressionField(
'CNT',
'COUNT(1)'));
319 $totalCount = $countQuery->setLimit(
null)->setOffset(
null)->exec()->fetch();
354 $coupon[
'ID'] = (int)$coupon[
'ID'];
356 $coupon[
'MAX_USE'] = (int)$coupon[
'MAX_USE'];
358 $coupon[
'USE_COUNT'] = (int)$coupon[
'USE_COUNT'];
359 if ($coupon[
'TYPE'] !=
Internals\DiscountCouponTable::TYPE_MULTI_ORDER)
361 $coupon[
'MAX_USE'] = 0;
362 $coupon[
'USE_COUNT'] = 0;
366 $coupon[
'CREATED_BY'] = (int)$coupon[
'CREATED_BY'];
367 if ($coupon[
'CREATED_BY'] > 0)
368 $userIDs[$coupon[
'CREATED_BY']] =
true;
372 $coupon[
'MODIFIED_BY'] = (int)$coupon[
'MODIFIED_BY'];
373 if ($coupon[
'MODIFIED_BY'] > 0)
374 $userIDs[$coupon[
'MODIFIED_BY']] =
true;
378 $coupon[
'USER_ID'] = (int)$coupon[
'USER_ID'];
379 if ($coupon[
'USER_ID'] > 0)
380 $userIDs[$coupon[
'USER_ID']] =
true;
382 $urlEdit =
$selfFolderUrl.
'sale_discount_coupon_edit.php?ID='.$coupon[
'ID'].
'&DISCOUNT_ID='.$discountID.
'&lang='.LANGUAGE_ID.
'&bxpublic=Y';
388 Loc::getMessage(
'BT_SALE_DISCOUNT_COUPON_LIST_MESS_EDIT_COUPON'),
391 $row->AddViewField(
'ID', $coupon[
'ID']);
394 $row->AddViewField(
'DATE_CREATE', $coupon[
'DATE_CREATE']);
396 $row->AddViewField(
'TIMESTAMP_X', $coupon[
'TIMESTAMP_X']);
399 $row->AddViewField(
'MAX_USE', ($coupon[
'MAX_USE'] > 0 ? $coupon[
'MAX_USE'] :
''));
401 $row->AddViewField(
'USE_COUNT', ($coupon[
'USE_COUNT'] > 0 ? $coupon[
'USE_COUNT'] :
''));
406 if (!$couponsReadOnly)
409 $row->AddInputField(
'COUPON',
array(
'size' => 32));
411 $row->AddCheckField(
'ACTIVE');
413 $row->AddCalendarField(
'ACTIVE_FROM');
415 $row->AddCalendarField(
'ACTIVE_TO');
420 $row->AddInputField(
'COUPON',
false);
422 $row->AddCheckField(
'ACTIVE',
false);
424 $row->AddCalendarField(
'ACTIVE_FROM',
false);
426 $row->AddCalendarField(
'ACTIVE_TO');
432 'TEXT' => Loc::getMessage(
'BT_SALE_DISCOUNT_COUPON_LIST_CONTEXT_EDIT'),
433 'ACTION' =>
"(new BX.CAdminDialog({
434 'content_url': '".CUtil::JSEscape($urlEdit).
"',
435 'content_post': 'bxpublic=Y',
438 'buttons': [BX.CAdminDialog.btnSave, BX.CAdminDialog.btnCancel]
442 if (!$couponsReadOnly)
446 'TEXT' => Loc::getMessage(
'BT_SALE_DISCOUNT_COUPON_LIST_CONTEXT_COPY'),
447 'ACTION'=>
"(new BX.CAdminDialog({
448 'content_url': '".CUtil::JSEscape($urlEdit.
'&action=copy').
"',
449 'content_post': 'bxpublic=Y',
452 'buttons': [BX.CAdminDialog.btnSave, BX.CAdminDialog.btnCancel]
456 if ($coupon[
'ACTIVE'] ==
'Y')
459 'ICON' =>
'deactivate',
460 'TEXT' => Loc::getMessage(
'BT_SALE_DISCOUNT_COUPON_LIST_CONTEXT_DEACTIVATE'),
461 'ACTION' =>
$adminList->ActionDoGroup($coupon[
'ID'],
'deactivate'),
468 'ICON' =>
'activate',
469 'TEXT' => Loc::getMessage(
'BT_SALE_DISCOUNT_COUPON_LIST_CONTEXT_ACTIVATE'),
470 'ACTION' =>
$adminList->ActionDoGroup($coupon[
'ID'],
'activate'),
474 $actions[] =
array(
'SEPARATOR' =>
true);
477 'TEXT' => Loc::getMessage(
'BT_SALE_DISCOUNT_COUPON_LIST_CONTEXT_DELETE'),
478 'ACTION' =>
"if(confirm('".Loc::getMessage(
'BT_SALE_DISCOUNT_COUPON_LIST_CONTEXT_DELETE_CONFIRM').
"')) ".
$adminList->ActionDoGroup($coupon[
'ID'],
'delete')
481 $row->AddActions($actions);
482 unset($actions, $row);
489 $userIterator = UserTable::getList(
array(
490 'select' =>
array(
'ID',
'LOGIN',
'NAME',
'LAST_NAME',
'SECOND_NAME',
'EMAIL'),
493 while ($oneUser = $userIterator->fetch())
495 $oneUser[
'ID'] = (int)$oneUser[
'ID'];
501 unset($oneUser, $userIterator);
509 if ($row->arRes[
'CREATED_BY'] > 0 && isset(
$userList[$row->arRes[
'CREATED_BY']]))
511 $row->AddViewField(
'CREATED_BY',
$userName);
516 if ($row->arRes[
'MODIFIED_BY'] > 0 && isset(
$userList[$row->arRes[
'MODIFIED_BY']]))
518 $row->AddViewField(
'MODIFIED_BY',
$userName);
523 if ($row->arRes[
'USER_ID'] > 0 && isset(
$userList[$row->arRes[
'USER_ID']]))
525 $row->AddViewField(
'USER_ID',
$userName);
535 'title' => Loc::getMessage(
'MAIN_ADMIN_LIST_SELECTED'),
540 'title' => Loc::getMessage(
'MAIN_ADMIN_LIST_CHECKED'),
545if (!$couponsReadOnly)
549 'delete' => Loc::getMessage(
'MAIN_ADMIN_LIST_DELETE'),
550 'activate' => Loc::getMessage(
'MAIN_ADMIN_LIST_ACTIVATE'),
551 'deactivate' => Loc::getMessage(
'MAIN_ADMIN_LIST_DEACTIVATE'),
558 function ShowNewCoupons(
id, multi)
561 lang:
'<? echo LANGUAGE_ID; ?>',
566 sessid: BX.bitrix_sessid()
568 (
new BX.CAdminDialog({
569 'content_url':
'<?=$selfFolderUrl?>sale_discount_coupon_edit.php',
570 'content_post': PostParams,
575 'buttons': [BX.CAdminDialog.btnSave, BX.CAdminDialog.btnCancel]
580 if (!$couponsReadOnly)
582 $addSubMenu =
array();
583 $addSubMenu[] =
array(
584 'TEXT' => Loc::getMessage(
'BX_SALE_DISCOUNT_COUPON_LIST_ADD_ONE_COUPON'),
585 'TITLE' => Loc::getMessage(
'BX_SALE_DISCOUNT_COUPON_LIST_ADD_ONE_COUPON_TITLE'),
586 'LINK' =>
"javascript:ShowNewCoupons(".$discountID.
", 'N')",
589 $addSubMenu[] =
array(
590 'TEXT' => Loc::getMessage(
'BX_SALE_DISCOUNT_COUPON_LIST_ADD_MULTI_COUPON'),
591 'TITLE' => Loc::getMessage(
'BX_SALE_DISCOUNT_COUPON_LIST_ADD_MULTI_COUPON_TITLE'),
592 'LINK' =>
"javascript:ShowNewCoupons(".$discountID.
", 'Y')",
597 'TEXT' => Loc::getMessage(
'BT_SALE_DISCOUNT_COUPONT_LIST_MESS_NEW_COUPON'),
598 'TITLE' => Loc::getMessage(
'BT_SALE_DISCOUNT_COUPON_LIST_MESS_NEW_COUPON_TITLE'),
600 'MENU' => $addSubMenu,
605 'TEXT' =>
htmlspecialcharsbx(Loc::getMessage(
'BX_SALE_DISCOUNT_COUPON_LIST_REFRESH')),
606 'TITLE' => Loc::getMessage(
'BX_SALE_DISCOUNT_COUPON_LIST_REFRESH_TITLE'),
607 'ICON' =>
'btn_sub_refresh',
615$adminList->DisplayList(B_ADMIN_SUBCOUPONS_LIST);
618 require(
$_SERVER[
'DOCUMENT_ROOT'].
'/bitrix/modules/main/include/epilog_popup_admin.php');
static getCouponTypes($extendedMode=false)
static clearDiscountCheckList()
static updateUseCoupons()
static prepareCouponData(&$fields)
static setDiscountCheckList($discountList)
static disableCheckCouponsUse()
static enableCheckCouponsUse()
static GetNavSize($table_id=false, $nPageSize=20)
static FormatName($NAME_TEMPLATE, $arUser, $bUseLogin=false, $bHTMLSpec=true, $enabledEmptyNameStub=true)
static DisableJSFunction($b=true)
static Init($arExt=array(), $bReturn=false)
if($usePageNavigation) $couponIterator
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if($selectFieldsMap['VAT_ID']) $usePageNavigation
if($usePageNavigation) $totalPages
if(! $readOnly &&$adminList->EditAction()) if(! $readOnly &&($listID=$adminList->GroupAction()) $headerList)
global $adminSidePanelHelper
$_SERVER["DOCUMENT_ROOT"]
URL bitrix admin public_file_edit php bxpublic
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)