Exemple #1
0
 /**
  * <p>Метод служит для проверки параметров, переданных в методы <a href="http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogproductgroups/ccatalogproductgroups.add.php">CCatalogProductGroups::Add</a> и <a href="http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogproductgroups/ccatalogproductgroups.update.php">CCatalogProductGroups::Update</a>.</p>
  *
  *
  *
  *
  * @param string $ACTION  Указывает, для какого метода идет проверка. Возможные значения:
  * <br><ul> <li> <b>ADD</b> - для метода <a
  * href="http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogproductgroups/ccatalogproductgroups.add.php">CCatalogProductGroups::Add</a>;</li>
  * <li> <b>UPDATE</b> - для метода <a
  * href="http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogproductgroups/ccatalogproductgroups.update.php">CCatalogProductGroups::Update</a>.</li>
  * </ul>
  *
  *
  *
  * @param array &$arFields  Ассоциативный массив параметров информации о связи товаров и
  * групп пользователей. Допустимые ключи: <ul> <li> <b>PRODUCT_ID</b> - код
  * товара;</li> <li> <b>GROUP_ID</b> - код группы пользователей;</li> <li> <b>ACCESS_LENGTH</b>
  * - длина периода, на который пользователь привязывается к группе
  * пользователей при покупке товара (0 - навсегда);</li> <li>
  * <b>ACCESS_LENGTH_TYPE</b> - тип периода, на который пользователь
  * привязывается к группе пользователей при покупке товара ("H" - час,
  * "D" - сутки, "W" - неделя, "M" - месяц, "Q" - квартал, "S" - полугодие, "Y" -
  * год).</li> </ul>
  *
  *
  *
  * @param int $ID = 0 Код записи с информацией о связи товаров и групп пользователей, к
  * которым пользователь привязывается при покупке товаров.
  * Параметр является необязательным и имеет смысл только для $ACTION =
  * 'UPDATE'.
  *
  *
  *
  * @return bool <p> В случае корректности переданных параметров возвращает true,
  * иначе - false. Если функция вернула false, с помощью $APPLICATION-&gt;GetException()
  * можно получить текст ошибок.</p>
  *
  *
  * <h4>See Also</h4> 
  * <ul> <li><a href="http://dev.1c-bitrix.ru/api_help/catalog/fields.php">Структура таблицы</a></li> <li><a
  * href="http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogproductgroups/ccatalogproductgroups.add.php">CCatalogProductGroups::Add</a></li>
  * <li><a
  * href="http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogproductgroups/ccatalogproductgroups.update.php">CCatalogProductGroups::Update</a></li>
  * </ul> </ht<br><br>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogproductgroups/checkfields.php
  * @author Bitrix
  */
 public static function CheckFields($ACTION, &$arFields, $ID = 0)
 {
     if ((is_set($arFields, "PRODUCT_ID") || $ACTION == "ADD") && intval($arFields["PRODUCT_ID"]) <= 0) {
         return false;
     }
     if ((is_set($arFields, "GROUP_ID") || $ACTION == "ADD") && intval($arFields["GROUP_ID"]) <= 0) {
         return false;
     }
     if (is_set($arFields, "ACCESS_LENGTH") || $ACTION == "ADD") {
         $arFields["ACCESS_LENGTH"] = intval($arFields["ACCESS_LENGTH"]);
         if ($arFields["ACCESS_LENGTH"] < 0) {
             $arFields["ACCESS_LENGTH"] = 0;
         }
     }
     if ((is_set($arFields, "ACCESS_LENGTH_TYPE") || $ACTION == "ADD") && !array_key_exists($arFields["ACCESS_LENGTH_TYPE"], CCatalogProduct::GetTimePeriodTypes(true))) {
         $arFields["ACCESS_LENGTH_TYPE"] = CCatalogProduct::TIME_PERIOD_DAY;
     }
     return true;
 }
