18 private const PRODUCT_SETS =
'catalog_product_sets';
19 private const MULTI_PRICE_TYPES =
'catalog_multi_price_types';
20 private const CUMULATIVE_DISCOUNTS =
'catalog_cumulative_discounts';
21 private const MULTI_WARENHOUSES =
'catalog_multi_warenhouses';
22 private const EXTENDED_PRICES =
'catalog_price_quantity_ranges';
23 private const INVENTORY_MANAGEMENT =
'catalog_inventory_management';
24 private const INVENTORY_MANAGEMENT_1C =
'catalog_inventory_management_1c';
25 private const COMMON_PRODUCT_PROCESSING =
'catalog_common_product_processing';
26 private const PRODUCT_LIMIT =
'catalog_product_limit';
27 private const CATALOG_PERMISSIONS =
'catalog_permissions';
28 private const CATALOG_SERVICES =
'catalog_services';
30 private const LANDING_PRODUCT_LIMIT_VARIABLE =
'landing_product_limit';
33 private static ?
bool $bitrix24Included =
null;
36 private static array $tranferList = [
37 self::PRODUCT_SETS =>
'CatCompleteSet',
38 self::MULTI_PRICE_TYPES =>
'CatMultiPrice',
39 self::CUMULATIVE_DISCOUNTS =>
'CatDiscountSave',
40 self::MULTI_WARENHOUSES =>
'CatMultiStore'
44 private static array $retailExist = [
45 self::PRODUCT_SETS =>
true,
46 self::MULTI_PRICE_TYPES =>
true,
47 self::CUMULATIVE_DISCOUNTS =>
true,
48 self::MULTI_WARENHOUSES => true
52 private static array $bitrix24exist = [
53 self::PRODUCT_SETS =>
true,
54 self::EXTENDED_PRICES =>
true,
55 self::MULTI_PRICE_TYPES =>
true,
56 self::MULTI_WARENHOUSES =>
true,
57 self::INVENTORY_MANAGEMENT =>
true,
58 self::INVENTORY_MANAGEMENT_1C =>
true,
59 self::COMMON_PRODUCT_PROCESSING =>
true,
60 self::CATALOG_PERMISSIONS =>
true,
61 self::CATALOG_SERVICES =>
true,
65 private static array $bitrix24helpCodes = [
66 self::PRODUCT_SETS =>
'limit_shop_bundles',
67 self::MULTI_PRICE_TYPES =>
'limit_shop_variable_prices',
68 self::EXTENDED_PRICES =>
'limit_shop_variable_prices',
69 self::MULTI_WARENHOUSES =>
'limit_shop_stocks',
70 self::INVENTORY_MANAGEMENT =>
'limit_store_inventory_management',
71 self::PRODUCT_LIMIT =>
'limit_shop_products',
72 self::CATALOG_PERMISSIONS =>
'limit_crm_catalog_access_permissions',
73 self::CATALOG_SERVICES =>
'limit_crm_catalog_services',
76 private static int $helpCodesCounter = 0;
77 private static bool $initUi =
false;
85 if (self::isBitrix24())
87 $result = (int)
Bitrix24\Feature::getVariable(self::LANDING_PRODUCT_LIMIT_VARIABLE);
100 return self::isFeatureEnabled(self::PRODUCT_SETS);
110 return self::isFeatureEnabled(self::EXTENDED_PRICES);
120 return self::isFeatureEnabled(self::MULTI_PRICE_TYPES);
130 return self::isFeatureEnabled(self::CUMULATIVE_DISCOUNTS);
140 return self::isFeatureEnabled(self::MULTI_WARENHOUSES);
150 return self::isFeatureEnabled(self::INVENTORY_MANAGEMENT);
172 if (!self::isBitrix24())
174 return Option::get(
'catalog',
'catalog_common_product_processing') ===
'Y';
177 return self::isFeatureEnabled(self::COMMON_PRODUCT_PROCESSING);
187 return self::isFeatureEnabled(self::CATALOG_PERMISSIONS);
199 if (self::isBitrix24())
201 $lang = \CBitrix24::getLicensePrefix();
203 elseif (Loader::includeModule(
'intranet'))
205 $lang = \CIntranetUtils::getPortalZone();
207 elseif (Option::get(
'main',
'vendor') ===
'1c_bitrix')
212 return in_array(
$lang, [
'ru',
'by',
'kz'],
true);
222 return self::isFeatureEnabled(self::CATALOG_SERVICES);
237 return self::LANDING_PRODUCT_LIMIT_VARIABLE;
247 return self::getHelpLink(self::PRODUCT_SETS);
257 return self::getHelpLink(self::EXTENDED_PRICES);
267 return self::getHelpLink(self::MULTI_PRICE_TYPES);
277 return self::getHelpLink(self::MULTI_WARENHOUSES);
287 return self::getHelpLink(self::INVENTORY_MANAGEMENT);
297 return self::getHelpLink(self::PRODUCT_LIMIT);
307 return self::getHelpLink(self::CATALOG_PERMISSIONS);
317 return self::getHelpLink(self::CATALOG_SERVICES);
327 if (!self::isBitrix24())
331 if (self::$helpCodesCounter <= 0 || self::$initUi)
335 if (Loader::includeModule(
'ui'))
337 self::$initUi =
true;
348 private static function isFeatureEnabled(
string $featureId): bool
350 if ($featureId ===
'')
356 if (self::isBitrix24())
358 if (isset(self::$bitrix24exist[$featureId]))
360 $result = Bitrix24\Feature::isFeatureEnabled($featureId);
365 if (isset(self::$retailExist[$featureId]))
380 private static function getHelpLink(
string $featureId): ?
array
382 if (!self::isBitrix24())
386 if (!isset(self::$bitrix24helpCodes[$featureId]))
390 self::$helpCodesCounter++;
393 'LINK' =>
'top.BX.UI.InfoHelper.show(\''.self::$bitrix24helpCodes[$featureId].
'\');
',
394 'FEATURE_CODE
' => self::$bitrix24helpCodes[$featureId],
404 private static function isBitrix24(): bool
406 if (self::$bitrix24Included === null)
407 self::$bitrix24Included = Loader::includeModule('bitrix24
');
408 return self::$bitrix24Included;
if(!defined('SITE_ID')) $lang
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)