1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
registry.php
См. документацию.
1<?php
2namespace Bitrix\Sale;
3
4use Bitrix\Main;
5
7
12final class Registry
13{
14 const EVENT_ON_INIT_REGISTRY_LIST = 'OnInitRegistryList';
15
16 const REGISTRY_TYPE_ORDER = 'ORDER';
17 const REGISTRY_TYPE_ARCHIVE_ORDER = 'ARCHIVE_ORDER';
18
19 const ENTITY_SHIPMENT = 'SHIPMENT';
20 const ENTITY_ORDER = 'ORDER';
21 const ENTITY_PAYMENT = 'PAYMENT';
22 const ENTITY_PAYMENT_COLLECTION = 'PAYMENT_COLLECTION';
23 const ENTITY_PAYABLE_BASKET_ITEM = 'PAYABLE_BASKET_ITEM';
24 const ENTITY_PAYABLE_SHIPMENT = 'PAYABLE_SHIPMENT';
25 const ENTITY_PAYABLE_ITEM_COLLECTION = 'PAYABLE_ITEM_COLLECTION';
26 const ENTITY_SHIPMENT_COLLECTION = 'SHIPMENT_COLLECTION';
27 const ENTITY_PROPERTY_VALUE = 'PROPERTY_VALUE';
28 const ENTITY_SHIPMENT_PROPERTY_VALUE = 'SHIPMENT_PROPERTY_VALUE';
29 const ENTITY_BUNDLE_COLLECTION = 'BUNDLE_COLLECTION';
30 const ENTITY_BASKET = 'BASKET';
31 const ENTITY_TAX = 'TAX';
32 const ENTITY_BASKET_ITEM = 'BASKET_ITEM';
33 const ENTITY_BASKET_PROPERTIES_COLLECTION = 'BASKET_PROPERTIES_COLLECTION';
34 const ENTITY_BASKET_PROPERTY_ITEM = 'BASKET_PROPERTY_ITEM';
35 const ENTITY_BASKET_RESERVE_COLLECTION = 'BASKET_RESERVE_COLLECTION';
36 const ENTITY_BASKET_RESERVE_COLLECTION_ITEM = 'BASKET_RESERVE_COLLECTION_ITEM';
37 const ENTITY_SHIPMENT_ITEM = 'SHIPMENT_ITEM';
38 const ENTITY_SHIPMENT_ITEM_COLLECTION = 'SHIPMENT_ITEM_COLLECTION';
39 const ENTITY_SHIPMENT_ITEM_STORE = 'SHIPMENT_ITEM_STORE';
40 const ENTITY_SHIPMENT_ITEM_STORE_COLLECTION = 'SHIPMENT_ITEM_STORE_COLLECTION';
41 const ENTITY_PROPERTY_VALUE_COLLECTION = 'PROPERTY_VALUE_COLLECTION';
42 const ENTITY_SHIPMENT_PROPERTY_VALUE_COLLECTION = 'SHIPMENT_PROPERTY_VALUE_COLLECTION';
43 const ENTITY_OPTIONS = 'CONFIG_OPTION';
44 const ENTITY_DISCOUNT = 'DISCOUNT';
45 const ENTITY_DISCOUNT_COUPON = 'DISCOUNT_COUPON';
46 const ENTITY_ORDER_DISCOUNT = 'ORDER_DISCOUNT';
47 const ENTITY_PERSON_TYPE = 'PERSON_TYPE';
48 const ENTITY_ORDER_STATUS = 'ORDER_STATUS';
49 const ENTITY_DELIVERY_STATUS = 'DELIVERY_STATUS';
50 const ENTITY_ENTITY_MARKER = 'ENTITY_MARKER';
51 const ENTITY_ORDER_HISTORY = 'ORDER_HISTORY';
52 const ENTITY_PROPERTY = 'PROPERTIES';
53 const ENTITY_SHIPMENT_PROPERTY = 'SHIPMENT_PROPERTIES';
54 const ENTITY_NOTIFY = 'NOTIFY';
55 const ENTITY_TRADE_BINDING_COLLECTION = 'TRADE_BINDING_COLLECTION';
56 const ENTITY_TRADE_BINDING_ENTITY = 'TRADE_BINDING_ENTITY';
57
58 private static $registryMap = [];
59 private static $registryObjects = [];
60 private $type = '';
61 private static $initData = [
63 Registry::ENTITY_ORDER => '\Bitrix\Sale\Order',
64 Registry::ENTITY_PAYMENT => '\Bitrix\Sale\Payment',
65 Registry::ENTITY_PAYMENT_COLLECTION => '\Bitrix\Sale\PaymentCollection',
66 Registry::ENTITY_PAYABLE_BASKET_ITEM => '\Bitrix\Sale\PayableBasketItem',
67 Registry::ENTITY_PAYABLE_SHIPMENT => '\Bitrix\Sale\PayableShipmentItem',
68 Registry::ENTITY_PAYABLE_ITEM_COLLECTION => '\Bitrix\Sale\PayableItemCollection',
69 Registry::ENTITY_SHIPMENT => '\Bitrix\Sale\Shipment',
70 Registry::ENTITY_SHIPMENT_COLLECTION => '\Bitrix\Sale\ShipmentCollection',
71 Registry::ENTITY_SHIPMENT_ITEM => '\Bitrix\Sale\ShipmentItem',
72 Registry::ENTITY_SHIPMENT_ITEM_COLLECTION => '\Bitrix\Sale\ShipmentItemCollection',
73 Registry::ENTITY_SHIPMENT_ITEM_STORE => '\Bitrix\Sale\ShipmentItemStore',
74 Registry::ENTITY_SHIPMENT_ITEM_STORE_COLLECTION => '\Bitrix\Sale\ShipmentItemStoreCollection',
75 Registry::ENTITY_PROPERTY_VALUE_COLLECTION => '\Bitrix\Sale\PropertyValueCollection',
76 Registry::ENTITY_SHIPMENT_PROPERTY_VALUE_COLLECTION => '\Bitrix\Sale\ShipmentPropertyValueCollection',
77 Registry::ENTITY_PROPERTY_VALUE => '\Bitrix\Sale\PropertyValue',
78 Registry::ENTITY_SHIPMENT_PROPERTY_VALUE => '\Bitrix\Sale\ShipmentPropertyValue',
79 Registry::ENTITY_PROPERTY => '\Bitrix\Sale\Property',
80 Registry::ENTITY_SHIPMENT_PROPERTY => '\Bitrix\Sale\ShipmentProperty',
81 Registry::ENTITY_TAX => '\Bitrix\Sale\Tax',
82 Registry::ENTITY_BASKET_PROPERTY_ITEM => '\Bitrix\Sale\BasketPropertyItem',
83 Registry::ENTITY_BUNDLE_COLLECTION => '\Bitrix\Sale\BundleCollection',
84 Registry::ENTITY_BASKET => '\Bitrix\Sale\Basket',
85 Registry::ENTITY_BASKET_ITEM => '\Bitrix\Sale\BasketItem',
86 Registry::ENTITY_BASKET_PROPERTIES_COLLECTION => '\Bitrix\Sale\BasketPropertiesCollection',
87 Registry::ENTITY_BASKET_RESERVE_COLLECTION => ReserveQuantityCollection::class,
89 Registry::ENTITY_DISCOUNT => '\Bitrix\Sale\Discount',
90 Registry::ENTITY_DISCOUNT_COUPON => '\Bitrix\Sale\DiscountCouponsManager',
91 Registry::ENTITY_ORDER_DISCOUNT => '\Bitrix\Sale\OrderDiscount',
92 Registry::ENTITY_OPTIONS => 'Bitrix\Main\Config\Option',
93 Registry::ENTITY_PERSON_TYPE => 'Bitrix\Sale\PersonType',
94 Registry::ENTITY_ORDER_STATUS => 'Bitrix\Sale\OrderStatus',
95 Registry::ENTITY_DELIVERY_STATUS => 'Bitrix\Sale\DeliveryStatus',
96 Registry::ENTITY_ENTITY_MARKER => '\Bitrix\Sale\EntityMarker',
97 Registry::ENTITY_ORDER_HISTORY => 'Bitrix\Sale\OrderHistory',
98 Registry::ENTITY_NOTIFY => 'Bitrix\Sale\Notify',
99 Registry::ENTITY_TRADE_BINDING_COLLECTION => 'Bitrix\Sale\TradeBindingCollection',
100 Registry::ENTITY_TRADE_BINDING_ENTITY => 'Bitrix\Sale\TradeBindingEntity',
101 ],
103 Registry::ENTITY_ORDER => '\Bitrix\Sale\Archive\Order',
104 Registry::ENTITY_PAYMENT => '\Bitrix\Sale\Payment',
105 Registry::ENTITY_PAYMENT_COLLECTION => '\Bitrix\Sale\PaymentCollection',
106 Registry::ENTITY_PAYABLE_BASKET_ITEM => '\Bitrix\Sale\PayableBasketItem',
107 Registry::ENTITY_PAYABLE_SHIPMENT => '\Bitrix\Sale\PayableShipmentItem',
108 Registry::ENTITY_PAYABLE_ITEM_COLLECTION => '\Bitrix\Sale\PayableItemCollection',
109 Registry::ENTITY_SHIPMENT => '\Bitrix\Sale\Shipment',
110 Registry::ENTITY_SHIPMENT_COLLECTION => '\Bitrix\Sale\ShipmentCollection',
111 Registry::ENTITY_SHIPMENT_ITEM => '\Bitrix\Sale\ShipmentItem',
112 Registry::ENTITY_SHIPMENT_ITEM_COLLECTION => '\Bitrix\Sale\ShipmentItemCollection',
113 Registry::ENTITY_SHIPMENT_ITEM_STORE => '\Bitrix\Sale\ShipmentItemStore',
114 Registry::ENTITY_SHIPMENT_ITEM_STORE_COLLECTION => '\Bitrix\Sale\ShipmentItemStoreCollection',
115 Registry::ENTITY_PROPERTY_VALUE_COLLECTION => '\Bitrix\Sale\PropertyValueCollection',
116 Registry::ENTITY_SHIPMENT_PROPERTY_VALUE_COLLECTION => '\Bitrix\Sale\ShipmentPropertyValueCollection',
117 Registry::ENTITY_PROPERTY_VALUE => '\Bitrix\Sale\PropertyValue',
118 Registry::ENTITY_SHIPMENT_PROPERTY_VALUE => '\Bitrix\Sale\ShipmentPropertyValue',
119 Registry::ENTITY_PROPERTY => '\Bitrix\Sale\Property',
120 Registry::ENTITY_SHIPMENT_PROPERTY => '\Bitrix\Sale\ShipmentProperty',
121 Registry::ENTITY_TAX => '\Bitrix\Sale\Tax',
122 Registry::ENTITY_BASKET_PROPERTY_ITEM => '\Bitrix\Sale\BasketPropertyItem',
123 Registry::ENTITY_BUNDLE_COLLECTION => '\Bitrix\Sale\BundleCollection',
124 Registry::ENTITY_BASKET => '\Bitrix\Sale\Basket',
125 Registry::ENTITY_BASKET_ITEM => '\Bitrix\Sale\BasketItem',
126 Registry::ENTITY_BASKET_PROPERTIES_COLLECTION => '\Bitrix\Sale\BasketPropertiesCollection',
127 Registry::ENTITY_DISCOUNT => '\Bitrix\Sale\Discount',
128 Registry::ENTITY_DISCOUNT_COUPON => '\Bitrix\Sale\DiscountCouponsManager',
129 Registry::ENTITY_ORDER_DISCOUNT => '\Bitrix\Sale\OrderDiscount',
130 Registry::ENTITY_OPTIONS => 'Bitrix\Main\Config\Option',
131 Registry::ENTITY_PERSON_TYPE => 'Bitrix\Sale\PersonType',
132 Registry::ENTITY_ORDER_STATUS => 'Bitrix\Sale\OrderStatus',
133 Registry::ENTITY_DELIVERY_STATUS => 'Bitrix\Sale\DeliveryStatus',
134 Registry::ENTITY_ENTITY_MARKER => '\Bitrix\Sale\EntityMarker',
135 Registry::ENTITY_ORDER_HISTORY => 'Bitrix\Sale\OrderHistory',
136 Registry::ENTITY_TRADE_BINDING_COLLECTION => 'Bitrix\Sale\TradeBindingCollection',
137 Registry::ENTITY_TRADE_BINDING_ENTITY => 'Bitrix\Sale\TradeBindingEntity',
138 Registry::ENTITY_NOTIFY => 'Bitrix\Sale\Notify',
139 ],
140 ];
141
145 private static function initRegistry()
146 {
147 self::$registryMap = self::$initData;
148
149 $event = new Main\Event('sale', self::EVENT_ON_INIT_REGISTRY_LIST);
150 $event->send();
151 $resultList = $event->getResults();
152
153 if (is_array($resultList) && !empty($resultList))
154 {
155 foreach ($resultList as $eventResult)
156 {
158 if ($eventResult->getType() === Main\EventResult::SUCCESS)
159 {
160 $params = $eventResult->getParameters();
161 if (!empty($params) && is_array($params))
162 {
163 self::$registryMap = array_merge(self::$registryMap, $params);
164 }
165 }
166 }
167 }
168 }
169
173 public function getType()
174 {
175 return $this->type;
176 }
177
183 public static function getInstance($type)
184 {
185 if (!self::$registryMap)
186 {
187 self::initRegistry();
188 }
189
190 if (!isset(self::$registryObjects[$type]))
191 {
192 if (isset(self::$registryMap[$type]))
193 {
194 self::$registryObjects[$type] = new static($type);
195 }
196 else
197 {
198 throw new Main\ArgumentException();
199 }
200 }
201
202 return self::$registryObjects[$type];
203 }
204
210 public static function setRegistry($code, $registryItem)
211 {
212 if (!self::$registryMap)
213 {
214 self::initRegistry();
215 }
216
217 self::$registryMap[$code] = $registryItem;
218 }
219
220 public static function resetAll() : void
221 {
222 self::$registryMap = [];
223 self::$registryObjects = [];
224 }
225
230 private function __construct($type)
231 {
232 $this->type = $type;
233 }
234
239 public function set($code, $className)
240 {
241 self::$registryMap[$this->type][$code] = $className;
242 }
243
249 public function get($code)
250 {
251 if (isset(self::$registryMap[$this->type][$code]))
252 {
253 return self::$registryMap[$this->type][$code];
254 }
255
256 throw new Main\SystemException(
257 Main\Localization\Loc::getMessage(
258 'SALE_REGISTRY_CODE_VALUE_NO_EXISTS',
259 ['#TYPE#' => $this->getType(), '#CODE#' => $code]
260 )
261 );
262 }
263
268 public function getOrderClassName()
269 {
270 return $this->get(self::ENTITY_ORDER);
271 }
272
277 public function getPaymentClassName()
278 {
279 return $this->get(self::ENTITY_PAYMENT);
280 }
281
286 public function getShipmentClassName()
287 {
288 return $this->get(self::ENTITY_SHIPMENT);
289 }
290
296 {
297 return $this->get(self::ENTITY_SHIPMENT_ITEM_COLLECTION);
298 }
299
304 public function getShipmentItemClassName()
305 {
306 return $this->get(self::ENTITY_SHIPMENT_ITEM);
307 }
308
314 {
315 return $this->get(self::ENTITY_SHIPMENT_ITEM_STORE);
316 }
317
323 {
324 return $this->get(self::ENTITY_SHIPMENT_ITEM_STORE_COLLECTION);
325 }
326
331 public function getBasketItemClassName()
332 {
333 return $this->get(self::ENTITY_BASKET_ITEM);
334 }
335
341 {
342 return $this->get(self::ENTITY_SHIPMENT_COLLECTION);
343 }
344
350 {
351 return $this->get(self::ENTITY_PAYMENT_COLLECTION);
352 }
353
359 {
360 return $this->get(self::ENTITY_PAYABLE_ITEM_COLLECTION);
361 }
362
368 {
369 return $this->get(self::ENTITY_PROPERTY_VALUE_COLLECTION);
370 }
371
377 {
378 return $this->get(self::ENTITY_SHIPMENT_PROPERTY_VALUE_COLLECTION);
379 }
380
386 {
387 return $this->get(self::ENTITY_PROPERTY_VALUE);
388 }
389
395 {
396 return $this->get(self::ENTITY_SHIPMENT_PROPERTY_VALUE);
397 }
398
399
404 public function getBasketClassName()
405 {
406 return $this->get(self::ENTITY_BASKET);
407 }
408
414 {
415 return $this->get(self::ENTITY_BUNDLE_COLLECTION);
416 }
417
422 public function getDiscountClassName()
423 {
424 return $this->get(self::ENTITY_DISCOUNT);
425 }
426
432 {
433 return $this->get(self::ENTITY_DISCOUNT_COUPON);
434 }
435
441 {
442 return $this->get(self::ENTITY_ORDER_DISCOUNT);
443 }
444
449 public function getTaxClassName()
450 {
451 return $this->get(self::ENTITY_TAX);
452 }
453
459 {
460 return $this->get(self::ENTITY_BASKET_PROPERTIES_COLLECTION);
461 }
462
468 {
469 return $this->get(self::ENTITY_BASKET_PROPERTY_ITEM);
470 }
471
477 {
478 return $this->get(self::ENTITY_BASKET_RESERVE_COLLECTION);
479 }
480
485 public function getReservedItemClassName()
486 {
487 return $this->get(self::ENTITY_BASKET_RESERVE_COLLECTION_ITEM);
488 }
489
494 public function getPersonTypeClassName()
495 {
496 return $this->get(self::ENTITY_PERSON_TYPE);
497 }
498
503 public function getOrderStatusClassName()
504 {
505 return $this->get(self::ENTITY_ORDER_STATUS);
506 }
507
513 {
514 return $this->get(self::ENTITY_DELIVERY_STATUS);
515 }
516
521 public function getEntityMarkerClassName()
522 {
523 return $this->get(self::ENTITY_ENTITY_MARKER);
524 }
525
530 public function getOrderHistoryClassName()
531 {
532 return $this->get(self::ENTITY_ORDER_HISTORY);
533 }
534
539 public function getNotifyClassName()
540 {
541 return $this->get(self::ENTITY_NOTIFY);
542 }
543
547 public function getPropertyClassName()
548 {
549 return $this->get(self::ENTITY_PROPERTY);
550 }
551
557 {
558 return $this->get(self::ENTITY_SHIPMENT_PROPERTY);
559 }
560}
$type
Определения options.php:106
Определения event.php:5
static loadMessages($file)
Определения loc.php:65
getOrderClassName()
Определения registry.php:268
getOrderHistoryClassName()
Определения registry.php:530
const ENTITY_BASKET_PROPERTIES_COLLECTION
Определения registry.php:33
getOrderDiscountClassName()
Определения registry.php:440
const ENTITY_BASKET_PROPERTY_ITEM
Определения registry.php:34
const ENTITY_BASKET_ITEM
Определения registry.php:32
const ENTITY_SHIPMENT_COLLECTION
Определения registry.php:26
getBasketItemClassName()
Определения registry.php:331
const ENTITY_BASKET
Определения registry.php:30
const ENTITY_PROPERTY
Определения registry.php:52
const ENTITY_SHIPMENT_ITEM
Определения registry.php:37
const ENTITY_PAYABLE_BASKET_ITEM
Определения registry.php:23
const ENTITY_PAYMENT
Определения registry.php:21
const ENTITY_TRADE_BINDING_COLLECTION
Определения registry.php:55
const ENTITY_TAX
Определения registry.php:31
getBasketPropertiesCollectionClassName()
Определения registry.php:458
const ENTITY_PROPERTY_VALUE
Определения registry.php:27
getBasketClassName()
Определения registry.php:404
const ENTITY_BUNDLE_COLLECTION
Определения registry.php:29
const ENTITY_BASKET_RESERVE_COLLECTION
Определения registry.php:35
const ENTITY_PAYMENT_COLLECTION
Определения registry.php:22
static getInstance($type)
Определения registry.php:183
const ENTITY_SHIPMENT_PROPERTY_VALUE
Определения registry.php:28
const ENTITY_SHIPMENT_PROPERTY
Определения registry.php:53
getPropertyValueCollectionClassName()
Определения registry.php:367
getShipmentPropertyClassName()
Определения registry.php:556
const ENTITY_ORDER
Определения registry.php:20
const ENTITY_PROPERTY_VALUE_COLLECTION
Определения registry.php:41
const REGISTRY_TYPE_ARCHIVE_ORDER
Определения registry.php:17
const ENTITY_ORDER_DISCOUNT
Определения registry.php:46
const ENTITY_PERSON_TYPE
Определения registry.php:47
getPayableItemCollectionClassName()
Определения registry.php:358
getDiscountClassName()
Определения registry.php:422
const ENTITY_DISCOUNT_COUPON
Определения registry.php:45
const ENTITY_SHIPMENT_ITEM_COLLECTION
Определения registry.php:38
getBundleCollectionClassName()
Определения registry.php:413
getShipmentCollectionClassName()
Определения registry.php:340
getTaxClassName()
Определения registry.php:449
getType()
Определения registry.php:173
const ENTITY_ENTITY_MARKER
Определения registry.php:50
getShipmentPropertyValueClassName()
Определения registry.php:394
const ENTITY_PAYABLE_SHIPMENT
Определения registry.php:24
getReserveCollectionClassName()
Определения registry.php:476
static setRegistry($code, $registryItem)
Определения registry.php:210
getShipmentClassName()
Определения registry.php:286
getNotifyClassName()
Определения registry.php:539
getShipmentItemStoreCollectionClassName()
Определения registry.php:322
const ENTITY_SHIPMENT_PROPERTY_VALUE_COLLECTION
Определения registry.php:42
const ENTITY_SHIPMENT
Определения registry.php:19
getOrderStatusClassName()
Определения registry.php:503
const ENTITY_NOTIFY
Определения registry.php:54
getShipmentItemClassName()
Определения registry.php:304
getShipmentPropertyValueCollectionClassName()
Определения registry.php:376
getEntityMarkerClassName()
Определения registry.php:521
const ENTITY_OPTIONS
Определения registry.php:43
getPersonTypeClassName()
Определения registry.php:494
getBasketPropertyItemClassName()
Определения registry.php:467
getPaymentCollectionClassName()
Определения registry.php:349
getDeliveryStatusClassName()
Определения registry.php:512
const ENTITY_DISCOUNT
Определения registry.php:44
const REGISTRY_TYPE_ORDER
Определения registry.php:16
getPaymentClassName()
Определения registry.php:277
getDiscountCouponClassName()
Определения registry.php:431
getShipmentItemCollectionClassName()
Определения registry.php:295
getPropertyClassName()
Определения registry.php:547
const ENTITY_TRADE_BINDING_ENTITY
Определения registry.php:56
const ENTITY_SHIPMENT_ITEM_STORE_COLLECTION
Определения registry.php:40
getShipmentItemStoreClassName()
Определения registry.php:313
const ENTITY_ORDER_STATUS
Определения registry.php:48
getPropertyValueClassName()
Определения registry.php:385
const ENTITY_DELIVERY_STATUS
Определения registry.php:49
const ENTITY_ORDER_HISTORY
Определения registry.php:51
static resetAll()
Определения registry.php:220
const ENTITY_SHIPMENT_ITEM_STORE
Определения registry.php:39
getReservedItemClassName()
Определения registry.php:485
const ENTITY_BASKET_RESERVE_COLLECTION_ITEM
Определения registry.php:36
const ENTITY_PAYABLE_ITEM_COLLECTION
Определения registry.php:25
const EVENT_ON_INIT_REGISTRY_LIST
Определения registry.php:14
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения options.php:195
$event
Определения prolog_after.php:141
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799