Exemple #2
0
 $currencyList = array();
 foreach (Currency\CurrencyManager::getCurrencyList() as $currency => $currencyName) {
     $currencyList[$currency] = array('CURRENCY' => $currency, 'FULL_NAME' => htmlspecialcharsex($currencyName), 'FULL_NAME_JS' => CUtil::JSEscape(htmlspecialcharsbx($currencyName)));
 }
 unset($currency, $currencyName);
 $IBLOCK_ID = (int) $IBLOCK_ID;
 if ($IBLOCK_ID <= 0) {
     return;
 }
 $MENU_SECTION_ID = (int) $MENU_SECTION_ID;
 $PRODUCT_ID = $ID > 0 ? CIBlockElement::GetRealElement($ID) : 0;
 $arBaseProduct = false;
 $periodTimeTypes = array();
 if ($arMainCatalog['SUBSCRIPTION'] == 'Y') {
     $arDefProduct = array('QUANTITY' => '', 'QUANTITY_RESERVED' => '', 'VAT_ID' => 0, 'VAT_INCLUDED' => 'N', 'QUANTITY_TRACE_ORIG' => 'D', 'CAN_BUY_ZERO_ORIG' => 'D', 'PRICE_TYPE' => '', 'RECUR_SCHEME_TYPE' => '', 'RECUR_SCHEME_LENGTH' => '', 'TRIAL_PRICE_ID' => '', 'WITHOUT_ORDER' => '', 'PURCHASING_PRICE' => '', 'PURCHASING_CURRENCY' => '', 'BARCODE_MULTI' => '', 'SUBSCRIBE_ORIG' => 'D');
     $periodTimeTypes = CCatalogProduct::GetTimePeriodTypes(true);
 } else {
     $arDefProduct = array('QUANTITY' => '', 'QUANTITY_RESERVED' => '', 'WEIGHT' => '', 'WIDTH' => '', 'LENGTH' => '', 'HEIGHT' => '', 'MEASURE' => '', 'VAT_ID' => 0, 'VAT_INCLUDED' => 'N', 'QUANTITY_TRACE_ORIG' => 'D', 'CAN_BUY_ZERO_ORIG' => 'D', 'PURCHASING_PRICE' => '', 'PURCHASING_CURRENCY' => '', 'BARCODE_MULTI' => '', 'SUBSCRIBE_ORIG' => 'D');
 }
 if ($PRODUCT_ID > 0) {
     $bReadOnly = !($USER->CanDoOperation('catalog_price') && CIBlockElementRights::UserHasRightTo($IBLOCK_ID, $PRODUCT_ID, "element_edit_price"));
     if ($arMainCatalog['SUBSCRIPTION'] == 'Y') {
         $arProductSelect = array('ID', 'QUANTITY', 'QUANTITY_RESERVED', 'QUANTITY_TRACE_ORIG', 'VAT_ID', 'VAT_INCLUDED', 'CAN_BUY_ZERO_ORIG', 'PRICE_TYPE', 'RECUR_SCHEME_TYPE', 'RECUR_SCHEME_LENGTH', 'TRIAL_PRICE_ID', 'WITHOUT_ORDER', 'PURCHASING_PRICE', 'PURCHASING_CURRENCY', 'BARCODE_MULTI', 'SUBSCRIBE_ORIG', 'TYPE');
     } else {
         $arProductSelect = array('ID', 'QUANTITY', 'QUANTITY_RESERVED', 'QUANTITY_TRACE_ORIG', 'WEIGHT', 'WIDTH', 'LENGTH', 'HEIGHT', 'MEASURE', 'VAT_ID', 'VAT_INCLUDED', 'CAN_BUY_ZERO_ORIG', 'PURCHASING_PRICE', 'PURCHASING_CURRENCY', 'BARCODE_MULTI', 'SUBSCRIBE_ORIG', 'TYPE');
     }
     $rsProducts = CCatalogProduct::GetList(array(), array('ID' => $PRODUCT_ID), false, false, $arProductSelect);
     $arBaseProduct = $rsProducts->Fetch();
     if ($bCopy) {
         $arBaseProduct['QUANTITY'] = '';
         $arBaseProduct['QUANTITY_RESERVED'] = '';
Exemple #3
0
define('CATALOG_VALUE_PRECISION', 2);
define('CATALOG_CACHE_DEFAULT_TIME', 10800);
Loader::registerAutoLoadClasses('catalog', array('catalog' => 'install/index.php', 'CCatalog' => $strDBType . '/catalog.php', 'CCatalogGroup' => $strDBType . '/cataloggroup.php', 'CExtra' => $strDBType . '/extra.php', 'CPrice' => $strDBType . '/price.php', 'CCatalogProduct' => $strDBType . '/product.php', 'CCatalogProductGroups' => $strDBType . '/product_group.php', 'CCatalogLoad' => $strDBType . '/catalog_load.php', 'CCatalogExport' => $strDBType . '/catalog_export.php', 'CCatalogImport' => $strDBType . '/catalog_import.php', 'CCatalogDiscount' => $strDBType . '/discount.php', 'CCatalogDiscountCoupon' => $strDBType . '/discount_coupon.php', 'CCatalogVat' => $strDBType . '/vat.php', 'CCatalogEvent' => 'general/catalog_event.php', 'CCatalogSKU' => $strDBType . '/catalog_sku.php', 'CCatalogDiscountSave' => $strDBType . '/discount_save.php', 'CCatalogStore' => $strDBType . '/store.php', 'CCatalogStoreProduct' => $strDBType . '/store_product.php', 'CCatalogAdmin' => 'general/admin.php', 'CGlobalCondCtrl' => 'general/catalog_cond.php', 'CGlobalCondCtrlComplex' => 'general/catalog_cond.php', 'CGlobalCondCtrlGroup' => 'general/catalog_cond.php', 'CGlobalCondTree' => 'general/catalog_cond.php', 'CCatalogCondCtrl' => 'general/catalog_cond.php', 'CCatalogCondCtrlComplex' => 'general/catalog_cond.php', 'CCatalogCondCtrlGroup' => 'general/catalog_cond.php', 'CCatalogCondCtrlIBlockFields' => 'general/catalog_cond.php', 'CCatalogCondCtrlIBlockProps' => 'general/catalog_cond.php', 'CCatalogCondTree' => 'general/catalog_cond.php', 'CCatalogCondCtrlBasketProductFields' => 'general/sale_cond.php', 'CCatalogCondCtrlBasketProductProps' => 'general/sale_cond.php', 'CCatalogActionCtrlBasketProductFields' => 'general/sale_act.php', 'CCatalogActionCtrlBasketProductProps' => 'general/sale_act.php', 'CCatalogDiscountConvert' => 'general/discount_convert.php', 'CCatalogDiscountConvertTmp' => $strDBType . '/discount_convert.php', 'CCatalogProductProvider' => 'general/product_provider.php', 'CCatalogStoreBarCode' => $strDBType . '/store_barcode.php', 'CCatalogContractor' => $strDBType . '/contractor.php', 'CCatalogArrivalDocs' => $strDBType . '/store_docs_type.php', 'CCatalogMovingDocs' => $strDBType . '/store_docs_type.php', 'CCatalogDeductDocs' => $strDBType . '/store_docs_type.php', 'CCatalogReturnsDocs' => $strDBType . '/store_docs_type.php', 'CCatalogUnReservedDocs' => $strDBType . '/store_docs_type.php', 'CCatalogDocs' => $strDBType . '/store_docs.php', 'CCatalogStoreControlUtil' => 'general/store_utility.php', 'CCatalogStoreDocsElement' => $strDBType . '/store_docs_element.php', 'CCatalogStoreDocsBarcode' => $strDBType . '/store_docs_barcode.php', 'CCatalogIBlockParameters' => 'general/comp_parameters.php', 'CCatalogMeasure' => $strDBType . '/measure.php', 'CCatalogMeasureResult' => $strDBType . '/measure.php', 'CCatalogMeasureClassifier' => 'general/unit_classifier.php', 'CCatalogMeasureAdminResult' => 'general/measure_result.php', 'CCatalogMeasureRatio' => $strDBType . '/measure_ratio.php', 'CCatalogProductSet' => $strDBType . '/product_set.php', 'CCatalogAdminTools' => $strDBType . '/admin_tools.php', 'CCatalogAdminProductSetEdit' => $strDBType . '/admin_tools.php', 'CCatalogMenu' => 'general/catalog_menu.php', 'CCatalogCSVSettings' => 'general/csv_settings.php', 'CCatalogStepOperations' => 'general/step_operations.php', 'CCatalogProductSetAvailable' => 'general/step_operations.php', 'CCatalogTools' => 'general/tools.php', '\\Bitrix\\Catalog\\CatalogIblockTable' => 'lib/catalogiblock.php', '\\Bitrix\\Catalog\\DiscountTable' => 'lib/discount.php', '\\Bitrix\\Catalog\\DiscountCouponTable' => 'lib/discountcoupon.php', '\\Bitrix\\Catalog\\GroupTable' => 'lib/group.php', '\\Bitrix\\Catalog\\GroupLangTable' => 'lib/grouplang.php', '\\Bitrix\\Catalog\\ProductTable' => 'lib/product.php', '\\Bitrix\\Catalog\\StoreTable' => 'lib/store.php', '\\Bitrix\\Catalog\\CatalogViewedProductTable' => 'lib/catalogviewedproduct.php', '\\Bitrix\\Catalog\\VatTable' => 'lib/vat.php'));
if (defined('CATALOG_GLOBAL_VARS') && CATALOG_GLOBAL_VARS == 'Y') {
    global $CATALOG_CATALOG_CACHE;
    $CATALOG_CATALOG_CACHE = null;
    global $CATALOG_ONETIME_COUPONS_ORDER;
    $CATALOG_ONETIME_COUPONS_ORDER = null;
    global $CATALOG_PRODUCT_CACHE;
    $CATALOG_PRODUCT_CACHE = null;
    global $MAIN_EXTRA_LIST_CACHE;
    $MAIN_EXTRA_LIST_CACHE = null;
    global $CATALOG_BASE_GROUP;
    $CATALOG_BASE_GROUP = array();
    global $CATALOG_TIME_PERIOD_TYPES;
    $CATALOG_TIME_PERIOD_TYPES = CCatalogProduct::GetTimePeriodTypes(true);
    global $arCatalogAvailProdFields;
    $arCatalogAvailProdFields = CCatalogCSVSettings::getSettingsFields(CCatalogCSVSettings::FIELDS_ELEMENT);
    global $arCatalogAvailPriceFields;
    $arCatalogAvailPriceFields = CCatalogCSVSettings::getSettingsFields(CCatalogCSVSettings::FIELDS_CATALOG);
    global $arCatalogAvailValueFields;
    $arCatalogAvailValueFields = CCatalogCSVSettings::getSettingsFields(CCatalogCSVSettings::FIELDS_PRICE);
    global $arCatalogAvailQuantityFields;
    $arCatalogAvailQuantityFields = CCatalogCSVSettings::getSettingsFields(CCatalogCSVSettings::FIELDS_PRICE_EXT);
    global $arCatalogAvailGroupFields;
    $arCatalogAvailGroupFields = CCatalogCSVSettings::getSettingsFields(CCatalogCSVSettings::FIELDS_SECTION);
    global $defCatalogAvailProdFields;
    $defCatalogAvailProdFields = CCatalogCSVSettings::getDefaultSettings(CCatalogCSVSettings::FIELDS_ELEMENT);
    global $defCatalogAvailPriceFields;
    $defCatalogAvailPriceFields = CCatalogCSVSettings::getDefaultSettings(CCatalogCSVSettings::FIELDS_CATALOG);
    global $defCatalogAvailValueFields;
Exemple #4
0
 public static function CheckFields($ACTION, &$arFields, $ID = 0)
 {
     global $APPLICATION;
     $arMsg = array();
     $boolResult = true;
     $ACTION = strtoupper($ACTION);
     $ID = (int) $ID;
     if ($ACTION == "ADD" && (!is_set($arFields, "ID") || (int) $arFields["ID"] <= 0)) {
         $arMsg[] = array('id' => 'ID', 'text' => Loc::getMessage('KGP_EMPTY_ID'));
         $boolResult = false;
     }
     if ($ACTION != "ADD" && $ID <= 0) {
         $arMsg[] = array('id' => 'ID', 'text' => Loc::getMessage('KGP_EMPTY_ID'));
         $boolResult = false;
     }
     if ($ACTION != "ADD" && array_key_exists('ID', $arFields)) {
         unset($arFields["ID"]);
     }
     if (array_key_exists('TYPE', $arFields)) {
         unset($arFields['TYPE']);
     }
     if ('ADD' == $ACTION) {
         if (!array_key_exists('SUBSCRIBE', $arFields)) {
             $arFields['SUBSCRIBE'] = '';
         }
         $arFields['TYPE'] = self::TYPE_PRODUCT;
     }
     if (is_set($arFields, "ID") || $ACTION == "ADD") {
         $arFields["ID"] = (int) $arFields["ID"];
     }
     if (is_set($arFields, "QUANTITY") || $ACTION == "ADD") {
         $arFields["QUANTITY"] = doubleval($arFields["QUANTITY"]);
     }
     if (is_set($arFields, "QUANTITY_RESERVED") || $ACTION == "ADD") {
         $arFields["QUANTITY_RESERVED"] = doubleval($arFields["QUANTITY_RESERVED"]);
     }
     if (is_set($arFields, "OLD_QUANTITY")) {
         $arFields["OLD_QUANTITY"] = doubleval($arFields["OLD_QUANTITY"]);
     }
     if (is_set($arFields, "WEIGHT") || $ACTION == "ADD") {
         $arFields["WEIGHT"] = doubleval($arFields["WEIGHT"]);
     }
     if (is_set($arFields, "WIDTH") || $ACTION == "ADD") {
         $arFields["WIDTH"] = doubleval($arFields["WIDTH"]);
     }
     if (is_set($arFields, "LENGTH") || $ACTION == "ADD") {
         $arFields["LENGTH"] = doubleval($arFields["LENGTH"]);
     }
     if (is_set($arFields, "HEIGHT") || $ACTION == "ADD") {
         $arFields["HEIGHT"] = doubleval($arFields["HEIGHT"]);
     }
     if (is_set($arFields, "VAT_ID") || $ACTION == "ADD") {
         $arFields["VAT_ID"] = intval($arFields["VAT_ID"]);
     }
     if ((is_set($arFields, "VAT_INCLUDED") || $ACTION == "ADD") && $arFields["VAT_INCLUDED"] != "Y") {
         $arFields["VAT_INCLUDED"] = "N";
     }
     if ((is_set($arFields, "QUANTITY_TRACE") || $ACTION == "ADD") && ($arFields["QUANTITY_TRACE"] != "Y" && $arFields["QUANTITY_TRACE"] != "N")) {
         $arFields["QUANTITY_TRACE"] = "D";
     }
     if ((is_set($arFields, "CAN_BUY_ZERO") || $ACTION == "ADD") && ($arFields["CAN_BUY_ZERO"] != "Y" && $arFields["CAN_BUY_ZERO"] != "N")) {
         $arFields["CAN_BUY_ZERO"] = "D";
     }
     if ((is_set($arFields, "NEGATIVE_AMOUNT_TRACE") || $ACTION == "ADD") && ($arFields["NEGATIVE_AMOUNT_TRACE"] != "Y" && $arFields["NEGATIVE_AMOUNT_TRACE"] != "N")) {
         $arFields["NEGATIVE_AMOUNT_TRACE"] = "D";
     }
     if ((is_set($arFields, "PRICE_TYPE") || $ACTION == "ADD") && $arFields["PRICE_TYPE"] != "R" && $arFields["PRICE_TYPE"] != "T") {
         $arFields["PRICE_TYPE"] = "S";
     }
     if ((is_set($arFields, "RECUR_SCHEME_TYPE") || $ACTION == "ADD") && (StrLen($arFields["RECUR_SCHEME_TYPE"]) <= 0 || !in_array($arFields["RECUR_SCHEME_TYPE"], CCatalogProduct::GetTimePeriodTypes(false)))) {
         $arFields["RECUR_SCHEME_TYPE"] = self::TIME_PERIOD_DAY;
     }
     if ((is_set($arFields, "RECUR_SCHEME_LENGTH") || $ACTION == "ADD") && intval($arFields["RECUR_SCHEME_LENGTH"]) <= 0) {
         $arFields["RECUR_SCHEME_LENGTH"] = 0;
     }
     if ((is_set($arFields, "TRIAL_PRICE_ID") || $ACTION == "ADD") && intval($arFields["TRIAL_PRICE_ID"]) <= 0) {
         $arFields["TRIAL_PRICE_ID"] = false;
     }
     if ((is_set($arFields, "WITHOUT_ORDER") || $ACTION == "ADD") && $arFields["WITHOUT_ORDER"] != "Y") {
         $arFields["WITHOUT_ORDER"] = "N";
     }
     if ((is_set($arFields, "SELECT_BEST_PRICE") || $ACTION == "ADD") && $arFields["SELECT_BEST_PRICE"] != "N") {
         $arFields["SELECT_BEST_PRICE"] = "Y";
     }
     if (is_set($arFields, 'PURCHASING_PRICE')) {
         if ($ACTION != 'ADD') {
             if ($arFields['PURCHASING_PRICE'] === null || trim($arFields['PURCHASING_PRICE']) == '') {
                 unset($arFields['PURCHASING_PRICE']);
             }
         }
     }
     if (is_set($arFields, 'PURCHASING_PRICE')) {
         $arFields['PURCHASING_PRICE'] = str_replace(',', '.', $arFields['PURCHASING_PRICE']);
         $arFields['PURCHASING_PRICE'] = (double) $arFields['PURCHASING_PRICE'];
     }
     if (is_set($arFields, 'PURCHASING_CURRENCY') || $ACTION == "ADD" && is_set($arFields, 'PURCHASING_PRICE')) {
         if (empty($arFields['PURCHASING_CURRENCY'])) {
             $arMsg[] = array('id' => 'PURCHASING_CURRENCY', 'text' => Loc::getMessage('BT_MOD_CATALOG_PROD_ERR_COST_CURRENCY'));
             $boolResult = false;
         } else {
             $arFields['PURCHASING_CURRENCY'] = strtoupper($arFields['PURCHASING_CURRENCY']);
         }
     }
     if ((is_set($arFields, 'BARCODE_MULTI') || 'ADD' == $ACTION) && 'Y' != $arFields['BARCODE_MULTI']) {
         $arFields['BARCODE_MULTI'] = 'N';
     }
     if (array_key_exists('SUBSCRIBE', $arFields)) {
         if ('Y' != $arFields['SUBSCRIBE'] && 'N' != $arFields['SUBSCRIBE']) {
             $arFields['SUBSCRIBE'] = 'D';
         }
     }
     if (!$boolResult) {
         $obError = new CAdminException($arMsg);
         $APPLICATION->ThrowException($obError);
     }
     return $boolResult;
 }