1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
basketbase.php
См. документацию.
1<?php
2
3namespace Bitrix\Sale;
4
5use Bitrix\Main;
6use Bitrix\Main\Localization\Loc;
7use Bitrix\Sale\Basket\RefreshFactory;
8use Bitrix\Sale\Basket\RefreshStrategy;
9use Bitrix\Sale\Internals;
10use Bitrix\Sale\Internals\CollectableEntity;
11
12Loc::loadMessages(__FILE__);
13
18abstract class BasketBase extends BasketItemCollection
19{
21 protected $siteId = null;
22
24 protected $fUserId = null;
25
27 protected $order = null;
28
31
33 protected $maxItemSort = null;
34
36 private $isLoadForFUserId = false;
37
39 protected $isSaveExecuting = false;
40
47 public function getItemByBasketCode($code)
48 {
49 if (
50 isset($this->basketItemIndexMap[$code])
51 && isset($this->collection[$this->basketItemIndexMap[$code]])
52 )
53 {
54 return $this->collection[$this->basketItemIndexMap[$code]];
55 }
56
57 return parent::getItemByBasketCode($code);
58 }
59
63 protected function getEntityParent()
64 {
65 return $this->getOrder();
66 }
67
73 private static function createBasketObject()
74 {
75 $registry = Registry::getInstance(static::getRegistryType());
76 $basketClassName = $registry->getBasketClassName();
77
78 return new $basketClassName;
79 }
80
89 public static function loadItemsForFUser($fUserId, $siteId)
90 {
92 $basket = static::create($siteId);
93
94 $basket->setFUserId($fUserId);
95
96 $basket->isLoadForFUserId = true;
97
99 return $basket->loadFromDb([
100 "=FUSER_ID" => $fUserId,
101 "=LID" => $siteId,
102 "ORDER_ID" => null
103 ]);
104 }
105
113 protected function loadFromDb(array $filter)
114 {
115 $select = [
116 "ID", "LID", "MODULE", "PRODUCT_ID", "QUANTITY", "WEIGHT",
117 "DELAY", "CAN_BUY", "PRICE", "CUSTOM_PRICE", "BASE_PRICE",
118 'PRODUCT_PRICE_ID', 'PRICE_TYPE_ID', "CURRENCY", 'BARCODE_MULTI',
119 "RESERVED", "RESERVE_QUANTITY", "NAME", "CATALOG_XML_ID",
120 "VAT_RATE", "NOTES", "DISCOUNT_PRICE","PRODUCT_PROVIDER_CLASS",
121 "CALLBACK_FUNC", "ORDER_CALLBACK_FUNC", "PAY_CALLBACK_FUNC",
122 "CANCEL_CALLBACK_FUNC", "DIMENSIONS", "TYPE", "SET_PARENT_ID",
123 "DETAIL_PAGE_URL", "FUSER_ID", 'MEASURE_CODE', 'MEASURE_NAME',
124 'ORDER_ID', 'DATE_INSERT', 'DATE_UPDATE', 'PRODUCT_XML_ID',
125 'SUBSCRIBE', 'RECOMMENDATION', 'VAT_INCLUDED', 'SORT',
126 'DATE_REFRESH', 'DISCOUNT_NAME', 'DISCOUNT_VALUE', 'DISCOUNT_COUPON',
127 'XML_ID', 'MARKING_CODE_GROUP'
128 ];
129
130 $itemList = [];
131 $first = true;
132
133 $res = static::getList([
134 "select" => $select,
135 "filter" => $filter,
136 "order" => ['SORT' => 'ASC', 'ID' => 'ASC'],
137 ]);
138 while ($item = $res->fetch())
139 {
140 if ($first)
141 {
142 $this->setSiteId($item['LID']);
143 $this->setFUserId($item['FUSER_ID']);
144 $first = false;
145 }
146
147 $itemList[$item['ID']] = $item;
148 }
149
150 foreach ($itemList as $id => $item)
151 {
152 if ($item['SET_PARENT_ID'] > 0)
153 {
154 $itemList[$item['SET_PARENT_ID']]['ITEMS'][$id] = &$itemList[$id];
155 }
156 }
157
158 $result = [];
159 foreach ($itemList as $id => $item)
160 {
161 if ($item['SET_PARENT_ID'] == 0)
162 {
163 $result[$id] = $item;
164 }
165 }
166
167 $this->loadFromArray($result);
168
169 return $this;
170 }
171
177 public function setOrder(OrderBase $order)
178 {
179 $this->order = $order;
180 }
181
187 public function getOrder()
188 {
189 return $this->order;
190 }
191
192
198 protected function verifyItemSort(BasketItemBase $item)
199 {
200 $itemSort = (int)$item->getField('SORT') ?: 100;
201
202 if ($this->maxItemSort === null)
203 {
204 $this->maxItemSort = $itemSort;
205 }
206 else
207 {
208 if ($itemSort > $this->maxItemSort)
209 {
210 $this->maxItemSort = $itemSort;
211 }
212 else
213 {
214 $this->maxItemSort += 100 + $this->maxItemSort % 100;
215 }
216 }
217
218 $item->setFieldNoDemand('SORT', $this->maxItemSort);
219 }
220
227 public static function create($siteId)
228 {
229 $basket = static::createBasketObject();
230 $basket->setSiteId($siteId);
231
232 return $basket;
233 }
234
241 public function getPrice()
242 {
243 $orderPrice = 0;
244
246 foreach ($this->collection as $basketItem)
247 {
248 $orderPrice += $basketItem->getFinalPrice();
249 }
250
251 return $orderPrice;
252 }
253
260 public function getBasePrice()
261 {
262 $orderPrice = 0;
263
265 foreach ($this->collection as $basketItem)
266 {
267 $orderPrice += PriceMaths::roundPrecision($basketItem->getBasePriceWithVat() * $basketItem->getQuantity());
268 }
269
270 return $orderPrice;
271 }
272
279 public function getVatSum()
280 {
281 $vatSum = 0;
282
284 foreach ($this->collection as $basketItem)
285 {
286 // BasketItem that is removed is not involved
287 if ($basketItem->getQuantity() == 0)
288 {
289 continue;
290 }
291
292 $vatSum += $basketItem->getVat();
293 }
294
295 return $vatSum;
296 }
297
304 public function getVatRate()
305 {
306 $vatRate = 0;
307
309 foreach ($this->collection as $basketItem)
310 {
311 // BasketItem that is removed is not involved
312 if ($basketItem->getQuantity() == 0)
313 {
314 continue;
315 }
316
317 if ($basketItem->getVatRate() > $vatRate)
318 {
319 $vatRate = $basketItem->getVatRate();
320 }
321 }
322
323 return $vatRate;
324 }
325
332 public function verify()
333 {
334 $result = new Result();
335
337 foreach ($this->collection as $basketItem)
338 {
339 $r = $basketItem->verify();
340 if (!$r->isSuccess())
341 {
342 $result->addErrors($r->getErrors());
343
345 if ($order = $this->getOrder())
346 {
347 $registry = Registry::getInstance(static::getRegistryType());
348
350 $entityMarker = $registry->getEntityMarkerClassName();
351 $entityMarker::addMarker($order, $basketItem, $r);
352 $order->setField('MARKED', 'Y');
353 }
354 }
355 }
356
357 return $result;
358 }
359
365 public function getWeight()
366 {
367 $orderWeight = 0;
368
370 foreach ($this->collection as $basketItem)
371 {
372 $orderWeight += $basketItem->getWeight() * $basketItem->getQuantity();
373 }
374
375 return $orderWeight;
376 }
377
381 private function getOriginalItemsValues()
382 {
383 $result = array();
384
386 $order = $this->getOrder();
387 $isNew = $order && $order->isNew();
388
389 $filter = array();
390 if (!$isNew && $order && $order->getId() > 0)
391 {
392 $filter['ORDER_ID'] = $order->getId();
393 }
394 else
395 {
396 if ($this->isLoadForFUserId)
397 {
398 $filter = array(
399 '=FUSER_ID' => $this->getFUserId(),
400 'ORDER_ID' => null,
401 '=LID' => $this->getSiteId()
402 );
403 }
404
405 if ($isNew)
406 {
407 $fUserId = $this->getFUserId(true);
408 if ($fUserId <= 0)
409 {
410 $userId = $order->getUserId();
411 if (intval($userId) > 0)
412 {
414 if ($fUserId > 0)
415 $this->setFUserId($fUserId);
416 }
417 }
418 }
419 }
420
421 if ($filter)
422 {
423 $dbRes = static::getList(
424 array(
425 "select" => array("ID", 'TYPE', 'SET_PARENT_ID', 'PRODUCT_ID', 'NAME', 'QUANTITY', 'FUSER_ID', 'ORDER_ID'),
426 "filter" => $filter,
427 )
428 );
429
430 while ($item = $dbRes->fetch())
431 {
432 if ((int)$item['SET_PARENT_ID'] > 0 && (int)$item['SET_PARENT_ID'] != $item['ID'])
433 {
434 continue;
435 }
436
437 $result[$item["ID"]] = $item;
438 }
439 }
440
441 return $result;
442 }
443
448 abstract protected function deleteInternal(array $itemValues);
449
459 public function save()
460 {
461 $this->checkCallingContext();
462
463 $result = new Result();
464
465 $this->isSaveExecuting = true;
466
468 $order = $this->getOrder();
469 if (!$order)
470 {
471 $r = $this->verify();
472 if (!$r->isSuccess())
473 {
474 return $result->addErrors($r->getErrors());
475 }
476
477 $r = $this->callEventOnSaleBasketBeforeSaved();
478 if (!$r->isSuccess())
479 {
480 $this->isSaveExecuting = false;
481
482 return $result->addErrors($r->getErrors());
483 }
484 }
485
486 $originalItemsValues = $this->getOriginalItemsValues();
487
489 foreach ($this->collection as $basketItem)
490 {
491 $r = $basketItem->save();
492 if (!$r->isSuccess())
493 {
494 $result->addErrors($r->getErrors());
495 }
496
497 if (isset($originalItemsValues[$basketItem->getId()]))
498 {
499 unset($originalItemsValues[$basketItem->getId()]);
500 }
501 }
502
503 if ($originalItemsValues)
504 {
505 foreach ($originalItemsValues as $itemValues)
506 {
507 $this->callEventOnBeforeSaleBasketItemDeleted($itemValues);
508
509 $this->deleteInternal($itemValues);
510
511 $this->callEventOnSaleBasketItemDeleted($itemValues);
512 }
513 }
514
515 if (!$order)
516 {
517 $r = $this->callEventOnSaleBasketSaved();
518 if (!$r->isSuccess())
519 {
520 $result->addErrors($r->getErrors());
521 }
522 }
523
524 $this->clearChanged();
525
526 $this->isSaveExecuting = false;
527
528 return $result;
529 }
530
534 private function checkCallingContext() : void
535 {
536 $order = $this->getOrder();
537
538 if (
539 $order
540 && !$order->isSaveRunning()
541 )
542 {
543 trigger_error("Incorrect call to the save process. Use method save() on \Bitrix\Sale\Order entity.", E_USER_WARNING);
544 }
545 }
546
551 private function callEventOnBeforeSaleBasketItemDeleted($itemValues)
552 {
553 $itemValues['ENTITY_REGISTRY_TYPE'] = static::getRegistryType();
554
555 $event = new Main\Event('sale', "OnBeforeSaleBasketItemDeleted", array('VALUES' => $itemValues));
556 $event->send();
557 }
558
563 protected function callEventOnSaleBasketItemDeleted($itemValues)
564 {
565 $itemValues['ENTITY_REGISTRY_TYPE'] = static::getRegistryType();
566
567 $event = new Main\Event('sale', "OnSaleBasketItemDeleted", array('VALUES' => $itemValues));
568 $event->send();
569 }
570
574 protected function callEventOnSaleBasketBeforeSaved()
575 {
576 $result = new Result();
577
579 $event = new Main\Event(
580 'sale',
582 array('ENTITY' => $this)
583 );
584 $event->send();
585
586 if ($event->getResults())
587 {
589 foreach ($event->getResults() as $eventResult)
590 {
591 if ($eventResult->getType() == Main\EventResult::ERROR)
592 {
594 Main\Localization\Loc::getMessage('SALE_EVENT_ON_BEFORE_BASKET_SAVED'),
595 'SALE_EVENT_ON_BEFORE_BASKET_SAVED'
596 );
597 if ($eventResultData = $eventResult->getParameters())
598 {
599 if (isset($eventResultData) && $eventResultData instanceof ResultError)
600 {
602 $errorMsg = $eventResultData;
603 }
604 }
605
606 $result->addError($errorMsg);
607 }
608 }
609 }
610
611 return $result;
612 }
613
617 protected function callEventOnSaleBasketSaved()
618 {
619 $result = new Result();
620
622 $event = new Main\Event('sale', EventActions::EVENT_ON_BASKET_SAVED, array(
623 'ENTITY' => $this
624 ));
625 $event->send();
626
627 if ($event->getResults())
628 {
630 foreach($event->getResults() as $eventResult)
631 {
632 if($eventResult->getType() == Main\EventResult::ERROR)
633 {
634 $errorMsg = new ResultError(
635 Main\Localization\Loc::getMessage('SALE_EVENT_ON_BASKET_SAVED'),
636 'SALE_EVENT_ON_BASKET_SAVED'
637 );
638 if ($eventResultData = $eventResult->getParameters())
639 {
640 if (isset($eventResultData) && $eventResultData instanceof ResultError)
641 {
643 $errorMsg = $eventResultData;
644 }
645 }
646
647 $result->addError($errorMsg);
648 }
649 }
650 }
651
652 return $result;
653 }
654
660 public function setFUserId($fUserId)
661 {
662 $this->fUserId = (int)$fUserId > 0 ? (int)$fUserId : null;
663 }
664
670 protected function setSiteId($siteId)
671 {
672 $this->siteId = $siteId;
673 }
674
681 public function getFUserId($skipCreate = false)
682 {
683 if ($this->fUserId === null)
684 {
685 $this->fUserId = Fuser::getId($skipCreate);
686 }
687 return $this->fUserId;
688 }
689
695 public function getSiteId()
696 {
697 return $this->siteId;
698 }
699
705 public static function getList(array $parameters = array())
706 {
708 }
709
718 public function onItemModify(Internals\CollectableEntity $item, $name = null, $oldValue = null, $value = null)
719 {
720 if (!($item instanceof BasketItemBase))
721 throw new Main\ArgumentTypeException($item);
722
723 $result = new Result();
724
726 if ($order = $this->getOrder())
727 {
728 $r = $order->onBasketModify(EventActions::UPDATE, $item, $name, $oldValue, $value);
729 if (!$r->isSuccess())
730 {
731 $result->addErrors($r->getErrors());
732 }
733 elseif ($r->hasWarnings())
734 {
735 $result->addWarnings($r->getWarnings());
736 }
737 }
738
739 return $result;
740 }
741
746 public function refresh(RefreshStrategy $strategy = null)
747 {
748 $isStartField = $this->isStartField();
749
751 $order = $this->getOrder();
752 if ($order)
753 {
754 $r = $order->onBeforeBasketRefresh();
755 if (!$r->isSuccess())
756 {
757 return $r;
758 }
759 }
760
761 if ($strategy === null)
762 {
763 $strategy = RefreshFactory::create();
764 }
765
766 $result = $strategy->refresh($this);
767
768 if ($order)
769 {
770 $r = $order->onAfterBasketRefresh();
771 if (!$r->isSuccess())
772 {
773 return $r;
774 }
775 }
776
777 $changedBasketItems = $result->get('CHANGED_BASKET_ITEMS');
778 if (!empty($changedBasketItems))
779 {
781 $order = $this->getOrder();
782 if ($order)
783 {
784 $r = $order->refreshData(array('PRICE', 'PRICE_DELIVERY'));
785 if (!$r->isSuccess())
786 {
787 $result->addErrors($r->getErrors());
788 }
789 }
790 }
791
792 if ($isStartField)
793 {
794 $hasMeaningfulFields = $this->hasMeaningfulField();
795
797 $r = $this->doFinalAction($hasMeaningfulFields);
798 if (!$r->isSuccess())
799 {
800 $result->addErrors($r->getErrors());
801 }
802 }
803
804 return $result;
805 }
806
811 public function getOrderableItems()
812 {
814 $basket = static::create($this->getSiteId());
815
816 if ($this->isLoadForFUserId)
817 {
818 $basket->setFUserId($this->getFUserId(true));
819 }
820
821 if ($order = $this->getOrder())
822 {
823 $basket->setOrder($order);
824 }
825
826 $sortedCollection = $this->collection;
827 usort($sortedCollection, function(BasketItemBase $a, BasketItemBase $b){
828 return (int)$a->getField('SORT') - (int)$b->getField('SORT');
829 });
830
832 foreach ($sortedCollection as $item)
833 {
834 if (!$item->canBuy() || $item->isDelay())
835 continue;
836
837 $item->setCollection($basket);
838 $basket->addItem($item);
839 }
840
841 return $basket;
842 }
843
847 public function getBasket()
848 {
849 return $this;
850 }
851
857 public static function deleteNoDemand($idOrder)
858 {
860 }
861
865 public function isSaveRunning()
866 {
868 }
869
875 public function getContext()
876 {
877 $context = array();
878
879 $order = $this->getOrder();
881 if ($order)
882 {
883 $context['USER_ID'] = $order->getUserId();
884 $context['SITE_ID'] = $order->getSiteId();
885 $context['CURRENCY'] = $order->getCurrency();
886 }
887 else
888 {
889 $context = parent::getContext();
890 }
891
892 return $context;
893 }
894
901 public function getQuantityList()
902 {
903 $quantityList = array();
904
909 foreach ($this->collection as $basketKey => $basketItem)
910 {
911 $quantityList[$basketItem->getBasketCode()] = $basketItem->getQuantity();
912 }
913
914 return $quantityList;
915 }
916
927 public function deleteItem($index)
928 {
929 $oldItem = parent::deleteItem($index);
930
931 unset($this->basketItemIndexMap[$oldItem->getBasketCode()]);
932
934 if ($order = $this->getOrder())
935 {
936 $order->onBasketModify(EventActions::DELETE, $oldItem);
937 }
938
939 return $oldItem;
940 }
941
951 public function applyDiscount(array $basketRows)
952 {
953 $result = new Result();
954
955 if ($this->count() == 0 || empty($basketRows))
956 return $result;
957
959 foreach ($this->collection as $basketItem)
960 {
961 if ($basketItem->isCustomPrice())
962 continue;
963 $basketCode = $basketItem->getBasketCode();
964 if (!isset($basketRows[$basketCode]))
965 continue;
966
967 $fields = $basketRows[$basketCode];
968
969 if (isset($fields['PRICE']) && isset($fields['DISCOUNT_PRICE']))
970 {
971 $fields['PRICE'] = (float)$fields['PRICE'];
972 $fields['DISCOUNT_PRICE'] = (float)$fields['DISCOUNT_PRICE'];
973
974 if ($fields['PRICE'] >= 0
975 && $basketItem->getPrice() != $fields['PRICE'])
976 {
977 $fields['PRICE'] = PriceMaths::roundPrecision($fields['PRICE']);
978 $basketItem->setFieldNoDemand('PRICE', $fields['PRICE']);
979 }
980
981 if ($basketItem->getDiscountPrice() != $fields['DISCOUNT_PRICE'])
982 {
983 $fields['DISCOUNT_PRICE'] = PriceMaths::roundPrecision($fields['DISCOUNT_PRICE']);
984 $basketItem->setFieldNoDemand('DISCOUNT_PRICE', $fields['DISCOUNT_PRICE']);
985 }
986
987 if (isset($fields['DISCOUNT_VALUE']))
988 $basketItem->setFieldNoDemand('DISCOUNT_VALUE', $fields['DISCOUNT_VALUE']);
989 }
990 }
991 unset($fields, $basketCode, $basketItem);
992
993 return $result;
994 }
995
1002 public function createClone(\SplObjectStorage $cloneEntity = null)
1003 {
1004 if ($cloneEntity === null)
1005 {
1006 $cloneEntity = new \SplObjectStorage();
1007 }
1008
1010 $basketClone = parent::createClone($cloneEntity);
1011
1012 if ($this->order)
1013 {
1014 if ($cloneEntity->contains($this->order))
1015 {
1016 $basketClone->order = $cloneEntity[$this->order];
1017 }
1018 }
1019
1020 return $basketClone;
1021 }
1022
1035 public function copy()
1036 {
1037 if($this->order !== null)
1038 {
1039 throw new Main\SystemException('Could not clone basket which has order.');
1040 }
1041
1042 $basket = static::create($this->siteId);
1044 foreach($this as $originalItem)
1045 {
1046 $item = $basket->createItem($originalItem->getField("MODULE"), $originalItem->getProductId());
1047 $item->initFields($originalItem->getFields()->getValues());
1048 }
1049
1050 return $basket;
1051 }
1052
1064 public static function loadItemsForOrder(OrderBase $order)
1065 {
1066 $basket = static::createBasketObject();
1067 $basket->setOrder($order);
1068 $basket->setSiteId($order->getSiteId());
1069
1070 return $basket->loadFromDb(array("=ORDER_ID" => $order->getId()));
1071 }
1072
1079 public function addItem(Internals\CollectableEntity $basketItem)
1080 {
1082 $basketItem = parent::addItem($basketItem);
1083
1084 $this->verifyItemSort($basketItem);
1085
1087 if ($order = $this->getOrder())
1088 {
1089 $order->onBasketModify(EventActions::ADD, $basketItem);
1090 }
1091
1092 return $basketItem;
1093 }
1094
1095 protected function bindItem(CollectableEntity $basketItem): CollectableEntity
1096 {
1097 $basketItem = parent::bindItem($basketItem);
1098
1099 $this->basketItemIndexMap[$basketItem->getBasketCode()] = $basketItem->getInternalIndex();
1100 $basketItem->setCollection($this);
1101
1102 return $basketItem;
1103 }
1104
1113 public function refreshData($select = array(), BasketItemBase $refreshItem = null)
1114 {
1115 if ($refreshItem !== null)
1116 {
1117 $strategy = RefreshFactory::createSingle($refreshItem->getBasketCode());
1118 }
1119 else
1120 {
1121 $strategy = RefreshFactory::create(RefreshFactory::TYPE_FULL);
1122 }
1123
1124 return $this->refresh($strategy);
1125 }
1126
1137 {
1138 $propertyList = [];
1139 $propertyCollection = $item->getPropertyCollection();
1140 if ($propertyCollection)
1141 {
1142 $propertyList = $propertyCollection->getPropertyValues();
1143 }
1144
1145 return $this->getExistsItem($item->getField('MODULE'), $item->getField('PRODUCT_ID'), $propertyList);
1146 }
1147}
if(isset( $_REQUEST["mode"]) &&$_REQUEST["mode"]=="ajax") if(isset($_REQUEST["mode"]) && $_REQUEST["mode"]=="save_lru" &&check_bitrix_sessid()) $first
Определения access_dialog.php:54
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
Определения event.php:5
getEntityParent()
Определения basketbase.php:63
setSiteId($siteId)
Определения basketbase.php:670
$maxItemSort
Определения basketbase.php:33
static create($siteId)
Определения basketbase.php:227
refreshData($select=array(), BasketItemBase $refreshItem=null)
Определения basketbase.php:1113
getSiteId()
Определения basketbase.php:695
getItemByBasketCode($code)
Определения basketbase.php:47
getExistsItemByItem(BasketItemBase $item)
Определения basketbase.php:1136
getOrder()
Определения basketbase.php:187
loadFromDb(array $filter)
Определения basketbase.php:113
static getList(array $parameters=array())
Определения basketbase.php:705
$isSaveExecuting
Определения basketbase.php:39
deleteInternal(array $itemValues)
static loadItemsForOrder(OrderBase $order)
Определения basketbase.php:1064
verifyItemSort(BasketItemBase $item)
Определения basketbase.php:198
setFUserId($fUserId)
Определения basketbase.php:660
callEventOnSaleBasketItemDeleted($itemValues)
Определения basketbase.php:563
getBasket()
Определения basketbase.php:847
static deleteNoDemand($idOrder)
Определения basketbase.php:857
setOrder(OrderBase $order)
Определения basketbase.php:177
bindItem(CollectableEntity $basketItem)
Определения basketbase.php:1095
getFUserId($skipCreate=false)
Определения basketbase.php:681
isSaveRunning()
Определения basketbase.php:865
$basketItemIndexMap
Определения basketbase.php:30
setFieldNoDemand($name, $value)
Определения basketitembase.php:449
getField($name)
Определения basketitembase.php:478
getExistsItem($moduleId, $productId, array $properties=array())
Определения basketitemcollection.php:307
const ADD
Определения eventactions.php:8
const DELETE
Определения eventactions.php:10
const EVENT_ON_BASKET_BEFORE_SAVED
Определения eventactions.php:26
const EVENT_ON_BASKET_SAVED
Определения eventactions.php:29
const UPDATE
Определения eventactions.php:9
static getId($skipCreate=false)
Определения fuser.php:33
static getIdByUserId($userId)
Определения fuser.php:151
setCollection(EntityCollection $collection)
Определения collectableentity.php:38
static roundPrecision($value)
Определения pricemaths.php:16
static getInstance($type)
Определения registry.php:183
</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
$select
Определения iblock_catalog_list.php:194
$filter
Определения iblock_catalog_list.php:54
$context
Определения csv_new_setup.php:223
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения options.php:195
$siteId
Определения ajax.php:8
$name
Определения menu_edit.php:35
$order
Определения payment.php:8
$event
Определения prolog_after.php:141
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$errorMsg
Определения refund.php:16
else $a
Определения template.php:137
$dbRes
Определения yandex_detail.php:168
$fields
Определения yandex_run.php:501