1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
restmanager.php
См. документацию.
1<?php
2
3namespace Bitrix\Sale\Rest;
4
5use Bitrix\Main\Event;
6use Bitrix\Main\Loader;
7use Bitrix\Rest\RestException;
8use Bitrix\Sale\EventActions;
9use Bitrix\Sale\Internals\Entity;
10use Bitrix\Sale\Rest\Synchronization\LoggerDiag;
11use Bitrix\Sale\Rest\Synchronization\Manager;
12use Bitrix\Sale\Rest\Synchronization\Synchronizer;
13use Bitrix\Rest\Sqs;
14
16{
17
18//RegisterModuleDependences("rest", "onRestGetModule", "sale", "\\Bitrix\\Sale\\Rest\\RestManager", "onRestGetModule");
19//RegisterModuleDependences("rest", "OnRestServiceBuildDescription", "sale", "\\Bitrix\\Sale\\Rest\\RestManager", "onRestServiceBuildDescription");
22
23// public static function onRestGetModule()
24// {
25// return ['MODULE_ID' => 'sale'];
26// }
27
28 public static function onRestServiceBuildDescription()
29 {
30 Loader::includeModule('sale');
31
32 return [
33 'sale' => [
34 \CRestUtil::EVENTS => [
35 'OnSaleOrderSaved' => [
36 'sale',
37 'OnSaleOrderSaved',
38 [
39 RestManager::class,
40 'processEvent',
41 ],
42 [
43 'category' => Sqs::CATEGORY_CRM,
44 ],
45 ],
46 'OnSaleBeforeOrderDelete' => [
47 'sale',
48 'OnSaleBeforeOrderDelete',
49 [
50 RestManager::class,
51 'processEvent',
52 ],
53 [
54 'category' => Sqs::CATEGORY_CRM,
55 ],
56 ],
57 'OnPropertyValueEntitySaved' => [
58 'sale',
59 'OnSalePropertyValueEntitySaved',
60 [
61 RestManager::class,
62 'processEvent',
63 ],
64 [
65 'category' => Sqs::CATEGORY_CRM,
66 ],
67 ],
68 'OnPaymentEntitySaved' => [
69 'sale',
70 'OnSalePaymentEntitySaved',
71 [
72 RestManager::class,
73 'processEvent',
74 ],
75 [
76 'category' => Sqs::CATEGORY_CRM,
77 ],
78 ],
79 'OnShipmentEntitySaved' => [
80 'sale',
81 'OnSaleShipmentEntitySaved',
82 [
83 RestManager::class,
84 'processEvent',
85 ],
86 [
87 'category' => Sqs::CATEGORY_CRM,
88 ],
89 ],
90 'OnOrderEntitySaved' => [
91 'sale',
92 'OnSaleOrderEntitySaved',
93 [
94 RestManager::class,
95 'processEvent',
96 ],
97 [
98 'category' => Sqs::CATEGORY_CRM,
99 ],
100 ],
101 'OnPropertyValueDeleted' => [
102 'sale',
103 'OnSalePropertyValueDeleted',
104 [
105 RestManager::class,
106 'processEvent',
107 ],
108 [
109 'category' => Sqs::CATEGORY_CRM,
110 ],
111 ],
112 'OnPaymentDeleted' => [
113 'sale',
114 'OnSalePaymentDeleted',
115 [
116 RestManager::class,
117 'processEvent',
118 ],
119 [
120 'category' => Sqs::CATEGORY_CRM,
121 ],
122 ],
123 'OnShipmentDeleted' => [
124 'sale',
125 'OnSaleShipmentDeleted',
126 [
127 RestManager::class,
128 'processEvent',
129 ],
130 [
131 'category' => Sqs::CATEGORY_CRM,
132 ],
133 ],
134 'OnOrderDeleted' => [
135 'sale',
136 'OnSaleOrderDeleted',
137 [
138 RestManager::class,
139 'processEvent',
140 ],
141 [
142 'category' => Sqs::CATEGORY_CRM,
143 ],
144 ],
145 ]
146 ]
147 ];
148 }
149
150 public static function processEvent(array $params, array $handlerFields)
151 {
153 $event = $params[0];
154 $eventParameters = $event->getParameters();
156 $entity = $eventParameters['ENTITY'] ?? null;
157 $eventName = $handlerFields['EVENT_NAME'];
158 $eventHandler = $handlerFields['EVENT_HANDLER'];
159
161 $action = $instance->getAction();
162
163 LoggerDiag::addMessage(
164 'processEvent',
165 var_export(
166 [
167 'processEvent [process-01]' => [
168 'eventName' => $eventName,
169 'action' => $action,
170 ],
171 ],
172 true
173 )
174 );
175
176 switch(mb_strtolower($eventName))
177 {
178 case 'onsaleordersaved':
180 {
181 throw new RestException("Event stopped");
182 }
183 elseif ($instance->isExecutedHandler($eventHandler))
184 {
185 throw new RestException("Event stopped");
186 }
187
188 if ($entity->getId() <= 0)
189 {
190 throw new RestException("Could not find entity ID in fields of event \"{$eventName}\"");
191 }
192
193 $parameters = [
194 'FIELDS' => [
195 'ID' => $entity->getId(),
196 'XML_ID' => $entity->getField('XML_ID'),
197 'ACTION' => Synchronizer::MODE_SAVE,
198 ]
199 ];
200
201 LoggerDiag::addMessage(
202 mb_strtolower($eventName),
203 var_export(
204 [
205 'processEvent [process-02]' => [
206 'parameters' => $parameters,
207 ],
208 ],
209 true
210 )
211 );
212
213 $instance->pushHandlerExecuted($eventHandler);
214
215 return $parameters;
216
217 case 'onsalebeforeorderdelete':
219 {
220 throw new RestException("Event stopped");
221 }
222
224
225 $parameters = [
226 'FIELDS' => [
227 'ID' => $entity->getId(),
228 'XML_ID' => $entity->getField('XML_ID'),
229 'ACTION' => Synchronizer::MODE_DELETE,
230 ]
231 ];
232
233 LoggerDiag::addMessage(
234 mb_strtolower($eventName),
235 var_export(
236 [
237 'processEvent [process-03]' => [
238 'parameters' => $parameters,
239 ],
240 ],
241 true
242 )
243 );
244
245 return $parameters;
246
247 case 'onpropertyvalueentitysaved':
248 case 'onpaymententitysaved':
249 case 'onshipmententitysaved':
250 case 'onorderentitysaved':
251 case 'onpropertyvaluedeleted':
252 case 'onpaymentdeleted':
253 case 'onshipmentdeleted':
254 case 'onorderdeleted':
255 $entityId = 0;
256 if ($entity !== null)
257 {
258 $entityId = $entity->getId();
259 }
260 elseif (isset($event->getParameters()['VALUES']))
261 {
262 $entityId = $event->getParameters()['VALUES']['ID'];
263 }
264
265 $parameters = ['FIELDS' => ['ID' => $entityId]];
266
267 LoggerDiag::addMessage(
268 mb_strtolower($eventName),
269 var_export(
270 [
271 'processEvent [process-04]' => [
272 'parameters' => $parameters,
273 ],
274 ],
275 true
276 )
277 );
278
279 return $parameters;
280
281 default:
282 throw new RestException("The Event \"{$eventName}\" is not supported in current context");
283 }
284 }
285}
const CATEGORY_CRM
Определения sqs.php:14
static onRestServiceBuildDescription()
Определения restmanager.php:28
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$entity
$entityId
Определения payment.php:4
$event
Определения prolog_after.php:141
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$instance
Определения ps_b24_final.php:14
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799
$action
Определения file_dialog.php:21