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 (!Catalog\Config\Feature::isCumulativeDiscountsEnabled()) { require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); CCatalogDiscountSave::Disable(); ShowError(GetMessage("CAT_FEATURE_NOT_ALLOW")); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php"); die(); } IncludeModuleLangFile(__FILE__); $APPLICATION->AddHeadScript('/bitrix/js/catalog/tbl_edit.js'); define('RANGE_EMPTY_ROW_SIZE',3); define('RANGE_ROW_PREFIX','RNG'); function __cmpRange($a,$b) { if ($a['RANGE_FROM'] == $b['RANGE_FROM']) return 0; return ($a['RANGE_FROM'] < $b['RANGE_FROM']) ? -1 : 1; } function __GetRangeInfo($ID,$strPrefix) { $arResult = false; if ((true == isset($_POST[$strPrefix.$ID.'_SUMM'])) && ($_POST[$strPrefix.$ID.'_SUMM'] <> '')) { $arResult['RANGE_FROM'] = doubleval(str_replace(',','.',$_POST[$strPrefix.$ID.'_SUMM'])); $arResult['VALUE'] = 0; if (isset($_POST[$strPrefix.$ID.'_VALUE'])) $arResult['VALUE'] = doubleval(str_replace(',','.',$_POST[$strPrefix.$ID.'_VALUE'])); if (0 > $arResult['VALUE']) $arResult['VALUE'] = 0; $arResult['TYPE'] = 'P'; if (isset($_POST[$strPrefix.$ID.'_TYPE']) && $_POST[$strPrefix.$ID.'_TYPE'] == 'F') $arResult['TYPE'] = 'F'; } return $arResult; } function __AddRangeCellSum($intRangeID,$strPrefix,$arRange) { return ''.htmlspecialcharsex(GetMessage('BT_CAT_DISC_SAVE_EDIT_RANGE_FROM')).' '; } function __AddRangeCellDiscount($intRangeID,$strPrefix,$arRange) { static $discsaveTypes = null; if ($discsaveTypes === null) { $discsaveTypes = CCatalogDiscountSave::GetDiscountSaveTypes(true); } $result = ' '; return $result; } function __AddRangeRow($intRangeID,$strPrefix,$arRange) { return ''.__AddRangeCellSum($intRangeID,$strPrefix,$arRange).__AddRangeCellDiscount($intRangeID,$strPrefix,$arRange).''; } $arDefRange = array( 'RANGE_FROM' => '', 'DSC_VALUE' => '', 'DSC_TYPE' => '', ); function __AddHiddenRow($intRangeID,$strPrefix,$arRange) { return ''. ''. ''; } $arCellTemplates = array(); $arCellTemplates[] = CUtil::JSEscape(__AddRangeCellSum('tmp_xxx','PREFIX',$arRange)); $arCellTemplates[] = CUtil::JSEscape(__AddRangeCellDiscount('tmp_xxx','PREFIX',$arRange)); $message = false; $aTabs = array( array("DIV" => "edit1", "TAB" => GetMessage("BT_CAT_DISC_SAVE_EDIT_TAB_NAME_MAIN"), "ICON"=>"catalog", "TITLE"=>GetMessage("BT_CAT_DISC_SAVE_EDIT_TAB_TITLE_MAIN")), array("DIV" => "edit2", "TAB" => GetMessage("BT_CAT_DISC_SAVE_EDIT_TAB_NAME_RANGES"), "ICON"=>"catalog", "TITLE"=>GetMessage("BT_CAT_DISC_SAVE_EDIT_TAB_TITLE_RANGES")), array("DIV" => "edit3", "TAB" => GetMessage("BT_CAT_DISC_SAVE_EDIT_TAB_NAME_GROUPS"), "ICON"=>"catalog", "TITLE"=>GetMessage("BT_CAT_DISC_SAVE_EDIT_TAB_TITLE_GROUPS")), array("DIV" => "edit4", "TAB" => GetMessage("BT_CAT_DISC_SAVE_EDIT_TAB_NAME_MISC"), "ICON" => "catalog", "TITLE" => GetMessage("BT_CAT_DISC_SAVE_EDIT_TAB_TITLE_MISC")), ); $tabControl = new CAdminForm("cat_disc_save", $aTabs); $ID = intval($ID); $bVarsFromForm = false; $arErrors = array(); $boolCopy = false; if (0 < $ID) { $boolCopy = (isset($_REQUEST['action']) && 'copy' == $_REQUEST['action']); } if( $_SERVER['REQUEST_METHOD'] == "POST" && (!empty($save) || !empty($apply)) && !$bReadOnly && check_bitrix_sessid() ) { $APPLICATION->ResetException(); $obDiscSave = new CCatalogDiscountSave(); if (isset($_POST['ACTION_PERIOD'])) { $ACTION_PERIOD = mb_substr(trim($_POST['ACTION_PERIOD']), 0, 1); if ('D' == $ACTION_PERIOD) { if (empty($_POST['ACTIVE_FROM']) && empty($_POST['ACTIVE_TO'])) { $arErrors[] = array('id' => 'ACTIVE_FROM', "text" => GetMessage('BT_CAT_DISC_SAVE_EDIT_ERR_ACTION_DATE_EMPTY')); $bVarsFromForm = true; } else { $_POST['ACTION_SIZE'] = 0; $_POST['ACTION_TYPE'] = 'Y'; $ACTION_SIZE = 0; $ACTION_TYPE = 'Y'; } } elseif ('P' == $ACTION_PERIOD) { if (0 >= intval($_POST['ACTION_SIZE']) || empty($_POST['ACTION_TYPE'])) { $arErrors[] = array('id' => 'ACTION_SIZE', "text" => GetMessage('BT_CAT_DISC_SAVE_EDIT_ERR_ACTION_SIZE_EMPTY')); $bVarsFromForm = true; } else { $_POST['ACTIVE_FROM'] = ''; $_POST['ACTIVE_TO'] = ''; $ACTIVE_FROM = ''; $ACTIVE_TO = ''; } } elseif ('U' == $ACTION_PERIOD) { $_POST['ACTION_SIZE'] = 0; $_POST['ACTION_TYPE'] = 'Y'; $ACTION_SIZE = 0; $ACTION_TYPE = 'Y'; $_POST['ACTIVE_FROM'] = ''; $_POST['ACTIVE_TO'] = ''; $ACTIVE_FROM = ''; $ACTIVE_TO = ''; } else { $arErrors[] = array('id' => 'ACTION_PERIOD', "text" => GetMessage('BT_CAT_DISC_SAVE_EDIT_ERR_ACTION_PERIOD')); $bVarsFromForm = true; } } else { $arErrors[] = array('id' => 'ACTION_PERIOD', "text" => GetMessage('BT_CAT_DISC_SAVE_EDIT_ERR_ACTION_PERIOD')); $bVarsFromForm = true; } if (isset($_POST['COUNT_PERIOD'])) { $COUNT_PERIOD = mb_substr(trim($_POST['COUNT_PERIOD']), 0, 1); if ('D' == $COUNT_PERIOD) { if (empty($_POST['COUNT_FROM']) && empty($_POST['COUNT_TO'])) { $arErrors[] = array('id' => 'COUNT_FROM', "text" => GetMessage('BT_CAT_DISC_SAVE_EDIT_ERR_COUNT_DATE_EMPTY')); $bVarsFromForm = true; } else { $_POST['COUNT_SIZE'] = 0; $_POST['COUNT_TYPE'] = 'Y'; $COUNT_SIZE = 0; $COUNT_TYPE = 'Y'; } } elseif ('P' == $COUNT_PERIOD) { if (0 >= intval($_POST['COUNT_SIZE']) || empty($_POST['COUNT_TYPE'])) { $arErrors[] = array('id' => 'COUNT_SIZE', "text" => GetMessage('BT_CAT_DISC_SAVE_EDIT_ERR_COUNT_SIZE_EMPTY')); $bVarsFromForm = true; } else { $_POST['COUNT_FROM'] = ''; $_POST['COUNT_TO'] = ''; $COUNT_FROM = ''; $COUNT_TO = ''; } } elseif ('U' == $COUNT_PERIOD) { $_POST['COUNT_SIZE'] = 0; $_POST['COUNT_TYPE'] = 'Y'; $COUNT_SIZE = 0; $COUNT_TYPE = 'Y'; $_POST['COUNT_FROM'] = ''; $_POST['COUNT_TO'] = ''; $COUNT_FROM = ''; $COUNT_TO = ''; } else { $arErrors[] = array('id' => 'COUNT_PERIOD', "text" => GetMessage('BT_CAT_DISC_SAVE_EDIT_ERR_COUNT_PERIOD')); $bVarsFromForm = true; } } else { $arErrors[] = array('id' => 'COUNT_PERIOD', "text" => GetMessage('BT_CAT_DISC_SAVE_EDIT_ERR_COUNT_PERIOD')); $bVarsFromForm = true; } $arFormRanges = array(); if (!empty($_POST['RANGES_COUNT']) && 0 < intval($_POST['RANGES_COUNT'])) { $intCount = intval($_POST['RANGES_COUNT']); for ($i = 0; $i < $intCount; $i++) { $arOneRange = __GetRangeInfo($i,RANGE_ROW_PREFIX); if (!empty($arOneRange)) $arFormRanges[] = $arOneRange; } if (!empty($arFormRanges)) { usort($arFormRanges, "__cmpRange"); } } if (empty($arFormRanges)) { $arErrors[] = array('id' => 'RANGES', "text" => GetMessage('BT_CAT_DISC_SAVE_EDIT_ERR_RANGES_EMPTY')); $bVarsFromForm = true; } if (!$bVarsFromForm) { $arFields = array( "XML_ID" => $_POST['XML_ID'], "SITE_ID" => $_POST['SITE_ID'], "NAME" => $_POST['NAME'], "ACTIVE" => ($_POST['ACTIVE'] != "Y"? "N":"Y"), "SORT" => intval($_POST['SORT']), "CURRENCY" => $_POST['CURRENCY'], "ACTIVE_FROM" => $_POST['ACTIVE_FROM'], "ACTIVE_TO" => $_POST['ACTIVE_TO'], "COUNT_SIZE" => $_POST['COUNT_SIZE'], "COUNT_TYPE" => $_POST['COUNT_TYPE'], "ACTION_SIZE" => $_POST['ACTION_SIZE'], "ACTION_TYPE" => $_POST['ACTION_TYPE'], "COUNT_FROM" => $_POST['COUNT_FROM'], "COUNT_TO" => $_POST['COUNT_TO'], "GROUP_IDS" => $_POST['GROUP_IDS'], "RANGES" => $arFormRanges, ); } if (!$bVarsFromForm) { if($ID > 0 && !$boolCopy) { $mxRes = $obDiscSave->Update($ID, $arFields); } else { $ID = $obDiscSave->Add($arFields); $mxRes = ($ID > 0); } if($mxRes) { if (!empty($apply)) LocalRedirect("/bitrix/admin/cat_discsave_edit.php?ID=".$ID."&mess=ok&lang=".urlencode(LANGUAGE_ID)."&".$tabControl->ActiveTabParam()); else LocalRedirect("/bitrix/admin/cat_discsave_admin.php?lang=".urlencode(LANGUAGE_ID)); } else { $bVarsFromForm = true; } } } if ($bVarsFromForm && !empty($arErrors)) { $obError = new CAdminException($arErrors); $APPLICATION->ThrowException($obError); } ClearVars('str_'); $str_XML_ID = ''; $str_SITE_ID = ''; $str_NAME = ''; $str_ACTIVE = "Y"; $str_SORT = 500; $str_CURRENCY = ''; $str_ACTIVE_FROM = ''; $str_ACTION_TO = ''; $str_COUNT_PERIOD = 'U'; $str_ACTION_PERIOD = 'U'; $str_COUNT_SIZE = 0; $str_COUNT_TYPE = 'M'; $str_COUNT_FROM = ''; $str_COUNT_TO = ''; $str_ACTION_SIZE = 0; $str_ACTION_TYPE = 'M'; $arRanges = array(); $arGroupList = array(); if($ID > 0) { $rsDiscSaves = CCatalogDiscountSave::GetByID($ID); if(!$rsDiscSaves->ExtractFields("str_")) $ID = 0; } if ($ID > 0) { $rsDiscGroups = CCatalogDiscountSave::GetGroupByDiscount(array(),array('DISCOUNT_ID' => $ID)); while ($arDiscGroup = $rsDiscGroups->Fetch()) { $arGroupList[] = $arDiscGroup['GROUP_ID']; } $rsDiscRanges = CCatalogDiscountSave::GetRangeByDiscount(array('RANGE_FROM' => 'ASC'),array('DISCOUNT_ID' => $ID)); while ($arDiscRange = $rsDiscRanges->Fetch()) { $arRanges[] = $arDiscRange; } } if (!isset($COUNT_PERIOD)) { if ('' != $str_COUNT_FROM || '' != $str_COUNT_TO) { $str_COUNT_PERIOD = 'D'; } elseif (0 < intval($str_COUNT_SIZE)) { $str_COUNT_PERIOD = 'P'; } else { $str_COUNT_PERIOD = 'U'; } } else { $str_COUNT_PERIOD = $COUNT_PERIOD; } if (!isset($ACTION_PERIOD)) { if ('' != $str_ACTIVE_FROM || '' != $str_ACTIVE_TO) { $str_ACTION_PERIOD = 'D'; } elseif (0 < intval($str_ACTION_SIZE)) { $str_ACTION_PERIOD = 'P'; } else { $str_ACTION_PERIOD = 'U'; } } else { $str_ACTION_PERIOD = $ACTION_PERIOD; } if($bVarsFromForm) { $DB->InitTableVarsForEdit("b_catalog_discount", "", "str_"); if (is_array($_POST['GROUP_IDS'])) $arGroupList = $_POST['GROUP_IDS']; if (!empty($arFormRanges)) { $arRanges = $arFormRanges; } } $arActionPeriod = array( 'U' => GetMessage('BT_CAT_DISC_SAVE_ACTION_TYPE_UNLIM'), 'D' => GetMessage('BT_CAT_DISC_SAVE_ACTION_TYPE_DATE'), 'P' => GetMessage('BT_CAT_DISC_SAVE_ACTION_TYPE_SIZE'), ); $arCountPeriod = array( 'U' => GetMessage('BT_CAT_DISC_SAVE_COUNT_TYPE_UNLIM'), 'D' => GetMessage('BT_CAT_DISC_SAVE_COUNT_TYPE_DATE'), 'P' => GetMessage('BT_CAT_DISC_SAVE_COUNT_TYPE_SIZE'), ); if ($ID > 0 && !$boolCopy) { $APPLICATION->SetTitle(str_replace('#ID#',$ID,GetMessage("BT_CAT_DISC_SAVE_EDIT_PAGE_NAME_ID"))); } else { $APPLICATION->SetTitle(GetMessage("BT_CAT_DISC_SAVE_EDIT_PAGE_NAME_ADD")); } require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $aMenu = array( array( "TEXT"=>GetMessage("BT_CAT_DISC_SAVE_EDIT_CONT_NAME_LIST"), "TITLE"=>GetMessage("BT_CAT_DISC_SAVE_EDIT_CONT_TITLE_LIST"), "LINK"=>"/bitrix/admin/cat_discsave_admin.php?lang=".urlencode(LANGUAGE_ID), "ICON"=>"btn_list", ) ); if (!$bReadOnly) { if($ID > 0) { $aMenu[] = array("SEPARATOR"=>"Y"); $aMenu[] = array( "TEXT"=>GetMessage("BT_CAT_DISC_SAVE_EDIT_CONT_NAME_ADD"), "TITLE"=>GetMessage("BT_CAT_DISC_SAVE_EDIT_CONT_TITLE_ADD"), "LINK"=>"/bitrix/admin/cat_discsave_edit.php?lang=".urlencode(LANGUAGE_ID), "ICON"=>"btn_new", ); if (!$boolCopy) { $aMenu[] = array( "TEXT"=>GetMessage("BT_CAT_DISC_SAVE_EDIT_CONT_NAME_COPY"), "TITLE"=>GetMessage("BT_CAT_DISC_SAVE_EDIT_CONT_TITLE_COPY"), "LINK"=>"/bitrix/admin/cat_discsave_edit.php?ID=".$ID."&action=copy&lang=".urlencode(LANGUAGE_ID), "ICON"=>"btn_copy", ); $aMenu[] = array( "TEXT"=>GetMessage("BT_CAT_DISC_SAVE_EDIT_CONT_NAME_DELETE"), "TITLE"=>GetMessage("BT_CAT_DISC_SAVE_EDIT_CONT_TITLE_DELETE"), "LINK"=>"javascript:if(confirm('".GetMessage("BT_CAT_DISC_SAVE_EDIT_CONT_CONF_DELETE")."'))window.location='/bitrix/admin/cat_discsave_admin.php?ID=".$ID."&action=delete&lang=".urlencode(LANGUAGE_ID)."&".bitrix_sessid_get()."';", "ICON"=>"btn_delete", ); } } } $context = new CAdminContextMenu($aMenu); $context->Show(); if ($_REQUEST["mess"] == "ok" && $ID > 0) CAdminMessage::ShowMessage(array("MESSAGE"=>GetMessage("BT_CAT_DISC_SAVE_EDIT_MESS_OK2"), "TYPE"=>"OK")); $obMessages = false; if ($bVarsFromForm) { if ($ex = $APPLICATION->GetException()) { $obMessages = new CAdminMessage(GetMessage('BT_CAT_DISC_SAVE_EDIT_ERR_SAVE2'),$ex); echo $obMessages->Show(); } } ?> Fetch()) { $arSiteList[$arSite['LID']] = '('.$arSite['LID'].') '.$arSite['NAME']; } $arCurrencyList = array(); $rsCurrencies = CCurrency::GetList('sort', 'asc'); while ($arCurrency = $rsCurrencies->Fetch()) { $arCurrencyList[$arCurrency['CURRENCY']] = $arCurrency['CURRENCY']; } $arTypeList = CCatalogDiscountSave::GetPeriodTypeList(true); $tabControl->BeginPrologContent(); $tabControl->EndPrologContent(); $tabControl->BeginEpilogContent(); ?> 0) { ?>EndEpilogContent(); $tabControl->Begin(array( "FORM_ACTION" => '/bitrix/admin/cat_discsave_edit.php?lang='.urlencode(LANGUAGE_ID), )); $tabControl->BeginNextFormTab(); if ($ID > 0 && !$boolCopy) $tabControl->AddViewField('ID','ID:',$ID,false); $tabControl->AddCheckBoxField("ACTIVE", GetMessage("BT_CAT_DISC_SAVE_EDIT_FIELDS_ACTIVE").":", false, "Y", $str_ACTIVE=="Y"); $tabControl->AddEditField("NAME", GetMessage("BT_CAT_DISC_SAVE_EDIT_FIELDS_NAME").":", true, array("size" => 50, "maxlength" => 255), $str_NAME); $tabControl->AddDropDownField("SITE_ID", GetMessage('BT_CAT_DISC_SAVE_EDIT_FIELDS_SITE_ID').':', true, $arSiteList, $str_SITE_ID); $tabControl->BeginNextFormTab(); $tabControl->AddSection("BT_CAT_DISC_SAVE_EDIT_FIELDS_COUNT", GetMessage("BT_CAT_DISC_SAVE_EDIT_SECTIONS_COUNT")); $tabControl->BeginCustomField("COUNT",GetMessage('BT_CAT_DISC_SAVE_EDIT_FIELDS_COUNT').":",true); ?> : : : :   EndCustomField("COUNT", ''. ''. ''. ''. '' ); $tabControl->AddSection("BT_CAT_DISC_SAVE_EDIT_SECTIONS_ACTIVITY", GetMessage("BT_CAT_DISC_SAVE_EDIT_SECTIONS_ACTIVITY")); $tabControl->BeginCustomField('ACTIVITY_INFO',GetMessage("BT_CAT_DISC_SAVE_EDIT_FILEDS_ACTIVITY").":", true); ?> : : : :   EndCustomField("ACTIVITY_INFO", ''. ''. ''. ''. '' ); $tabControl->AddSection("BT_CAT_DISC_SAVE_EDIT_SECTIONS_RANGES", GetMessage("BT_CAT_DISC_SAVE_EDIT_SECTIONS_RANGES")); $tabControl->AddDropDownField("CURRENCY", GetMessage('BT_CAT_DISC_SAVE_EDIT_FIELDS_CURRENCY').':', true, $arCurrencyList, $str_CURRENCY); $tabControl->BeginCustomField('RANGES',GetMessage('BT_CAT_DISC_SAVE_EDIT_FIELDS_RANGES'),true); ?> GetCustomLabelHTML(); ?>:
'; $tabControl->EndCustomField('RANGES', $strHiddenRanges ); $tabControl->BeginNextFormTab(); $tabControl->BeginCustomField('GROUP_IDS',GetMessage('BT_CAT_DISC_SAVE_EDIT_FIELDS_GROUP_IDS'),true); ?> GetCustomLabelHTML(); ?>: 0 && !empty($arGroupList)) { $strGroupsHidden = ''; foreach ($arGroupList as &$value) { if (0 < intval($value)) $strGroupsHidden .= ''; } if (isset($value)) unset($value); } else { $strGroupsHidden = ''; } $tabControl->EndCustomField('GROUP_IDS', $strGroupsHidden ); $tabControl->BeginNextFormTab(); $tabControl->AddEditField("XML_ID", GetMessage("BT_CAT_DISC_SAVE_EDIT_FIELDS_XML_ID").":", false, array("size" => 50, "maxlength" => 255), $str_XML_ID); $tabControl->AddEditField("SORT", GetMessage("BT_CAT_DISC_SAVE_EDIT_FIELDS_SORT").":", false, array("size" => 7, "maxlength" => 10), $str_SORT); $arButtonsParams = array( 'disabled' => $bReadOnly, 'back_url' => '/bitrix/admin/cat_discsave_admin.php?lang='.urlencode(LANGUAGE_ID) ); $tabControl->Buttons($arButtonsParams); $tabControl->Show(); $tabControl->ShowWarnings("cat_disc_save", $obMessages); ?>