1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
price.php
См. документацию.
1<?php
2
6
8{
17 public static function CheckFields($ACTION, &$arFields, $ID = 0)
18 {
19 global $APPLICATION;
20
21 $currency = false;
22
23 if ($ACTION == "ADD")
24 {
25 if (!isset($arFields['PRODUCT_ID']))
26 {
27 $APPLICATION->ThrowException(Loc::getMessage("KGP_EMPTY_PRODUCT"), "EMPTY_PRODUCT_ID");
28 return false;
29 }
30 if (!isset($arFields['CATALOG_GROUP_ID']))
31 {
32 $APPLICATION->ThrowException(Loc::getMessage("KGP_EMPTY_CATALOG_GROUP"), "EMPTY_CATALOG_GROUP_ID");
33 return false;
34 }
35 if (!isset($arFields['CURRENCY']))
36 {
37 $APPLICATION->ThrowException(Loc::getMessage("KGP_EMPTY_CURRENCY"), "EMPTY_CURRENCY");
38 return false;
39 }
40 if (!isset($arFields['PRICE']))
41 $arFields['PRICE'] = 0;
42
43 if (!isset($arFields['QUANTITY_FROM']))
44 $arFields['QUANTITY_FROM'] = false;
45 if (!isset($arFields['QUANTITY_TO']))
46 $arFields['QUANTITY_TO'] = false;
47 }
48
49 $priceExist = isset($arFields['PRICE']);
50 $currencyExist = isset($arFields['CURRENCY']);
51
52 if (isset($arFields['PRODUCT_ID']))
53 {
54 $arFields['PRODUCT_ID'] = (int)$arFields['PRODUCT_ID'];
55 if ($arFields['PRODUCT_ID'] <= 0)
56 {
57 $APPLICATION->ThrowException(Loc::getMessage("KGP_EMPTY_PRODUCT"), "EMPTY_PRODUCT_ID");
58 return false;
59 }
60 }
61 if (isset($arFields['CATALOG_GROUP_ID']))
62 {
63 $arFields['CATALOG_GROUP_ID'] = (int)$arFields['CATALOG_GROUP_ID'];
64 if ($arFields['CATALOG_GROUP_ID'] <= 0)
65 {
66 $APPLICATION->ThrowException(Loc::getMessage("KGP_EMPTY_CATALOG_GROUP"), "EMPTY_CATALOG_GROUP_ID");
67 return false;
68 }
69 }
70 if ($priceExist)
71 $arFields['PRICE'] = (float)$arFields['PRICE'];
72 if ($currencyExist)
73 {
75 if (empty($currency))
76 {
77 $APPLICATION->ThrowException(Loc::getMessage("KGP_NO_CURRENCY", array('#ID#' => $arFields["CURRENCY"])), "CURRENCY");
78 return false;
79 }
80 }
81 if (isset($arFields['PRICE_SCALE']))
82 {
83 $arFields['PRICE_SCALE'] = (float)$arFields['PRICE_SCALE'];
84 }
85 else
86 {
87 if ($priceExist != $currencyExist)
88 {
90 'select' => array('PRICE', 'CURRENCY'),
91 'filter' => array('=ID' => $ID)
92 ));
93 $currentValues = $iterator->fetch();
94 if (!empty($currentValues))
95 {
96 $currentPrice = ($priceExist ? $arFields['PRICE'] : (float)$currentValues['PRICE']);
97 $currentCurrency = ($currencyExist ? $arFields['CURRENCY'] : $currentValues['CURRENCY']);
98 $currency = CCurrency::GetByID($currentCurrency);
99 if (!empty($currency))
100 $arFields['PRICE_SCALE'] = $currentPrice*$currency['CURRENT_BASE_RATE'];
101 unset($currentCurrency, $currentPrice);
102 }
104 }
105 elseif ($priceExist && $currencyExist)
106 {
107 $arFields['PRICE_SCALE'] = $arFields['PRICE']*$currency['CURRENT_BASE_RATE'];
108 }
109 }
110 unset($currencyExist, $priceExist, $currency);
111
112 if (isset($arFields['QUANTITY_FROM']) && $arFields['QUANTITY_FROM'] !== false)
113 {
114 $arFields['QUANTITY_FROM'] = (int)$arFields['QUANTITY_FROM'];
115 if ($arFields['QUANTITY_FROM'] <= 0)
116 $arFields['QUANTITY_FROM'] = false;
117 }
118 if (isset($arFields['QUANTITY_TO']) && $arFields['QUANTITY_TO'] !== false)
119 {
120 $arFields['QUANTITY_TO'] = (int)$arFields['QUANTITY_TO'];
121 if ($arFields['QUANTITY_TO'] <= 0)
122 $arFields['QUANTITY_TO'] = false;
123 }
124
125 return true;
126 }
127
132 public static function GetByID($id)
133 {
134 global $USER;
135
136 $id = (int)$id;
137 if ($id <= 0)
138 return false;
139
140 $price = Catalog\PriceTable::getById($id)->fetch();
141 if (empty($price))
142 return false;
143
144 if ($price['TIMESTAMP_X'] instanceof Main\Type\DateTime)
145 $price['TIMESTAMP_X'] = $price['TIMESTAMP_X']->toString();
146
147 $priceTypes = CCatalogGroup::GetListArray();
148 $price['CATALOG_GROUP_NAME'] = null;
149 if (isset($priceTypes[$price['CATALOG_GROUP_ID']]))
150 {
151 $price['CATALOG_GROUP_NAME'] = ($priceTypes[$price['CATALOG_GROUP_ID']]['NAME_LANG'] !== null
152 ? $priceTypes[$price['CATALOG_GROUP_ID']]['NAME_LANG']
153 : $priceTypes[$price['CATALOG_GROUP_ID']]['NAME']
154 );
155 }
156 unset($priceTypes);
157
158 $price['CAN_ACCESS'] = 'N';
159 $price['CAN_BUY'] = 'N';
161 'select' => array('ACCESS'),
162 'filter' => array(
163 '=CATALOG_GROUP_ID' => $price['CATALOG_GROUP_ID'],
164 '@GROUP_ID' => (CCatalog::IsUserExists() ? $USER->GetUserGroupArray() : array(2))
165 )
166 ));
167 while ($row = $iterator->fetch())
168 {
169 if ($row['ACCESS'] == Catalog\GroupAccessTable::ACCESS_BUY)
170 $price['CAN_ACCESS'] = 'Y';
172 $price['CAN_BUY'] = 'Y';
173 }
174 unset($row, $iterator);
175
176 return $price;
177 }
178
187 public static function Add($fields, $recount = false)
188 {
189 if (!is_array($fields))
190 return false;
191
192 if (!isset($fields['PRICE']))
193 $fields['PRICE'] = 0;
194 self::normalizeFields($fields);
195
196 $data = array(
197 'fields' => $fields
198 );
199 $recount = ($recount === true);
200 if ($recount)
201 $data['actions'] = array('OLD_RECOUNT' => true);
202
204 unset($data);
205
206 $id = false;
207 if (!$result->isSuccess())
208 self::convertErrors($result);
209 else
210 $id = (int)$result->getId();
211 unset($result);
212
213 return $id;
214 }
215
225 public static function Update($id, $fields, $recount = false)
226 {
227 $id = (int)$id;
228 if ($id <= 0 || !is_array($fields))
229 return false;
230
231 self::normalizeFields($fields);
232
233 $data = array(
234 'fields' => $fields
235 );
236 $recount = ($recount === true);
237 if ($recount)
238 $data['actions'] = array('OLD_RECOUNT' => true);
239
241 unset($data);
242
243 if (!$result->isSuccess())
244 {
245 $id = false;
246 self::convertErrors($result);
247 }
248
249 return $id;
250 }
251
259 public static function Delete($id)
260 {
261 $id = (int)$id;
262 if ($id <= 0)
263 return false;
264
266 $success = $result->isSuccess();
267 if (!$success)
268 self::convertErrors($result);
269 unset($result);
270
271 return $success;
272 }
273
284 public static function GetBasePrice($productID, $quantityFrom = false, $quantityTo = false, $boolExt = true)
285 {
286 $productID = (int)$productID;
287 if ($productID <= 0)
288 return false;
289
290 $arBaseType = CCatalogGroup::GetBaseGroup();
291 if (empty($arBaseType))
292 return false;
293
295 'PRODUCT_ID' => $productID,
296 'CATALOG_GROUP_ID' => $arBaseType['ID']
297 );
298
299 if ($quantityFrom !== false)
300 $arFilter['QUANTITY_FROM'] = (int)$quantityFrom;
301 if ($quantityTo !== false)
302 $arFilter['QUANTITY_TO'] = (int)$quantityTo;
303
304 if ($boolExt === false)
305 {
306 $arSelect = array('ID', 'PRODUCT_ID', 'EXTRA_ID', 'CATALOG_GROUP_ID', 'PRICE', 'CURRENCY', 'TIMESTAMP_X',
307 'QUANTITY_FROM', 'QUANTITY_TO', 'TMP_ID'
308 );
309 }
310 else
311 {
312 $arSelect = array('ID', 'PRODUCT_ID', 'EXTRA_ID', 'CATALOG_GROUP_ID', 'PRICE', 'CURRENCY', 'TIMESTAMP_X',
313 'QUANTITY_FROM', 'QUANTITY_TO', 'TMP_ID',
314 'PRODUCT_QUANTITY', 'PRODUCT_QUANTITY_TRACE', 'PRODUCT_CAN_BUY_ZERO',
315 'PRODUCT_NEGATIVE_AMOUNT_TRACE', 'PRODUCT_WEIGHT', 'ELEMENT_IBLOCK_ID'
316 );
317 }
318
320 array('QUANTITY_FROM' => 'ASC', 'QUANTITY_TO' => 'ASC'),
321 $arFilter,
322 false,
323 array('nTopCount' => 1),
324 $arSelect
325 );
326 if ($res = $db_res->Fetch())
327 {
328 $res['BASE'] = 'Y';
329 $res['CATALOG_GROUP_NAME'] = $arBaseType['NAME'];
330 return $res;
331 }
332
333 return false;
334 }
335
348 public static function SetBasePrice($ProductID, $Price, $Currency, $quantityFrom = false, $quantityTo = false, $bGetID = false)
349 {
350 $bGetID = ($bGetID == true);
351
352 $arFields = array();
353 $arFields["PRICE"] = (float)$Price;
354 $arFields["CURRENCY"] = $Currency;
355 $arFields["QUANTITY_FROM"] = ($quantityFrom == false ? false : (int)$quantityFrom);
356 $arFields["QUANTITY_TO"] = ($quantityTo == false ? false : (int)$quantityTo);
357 $arFields["EXTRA_ID"] = false;
358
359 if ($arBasePrice = CPrice::GetBasePrice($ProductID, $quantityFrom, $quantityTo, false))
360 {
361 $ID = CPrice::Update($arBasePrice["ID"], $arFields);
362 }
363 else
364 {
365 $arBaseGroup = CCatalogGroup::GetBaseGroup();
366 $arFields["CATALOG_GROUP_ID"] = $arBaseGroup["ID"];
367 $arFields["PRODUCT_ID"] = $ProductID;
368
370 }
371 if (!$ID)
372 return false;
373
374 return ($bGetID ? $ID : true);
375 }
376
377 public static function ReCalculate($TYPE, $ID, $VAL)
378 {
379 $ID = (int)$ID;
380 if ($ID <= 0)
381 return;
382
383 $iblockList = array();
384
385 if ($TYPE == 'EXTRA')
386 {
387 $baseType = CCatalogGroup::GetBaseGroup();
388 if (empty($baseType))
389 return;
390
392 array(),
393 array('EXTRA_ID' => $ID),
394 false,
395 false,
396 array('ID', 'PRODUCT_ID', 'EXTRA_ID', 'QUANTITY_FROM', 'QUANTITY_TO')
397 );
398 while ($res = $db_res->Fetch())
399 {
400 $parentFilter = array(
401 'PRODUCT_ID' => $res['PRODUCT_ID'],
402 'CATALOG_GROUP_ID' => $baseType['ID'],
403 'QUANTITY_FROM' => ($res['QUANTITY_FROM'] === null ? false : $res['QUANTITY_FROM']),
404 'QUANTITY_TO' => ($res['QUANTITY_TO'] === null ? false : $res['QUANTITY_TO'])
405 );
406 $parentIterator = CPrice::GetListEx(
407 array(),
408 $parentFilter,
409 false,
410 false,
411 array('ID', 'PRODUCT_ID', 'PRICE', 'CURRENCY', 'ELEMENT_IBLOCK_ID')
412 );
413 $basePrice = $parentIterator->Fetch();
414 if (!empty($basePrice))
415 {
416 $basePrice['ELEMENT_IBLOCK_ID'] = (int)$basePrice['ELEMENT_IBLOCK_ID'];
417 $fields = array(
418 'PRICE' => roundex($basePrice['PRICE'] * (1 + 1 * $VAL / 100), 2),
419 'CURRENCY' => $basePrice['CURRENCY']
420 );
422 unset($arFields);
423 $iblockList[$basePrice['ELEMENT_IBLOCK_ID']] = $basePrice['ELEMENT_IBLOCK_ID'];
424 }
425 unset($basePrice, $parentIterator);
426 }
427 unset($res, $db_res, $baseType);
428 }
429 else
430 {
432 array(),
433 array("PRODUCT_ID" => $ID),
434 false,
435 false,
436 array('ID', 'PRODUCT_ID', 'EXTRA_ID', 'ELEMENT_IBLOCK_ID')
437 );
438 while ($res = $db_res->Fetch())
439 {
440 $res['ELEMENT_IBLOCK_ID'] = (int)$res['ELEMENT_IBLOCK_ID'];
441 $res["EXTRA_ID"] = (int)$res["EXTRA_ID"];
442 if ($res["EXTRA_ID"] > 0)
443 {
444 $res1 = CExtra::GetByID($res["EXTRA_ID"]);
446 "PRICE" => $VAL * (1 + 1 * $res1["PERCENTAGE"] / 100),
447 );
449 $iblockList[$res['ELEMENT_IBLOCK_ID']] = $res['ELEMENT_IBLOCK_ID'];
450 }
451 }
452 unset($res, $db_res);
453 }
454
455 if (!empty($iblockList) && Main\Loader::includeModule('iblock'))
456 {
457 foreach ($iblockList as &$iblock)
458 CIblock::clearIblockTagCache($iblock);
459 unset($iblock);
460 }
461 unset($iblockList);
462 }
463
464 public static function OnCurrencyDelete($Currency)
465 {
466 global $DB;
467 if ($Currency == '')
468 return false;
469
470 $strSql = "DELETE FROM b_catalog_price WHERE CURRENCY = '".$DB->ForSql($Currency)."'";
471 return $DB->Query($strSql, true);
472 }
473
481 public static function OnIBlockElementDelete($ProductID)
482 {
483 return true;
484 }
485
486 public static function DeleteByProduct($ProductID, $arExceptionIDs = array())
487 {
488 global $DB;
489
490 $ProductID = (int)$ProductID;
491 if ($ProductID <= 0)
492 return false;
493 foreach (GetModuleEvents("catalog", "OnBeforeProductPriceDelete", true) as $arEvent)
494 {
495 if (ExecuteModuleEventEx($arEvent, array($ProductID, &$arExceptionIDs))===false)
496 return false;
497 }
498
499 if (!empty($arExceptionIDs))
501
502 if (!empty($arExceptionIDs))
503 {
504 $strSql = "DELETE FROM b_catalog_price WHERE PRODUCT_ID = ".$ProductID." AND ID NOT IN (".implode(',',$arExceptionIDs).")";
505 }
506 else
507 {
508 $strSql = "DELETE FROM b_catalog_price WHERE PRODUCT_ID = ".$ProductID;
509 }
510
511 $mxRes = $DB->Query($strSql, true);
512
513 foreach (GetModuleEvents("catalog", "OnProductPriceDelete", true) as $arEvent)
514 ExecuteModuleEventEx($arEvent, array($ProductID,$arExceptionIDs));
515
516 Catalog\Product\Sku::calculatePrice($ProductID, null, null, array());
517
518 return $mxRes;
519 }
520
528 public static function ReCountForBase(&$arFields)
529 {
530 static $arExtraList = array();
531
532 $arFilter = array('PRODUCT_ID' => $arFields['PRODUCT_ID'],'!CATALOG_GROUP_ID' => $arFields['CATALOG_GROUP_ID']);
533 if (isset($arFields['QUANTITY_FROM']))
534 $arFilter['QUANTITY_FROM'] = $arFields['QUANTITY_FROM'];
535 if (isset($arFields['QUANTITY_TO']))
536 $arFilter['QUANTITY_TO'] = $arFields['QUANTITY_TO'];
537
538 $rsPrices = CPrice::GetListEx(
539 array('CATALOG_GROUP_ID' => 'ASC',"QUANTITY_FROM" => "ASC", "QUANTITY_TO" => "ASC"),
540 $arFilter,
541 false,
542 false,
543 array('ID','EXTRA_ID')
544 );
545 while ($arPrice = $rsPrices->Fetch())
546 {
547 $arPrice['EXTRA_ID'] = (int)$arPrice['EXTRA_ID'];
548 if ($arPrice['EXTRA_ID'] > 0)
549 {
550 $boolSearch = isset($arExtraList[$arPrice['EXTRA_ID']]);
551 if (!$boolSearch)
552 {
553 $arExtra = CExtra::GetByID($arPrice['EXTRA_ID']);
554 if (!empty($arExtra))
555 {
556 $boolSearch = true;
557 $arExtraList[$arExtra['ID']] = (float)$arExtra['PERCENTAGE'];
558 }
559 }
560 if ($boolSearch)
561 {
562 $arNewPrice = array(
563 'CURRENCY' => $arFields['CURRENCY'],
564 'PRICE' => roundEx($arFields["PRICE"] * (1 + $arExtraList[$arPrice['EXTRA_ID']]/100), CATALOG_VALUE_PRECISION),
565 );
566 CPrice::Update($arPrice['ID'],$arNewPrice,false);
567 }
568 unset($boolSearch);
569 }
570 }
571 }
572
581 public static function ReCountFromBase(&$arFields, &$boolBase)
582 {
583 $arBaseGroup = CCatalogGroup::GetBaseGroup();
584 if (!empty($arBaseGroup))
585 {
586 if ($arFields['CATALOG_GROUP_ID'] == $arBaseGroup['ID'])
587 {
588 $boolBase = true;
589 }
590 else
591 {
592 if (!empty($arFields['EXTRA_ID']) && intval($arFields['EXTRA_ID']) > 0)
593 {
594 $arExtra = CExtra::GetByID($arFields['EXTRA_ID']);
595 if (!empty($arExtra))
596 {
597 $arExtra["PERCENTAGE"] = (float)$arExtra["PERCENTAGE"];
598 $arFilter = array('PRODUCT_ID' => $arFields['PRODUCT_ID'],'CATALOG_GROUP_ID' => $arBaseGroup['ID']);
599 if (isset($arFields['QUANTITY_FROM']))
600 $arFilter['QUANTITY_FROM'] = $arFields['QUANTITY_FROM'];
601 if (isset($arFields['QUANTITY_TO']))
602 $arFilter['QUANTITY_TO'] = $arFields['QUANTITY_TO'];
603 $rsBasePrices = CPrice::GetListEx(
604 array("QUANTITY_FROM" => "ASC", "QUANTITY_TO" => "ASC"),
605 $arFilter,
606 false,
607 array('nTopCount' => 1),
608 array('PRICE','CURRENCY')
609 );
610 if ($arBasePrice = $rsBasePrices->Fetch())
611 {
612 $arFields['CURRENCY'] = $arBasePrice['CURRENCY'];
613 $arFields['PRICE'] = roundEx($arBasePrice["PRICE"] * (1 + $arExtra["PERCENTAGE"]/100), CATALOG_VALUE_PRECISION);
614 $currency = CCurrency::GetByID($arBasePrice['CURRENCY']);
615 if (!empty($currency))
616 $arFields['PRICE_SCALE'] = $arFields['PRICE']*$currency['CURRENT_BASE_RATE'];
617 }
618 else
619 {
620 $arFields['EXTRA_ID'] = 0;
621 }
622 }
623 else
624 {
625 $arFields['EXTRA_ID'] = 0;
626 }
627 }
628 }
629 }
630 }
631
632 private static function convertErrors(Main\Entity\Result $result): void
633 {
634 global $APPLICATION;
635
636 $oldMessages = [];
637 foreach ($result->getErrorMessages() as $errorText)
638 {
639 $oldMessages[] = ['text' => $errorText];
640 }
641 unset($errorText);
642
643 if (!empty($oldMessages))
644 {
645 $error = new CAdminException($oldMessages);
646 $APPLICATION->ThrowException($error);
647 unset($error);
648 }
649 unset($oldMessages);
650 }
651
652 private static function normalizeFields(array &$fields): void
653 {
654 if (isset($fields['QUANTITY_FROM']))
655 {
656 if (
657 $fields['QUANTITY_FROM'] === ''
658 || $fields['QUANTITY_FROM'] === false
659 || $fields['QUANTITY_FROM'] === 0
660 )
661 {
662 $fields['QUANTITY_FROM'] = null;
663 }
664 }
665 if (isset($fields['QUANTITY_TO']))
666 {
667 if (
668 $fields['QUANTITY_TO'] === ''
669 || $fields['QUANTITY_TO'] === false
670 || $fields['QUANTITY_TO'] === 0
671 )
672 {
673 $fields['QUANTITY_TO'] = null;
674 }
675 }
676 if (isset($fields['EXTRA_ID']))
677 {
678 if ($fields['EXTRA_ID'] === '' || $fields['EXTRA_ID'] === false)
679 {
680 $fields['EXTRA_ID'] = null;
681 }
682 }
683 }
684}
$db_res
Определения options_user_settings.php:8
const CATALOG_VALUE_PRECISION
Определения include.php:109
global $APPLICATION
Определения include.php:80
static update($id, array $data)
Определения entity.php:229
static add(array $data)
Определения entity.php:150
static delete($id)
Определения entity.php:317
static calculatePrice($id, $iblockId=null, $type=null, array $priceTypes=[])
Определения sku.php:396
static includeModule($moduleName)
Определения loader.php:67
static getMessage($code, $replace=null, $language=null)
Определения loc.php:30
static getById($id)
Определения datamanager.php:364
static getList(array $parameters=array())
Определения datamanager.php:431
static normalizeArrayValuesByInt(&$map, $sorted=true)
Определения collection.php:150
static GetListArray()
Определения cataloggroup.php:291
static GetBaseGroup()
Определения cataloggroup.php:302
static IsUserExists()
Определения catalog.php:1812
static GetByID($currency)
Определения currency.php:453
static GetByID($ID)
Определения extra.php:15
Определения price.php:8
static Delete($id)
Определения price.php:259
static ReCountForBase(&$arFields)
Определения price.php:528
static SetBasePrice($ProductID, $Price, $Currency, $quantityFrom=false, $quantityTo=false, $bGetID=false)
Определения price.php:348
static GetByID($id)
Определения price.php:132
static OnCurrencyDelete($Currency)
Определения price.php:464
static CheckFields($ACTION, &$arFields, $ID=0)
Определения price.php:17
static ReCalculate($TYPE, $ID, $VAL)
Определения price.php:377
static GetBasePrice($productID, $quantityFrom=false, $quantityTo=false, $boolExt=true)
Определения price.php:284
static Update($id, $fields, $recount=false)
Определения price.php:225
static OnIBlockElementDelete($ProductID)
Определения price.php:481
static Add($fields, $recount=false)
Определения price.php:187
static DeleteByProduct($ProductID, $arExceptionIDs=array())
Определения price.php:486
static ReCountFromBase(&$arFields, &$boolBase)
Определения price.php:581
static GetListEx($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения price.php:178
$arFields
Определения dblapprove.php:5
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
$result
Определения get_property_values.php:14
if($ajaxMode) $ID
Определения get_user.php:27
if($request->isPost() && $currentAction !==null &&check_bitrix_sessid()) $currentValues
Определения options.php:198
if(! $catalogEdit->isSuccess()) $iblock
Определения iblock_catalog_edit.php:38
$iblockList
Определения iblock_catalog_list.php:271
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
$ACTION
Определения csv_new_setup.php:27
$success
Определения mail_entry.php:69
roundEx($value, $prec=0)
Определения tools.php:4635
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
Определения ufield.php:9
Определения collection.php:2
return false
Определения prolog_main_admin.php:185
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$TYPE
Определения rss.php:27
$currency
Определения template.php:266
$error
Определения subscription_card_product.php:20
$arFilter
Определения user_search.php:106
$iterator
Определения yandex_run.php:610
$fields
Определения yandex_run.php:501