1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
handler.php
См. документацию.
1<?php
2
3namespace Sale\Handlers\Delivery;
4
5use Bitrix\Main\Entity\ExpressionField;
6use Bitrix\Main\Error;
7use Bitrix\Main\Loader;
8use Bitrix\Sale\Internals\CompanyTable;
9use Bitrix\Sale\Result;
10use \Bitrix\Sale\Shipment;
11use Bitrix\Main\EventManager;
12use Bitrix\Main\Localization\Loc;
13use Sale\Handlers\Delivery\Spsr\Location;
14use Bitrix\Sale\Delivery\CalculationResult;
15
16Loc::loadMessages(__FILE__);
17
18Loader::registerAutoLoadClasses(
19 'sale',
20 array(
21 'Sale\Handlers\Delivery\Spsr\Cache' => 'handlers/delivery/spsr/cache.php',
22 'Sale\Handlers\Delivery\SpsrProfile' => 'handlers/delivery/spsr/profile.php',
23 'Sale\Handlers\Delivery\Spsr\Request' => 'handlers/delivery/spsr/request.php',
24 'Sale\Handlers\Delivery\SpsrTracking' => 'handlers/delivery/spsr/tracking.php',
25 'Sale\Handlers\Delivery\Spsr\Location' => 'handlers/delivery/spsr/location.php',
26 'Sale\Handlers\Delivery\Spsr\Calculator' => 'handlers/delivery/spsr/calculator.php'
27 )
28);
29
30class SpsrHandler extends \Bitrix\Sale\Delivery\Services\Base
31{
33 protected $handlerCode = 'BITRIX_SPSR';
34
36 protected static $canHasProfiles = true;
38 protected static $whetherAdminExtraServicesShow = true;
40 protected $trackingClass = '\Sale\Handlers\Delivery\SpsrTracking';
41
45 public static function getClassTitle()
46 {
47 return Loc::getMessage("SALE_DLV_SRV_SPSR_TITLE");
48 }
49
53 public static function getClassDescription()
54 {
55 return Loc::getMessage(
56 "SALE_DLV_SRV_SPSR_DESCRIPTION",
57 array(
58 '#A1#' => '<a href="http://www.spsr.ru/" target="_blank">',
59 '#A2#' => '</a>',
60 )
61 );
62 }
63
70 public function calculateTariff(Shipment $shipment, $tariff)
71 {
72 return (new CalculationResult())->addError(new Error('The company no longer exists'));
73 }
74
78 protected function getConfigStructure()
79 {
80 $natures = array_intersect_key(
81 self::getNaturesList(),
82 array_flip(
83 self::getProfileNatures()
84 )
85 );
86
87 $result = array(
88 "MAIN" => array(
89 "TITLE" => Loc::getMessage("SALE_DLV_SRV_SPSR_MAIN_TITLE"),
90 "DESCRIPTION" => Loc::getMessage("SALE_DLV_SRV_SPSR_MAIN_DSCR"),
91 "ITEMS" => array(
92 "CALCULATE_IMMEDIATELY" => array(
93 'TYPE' => 'Y/N',
94 "NAME" => Loc::getMessage("SALE_DLV_SRV_SPSR_CALCULATE_IMMEDIATELY"),
95 "DEFAULT" => "Y"
96 ),
97 "DEFAULT_WEIGHT" => array(
98 'TYPE' => 'NUMBER',
99 "NAME" => Loc::getMessage("SALE_DLV_SRV_SPSR_DEFAULT_WEIGHT"),
100 "DEFAULT" => "1000"
101 ),
102 "AMOUNT_CHECK" => array(
103 "TYPE" => "ENUM",
104 "NAME" => Loc::getMessage("SALE_DLV_SRV_SPSR_AMOUNT_CHECK"),
105 "DEFAULT" => "1",
106 "OPTIONS" => array(
107 -1 => Loc::getMessage("SALE_DLV_SRV_SPSR_AMOUNT_CHECK__1"),
108 0 => Loc::getMessage("SALE_DLV_SRV_SPSR_AMOUNT_CHECK_0"),
109 1 => Loc::getMessage("SALE_DLV_SRV_SPSR_AMOUNT_CHECK_1")
110 )
111 ),
112 "NATURE" => array(
113 "TYPE" => "ENUM",
114 "NAME" => Loc::getMessage("SALE_DLV_SRV_SPSR_NATURE"),
115 "DEFAULT" => "1",
116 "REQUIRED" => true,
117 "OPTIONS" => $natures
118 ),
119 "LOGIN" => array(
120 "TYPE" => "STRING",
121 "NAME" => Loc::getMessage("SALE_DLV_SRV_SPSR_LOGIN"),
122 "DEFAULT" => ""
123 ),
124 "PASS" => array(
125 "TYPE" => "STRING",
126 "NAME" => Loc::getMessage("SALE_DLV_SRV_SPSR_PASS"),
127 "DEFAULT" => ""
128 ),
129 "ICN" => array(
130 "TYPE" => "STRING",
131 "NAME" => Loc::getMessage("SALE_DLV_SRV_SPSR_ICN"),
132 "DEFAULT" => ""
133 )
134 )
135 )
136 );
137
138 return $result;
139 }
140
144 protected static function getNaturesList()
145 {
146 $result = array();
147 $codes = array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24);
148
149 foreach($codes as $code)
150 $result[$code] = Loc::getMessage('SALE_DLV_SRV_SPSR_NATURE_'.$code);
151
152 return $result;
153 }
154
159 protected static function getProfileNatures($profileId = 0)
160 {
161 if($profileId <= 0)
162 return array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24);
163
164 $natures = array(
165 20 => array(1, 2, 17), //colibri
166 21 => array(1, 2, 17), //gepard-express 13
167 22 => array(1, 2, 17), //gepard-express 18
168 23 => array(1, 2, 17), //gepard-express
169 24 => array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24), //pelican-standart
170 25 => array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24), //pelican-econom
171 26 => array(1, 2, 17, 18, 19, 20, 21, 22 ), //bizon-cargo
172 27 => array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24), //fraxt
173 28 => array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24), //pelican-online
174 35 => array(1, 2, 17 ), //gepard-online
175 36 => array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24) //zebra-online
176 );
177
178 return isset($natures[$profileId]) ? $natures[$profileId] : array();
179 }
180
181 public function isCalculatePriceImmediately()
182 {
183 return $this->config['MAIN']['CALCULATE_IMMEDIATELY'] == 'Y';
184 }
185
189 public static function onGetBusinessValueConsumers()
190 {
191 if(!self::isHoldingUsed())
192 return array();
193
194 static $consumers;
195
196 if(!$consumers)
197 {
198 $providerKeys = array('', 'VALUE', 'COMPANY');
199
200 $codes = array(
201 'DELIVERY_SPSR_LOGIN' => array('NAME' => Loc::getMessage('SALE_DLV_SRV_SPSR_LOGIN'), 'SORT' => 100, 'GROUP' => 'DELIVERY_SPSR_AUTH', 'PROVIDERS' => $providerKeys),
202 'DELIVERY_SPSR_PASS' => array('NAME' => Loc::getMessage('SALE_DLV_SRV_SPSR_PASS'), 'SORT' => 200, 'GROUP' => 'DELIVERY_SPSR_AUTH', 'PROVIDERS' => $providerKeys),
203 'DELIVERY_SPSR_ICN' => array('NAME' => Loc::getMessage('SALE_DLV_SRV_SPSR_ICN'), 'SORT' => 300, 'GROUP' => 'DELIVERY_SPSR_AUTH', 'PROVIDERS' => $providerKeys),
204 );
205
206 $consumers = array(
207 'SORT' => 400,
208 'GROUP' => 'DELIVERY',
209 'CODES' => $codes
210 );
211 }
212
213 return $consumers;
214 }
215
216 public static function onGetBusinessValueGroups()
217 {
218 if(!self::isHoldingUsed())
219 return array();
220
221 return array(
222 'DELIVERY_SPSR_AUTH' => array('NAME' => Loc::getMessage('SALE_DLV_SRV_SPSR_BV_AUTH'), 'SORT' => 100),
223 );
224 }
225
226 private static function isHoldingUsed()
227 {
228 static $result = null;
229
230 if($result !== null)
231 return $result;
232
233 $dbRes = CompanyTable::getList(array(
234 'filter' => array('=ACTIVE' => 'Y'),
235 'select' => array('CNT'),
236 'runtime' => array(
237 new ExpressionField('CNT', 'COUNT(*)'
238 ))
239 ));
240
241 if($row = $dbRes->fetch())
242 if(intval($row['CNT']) > 1)
243 $result = true;
244
245 return $result;
246 }
247
251 public static function getChildrenClassNames()
252 {
253 return array(
254 '\Sale\Handlers\Delivery\SpsrProfile'
255 );
256 }
257
261 public static function getCompanyName()
262 {
263 return '';
264 }
265
270 public function getSidResult($shipment = null)
271 {
272 return (new Result())->addError(new Error('The company no longer exists'));
273 }
274
279 public function getICN($shipment = null)
280 {
281 return '';
282 }
283
288 public function getServiceTypes($shipment = null)
289 {
290 return (new Result())->addError(new Error('The company no longer exists'));
291 }
292
296 protected function getKnownServices()
297 {
298 return array(20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 36);
299 }
300
304 public function getEmbeddedExtraServicesList()
305 {
306 return self::getAlltExtraServices();
307 }
308
309 public static function getAlltExtraServices()
310 {
311 return array(
312 "SMS" => array(
313 "NAME" => Loc::getMessage('SALE_DLV_SRV_SPSR_SMS'),
314 "SORT" => 100,
315 "RIGHTS" => "NYN",
316 "ACTIVE" => "Y",
317 "CLASS_NAME" => '\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
318 "DESCRIPTION" => Loc::getMessage('SALE_DLV_SRV_SPSR_SMS_DESCR'),
319 "INIT_VALUE" => "N",
320 "PARAMS" => array("PRICE" => 0)
321 ),
322 "SMS_RECV" => array(
323 "NAME" => Loc::getMessage('SALE_DLV_SRV_SPSR_SMS_RECV'),
324 "SORT" => 100,
325 "RIGHTS" => "NYY",
326 "ACTIVE" => "Y",
327 "CLASS_NAME" => '\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
328 "DESCRIPTION" => Loc::getMessage('SALE_DLV_SRV_SPSR_SMS_RECV_DESCR'),
329 "INIT_VALUE" => "Y",
330 "PARAMS" => array("PRICE" => 0)
331 ),
332 "BEFORE_SIGNAL" => array(
333 "NAME" => Loc::getMessage('SALE_DLV_SRV_SPSR_BEFORE_SIGNAL'),
334 "SORT" => 100,
335 "RIGHTS" => "NYY",
336 "ACTIVE" => "Y",
337 "CLASS_NAME" => '\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
338 "DESCRIPTION" => Loc::getMessage('SALE_DLV_SRV_SPSR_BEFORE_SIGNAL_DESCR'),
339 "INIT_VALUE" => "N",
340 "PARAMS" => array("PRICE" => 0)
341 ),
342 "BY_HAND" => array(
343 "NAME" => Loc::getMessage('SALE_DLV_SRV_SPSR_BY_HAND'),
344 "SORT" => 100,
345 "RIGHTS" => "NYY",
346 "ACTIVE" => "Y",
347 "CLASS_NAME" => '\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
348 "DESCRIPTION" => Loc::getMessage('SALE_DLV_SRV_SPSR_BY_HAND_DESCR'),
349 "INIT_VALUE" => "N",
350 "PARAMS" => array("PRICE" => 0)
351 ),
352 "ICD" => array(
353 "NAME" => Loc::getMessage('SALE_DLV_SRV_SPSR_ICD'),
354 "SORT" => 100,
355 "RIGHTS" => "NYY",
356 "ACTIVE" => "Y",
357 "CLASS_NAME" => '\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
358 "DESCRIPTION" => Loc::getMessage('SALE_DLV_SRV_SPSR_ICD_DESCR'),
359 "INIT_VALUE" => "N",
360 "PARAMS" => array("PRICE" => 0)
361 ),
362 "TO_BE_CALLED_FOR" => array(
363 "NAME" => Loc::getMessage('SALE_DLV_SRV_SPSR_TO_BE_CALLED_FOR'),
364 "SORT" => 100,
365 "RIGHTS" => "NYY",
366 "ACTIVE" => "Y",
367 "CLASS_NAME" => '\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
368 "DESCRIPTION" => "",
369 "INIT_VALUE" => "N",
370 "PARAMS" => array("PRICE" => 0)
371 ),
372 "PLAT_TYPE" => array(
373 "NAME" => Loc::getMessage('SALE_DLV_SRV_SPSR_PLAT_TYPE'),
374 "SORT" => 100,
375 "RIGHTS" => "NYN",
376 "ACTIVE" => "Y",
377 "CLASS_NAME" => '\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
378 "DESCRIPTION" => Loc::getMessage('SALE_DLV_SRV_SPSR_PLAT_TYPE_DESCR'),
379 "INIT_VALUE" => "N",
380 "PARAMS" => array("PRICE" => 0)
381 )
382 );
383 }
384
389 public function getProfilesList($shipment = null)
390 {
391 return [];
392 }
393
398 public function getCompatibleProfiles(Shipment $shipment)
399 {
400 return [];
401 }
402
406 public static function install()
407 {
408 $eventManager = EventManager::getInstance();
409 $eventManager->registerEventHandler(
410 'sale',
411 'onSaleDeliveryTrackingClassNamesBuildList',
412 'sale',
413 '\Sale\Handlers\Delivery\SpsrHandler',
414 'onSaleDeliveryTrackingClassNamesBuildList'
415 );
416
417 Location::install();
418 }
419
423 public static function unInstall()
424 {
425 $eventManager = EventManager::getInstance();
426 $eventManager->unRegisterEventHandler(
427 'sale',
428 'onSaleDeliveryTrackingClassNamesBuildList',
429 'sale',
430 '\Sale\Handlers\Delivery\SpsrHandler',
431 'onSaleDeliveryTrackingClassNamesBuildList'
432 );
433 Location::unInstall();
434 }
435
436 public static function onSaleDeliveryTrackingClassNamesBuildList()
437 {
438 return new \Bitrix\Main\EventResult(
439 \Bitrix\Main\EventResult::SUCCESS,
440 array(
441 '\Sale\Handlers\Delivery\SpsrTracking' => '/bitrix/modules/sale/handlers/delivery/spsr/tracking.php'
442 ),
443 'sale'
444 );
445 }
446
450 public static function isInstalled()
451 {
452 return Location::isInstalled();
453 }
454
455 public function getProfilesDefaultParams()
456 {
457 return [];
458 }
459
463 public static function canHasProfiles()
464 {
465 return self::$canHasProfiles;
466 }
467
471 public static function whetherAdminExtraServicesShow()
472 {
473 return self::$whetherAdminExtraServicesShow;
474 }
475
479 public function getAdminAdditionalTabs()
480 {
481 global $APPLICATION;
482
483 ob_start();
484 $APPLICATION->IncludeComponent(
485 "bitrix:sale.location.map",
486 "",
487 array(
488 "EXTERNAL_LOCATION_CLASS" => '\Sale\Handlers\Delivery\Spsr\Location'
489 ),
490 false
491 );
492 $content = ob_get_contents();
493 ob_end_clean();
494
495 return array(
496 array(
497 "TAB" => Loc::getMessage('SALE_DLVRS_ADD_LOC_TAB'),
498 "TITLE" => Loc::getMessage('SALE_DLVRS_ADD_LOC_TAB_TITLE'),
499 "CONTENT" => $content
500 )
501 );
502 }
503
505 public static function isHandlerCompatible()
506 {
507 return false;
508 }
509}
global $APPLICATION
Определения include.php:80
$content
Определения commerceml.php:144
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения options.php:195
trait Error
Определения error.php:11
$eventManager
Определения include.php:412
$dbRes
Определения yandex_detail.php:168