1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
delivery_pecom.php
См. документацию.
1<?
2/********************************************************************************
3 * Delivery services http://pecom.ru/
4 * https://kabinet.pecom.ru/api/v1/
5 *******************************************************************************/
6
7use \Bitrix\Main\Loader;
8use \Bitrix\Sale\Result;
9use \Bitrix\Sale\Shipment;
10
11Loader::includeModule("sale");
12
13Loader::registerAutoLoadClasses(
14 'sale',
15 array(
16 'Bitrix\\Sale\\Delivery\\Pecom\\Request' => 'ru/delivery/pecom/request.php',
17 'Bitrix\\Sale\\Delivery\\Pecom\\Adapter' => 'ru/delivery/pecom/adapter.php',
18 'Bitrix\\Sale\\Delivery\\Pecom\\Calculator' => 'ru/delivery/pecom/calculator.php',
19 'Bitrix\\Sale\\Delivery\\Pecom\\Location' => 'ru/delivery/pecom/location.php'
20 )
21);
22
27
28IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"].'/bitrix/modules/sale/delivery/delivery_pecom.php');
29require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/lib/delivery/inputs.php");
30
32{
33 public static $EXTRA_DEMENSIONS_WEIGHT = 1000; // (kg)
34 public static $EXTRA_DIMENSIONS_SIZE = 5; // (m)
35
36 public static $PAYER_SHOP = "1";
37 public static $PAYER_BUYER = "2";
38
39 public static function Init()
40 {
41 return array(
42 /* Basic description */
43 'SID' => 'pecom',
44 'NAME' => GetMessage('SALE_DH_PECOM_NAME'),
45 'DESCRIPTION' => GetMessage('SALE_DH_PECOM_DESCRIPTION').' <a href="http://pecom.ru">http://pecom.ru</a>',
46 'DESCRIPTION_INNER' => GetMessage('SALE_DH_PECOM_DESCRIPTION').' <a href="http://pecom.ru">http://pecom.ru</a>',
47 'BASE_CURRENCY' => 'RUB',
48 'HANDLER' => __FILE__,
49
50 /* Handler methods */
51 'DBGETSETTINGS' => array('CDeliveryPecom', 'getSettings'),
52 'DBSETSETTINGS' => array('CDeliveryPecom', 'setSettings'),
53 'GETCONFIG' => array('CDeliveryPecom', 'getConfig'),
54 'GETFEATURES' => array('CDeliveryPecom', 'getFeatures'),
55 'COMPABILITY' => array('CDeliveryPecom', 'compability'),
56 'CALCULATOR' => array('CDeliveryPecom', 'calculate'),
57 'GETEXTRAINFOPARAMS' => array('CDeliveryPecom', 'getExtraInfoParams'),
58 'GETORDERSACTIONSLIST' => array('CDeliveryPecom', 'getActionsList'),
59 'EXECUTEACTION' => array('CDeliveryPecom', 'executeAction'),
60 'GET_ADMIN_MESSAGE' => array('CDeliveryPecom', 'getAdminMessage'),
61 'EXEC_ADMIN_ACTION' => array('CDeliveryPecom', 'execAdminAction'),
62 'GET_ADD_INFO_SHIPMENT_VIEW' => array('CDeliveryPecom', 'getAdditionalInfoShipmentView'),
63 'GET_ADD_INFO_SHIPMENT_EDIT' => array('CDeliveryPecom', 'getAdditionalInfoShipmentEdit'),
64 'PROCESS_ADD_INFO_SHIPMENT_EDIT' => array('CDeliveryPecom', 'processAdditionalInfoShipmentEdit'),
65
66 /* List of delivery profiles */
67 "PROFILES" => array(
68 "auto" => array(
69 "TITLE" => GetMessage("SALE_DH_PECOM_AUTO_TITLE"),
70 "DESCRIPTION" => GetMessage("SALE_DH_PECOM_AUTO_DESCR"),
71 'RESTRICTIONS_WEIGHT' => array(0, 0),
72 'RESTRICTIONS_SUM' => array(0),
73 'TAX_RATE' => 0,
74 'RESTRICTIONS_DIMENSIONS' => array("425", "265", "380")
75 ),
76 "avia" => array(
77 "TITLE" => GetMessage("SALE_DH_PECOM_AVIA_TITLE"),
78 "DESCRIPTION" => GetMessage("SALE_DH_PECOM_AVIA_DESCR"),
79 'RESTRICTIONS_WEIGHT' => array(0, 0),
80 'RESTRICTIONS_SUM' => array(0),
81 'TAX_RATE' => 0,
82 'RESTRICTIONS_DIMENSIONS' => array("425", "265", "380")
83 )
84 )
85 );
86 }
87
88 public static function getExtraInfoParams($arOrder, $arConfig, $profileId, $siteId)
89 {
90 $result = array();
91
92 $locationsTo = Adapter::mapLocation($arOrder["LOCATION_TO"]);
93
94 if(count($locationsTo) > 1)
95 {
96 $locValues = array();
97
98 foreach($locationsTo as $locId => $locName)
99 {
100 $locValues[$locId] = $locName;
101 }
102
103 $result["location"] = array(
104 "TYPE" => "DROPDOWN",
105 "TITLE" => GetMessage("SALE_DH_PECOM_EXTRA_LOCATION"),
106 "VALUES" => $locValues
107 );
108 }
109
110 return $result;
111 }
112
113 public static function getConfig($siteId = false)
114 {
115 $shopLocationId = CSaleHelper::getShopLocationId($siteId);
116 $arShopLocation = CSaleHelper::getLocationByIdHitCached($shopLocationId);
117
118 $locDescription = [];
119 if (!empty($arShopLocation) && is_array($arShopLocation))
120 {
121 $descriptionFields = [
122 'COUNTRY_NAME_LANG',
123 'REGION_NAME_LANG',
124 'CITY_NAME_LANG',
125 ];
126
127 foreach ($descriptionFields as $fieldName)
128 {
129 $value = trim((string)($arShopLocation[$fieldName] ?? ''));
130 if ($value !== '')
131 {
132 $locDescription[] = $value;
133 }
134 }
135 }
136 $locString = implode(', ', $locDescription);
137
138 $locDelivery = Adapter::mapLocation($shopLocationId);
139
140 $arConfig = array(
141 'CONFIG_GROUPS' => array(
142 'exchange_sett' => GetMessage('SALE_DH_PECOM_EXCH_TITLE'),
143 'add_services' => GetMessage('SALE_DH_PECOM_ADD_SERVICES_TITLE'),
144 'auto' => GetMessage('SALE_DH_PECOM_AUTO_TITLE'),
145 'avia' => GetMessage('SALE_DH_PECOM_AVIA_TITLE'),
146 ),
147
148 "CONFIG" => array(
149 "LOGIN" => array(
150 "DEFAULT" => '',
151 "TITLE" => GetMessage('SALE_DH_PECOM_EXCH_LOGIN'),
152 "GROUP" => "exchange_sett"
153 ),
154 "KEY" => array(
155 "DEFAULT" => '',
156 "TITLE" => GetMessage('SALE_DH_PECOM_EXCH_KEY'),
157 "GROUP" => "exchange_sett"
158 ),
159
160 "NAME" => array(
161 "DEFAULT" => '',
162 "TITLE" => GetMessage('SALE_DH_PECOM_EXCH_NAME'),
163 "GROUP" => "exchange_sett"
164 ),
165 "INN" => array(
166 "DEFAULT" => '',
167 "TITLE" => GetMessage('SALE_DH_PECOM_EXCH_INN'),
168 "GROUP" => "exchange_sett"
169 ),
170
171 "CITY" => array(
172 "TYPE" => "TEXT_RO",
173 "TITLE" => GetMessage('SALE_DH_PECOM_EXCH_CITY'),
174 "DEFAULT" => $locString,
175 "GROUP" => "exchange_sett"
176 ),
177 "CITY_DELIVERY" => array(
178 "TYPE" => "DROPDOWN",
179 "TITLE" => GetMessage('SALE_DH_PECOM_EXCH_CITY_DELIVERY'),
180 "VALUES" => $locDelivery,
181 "GROUP" => "exchange_sett"
182 ),
183
184 "PHONE" => array(
185 "DEFAULT" => '',
186 "TITLE" => GetMessage('SALE_DH_PECOM_EXCH_PHONE'),
187 "GROUP" => "exchange_sett"
188 ),
189
190 "PAYMENT_FORM" => array(
191 "TYPE" => "DROPDOWN",
192 "DEFAULT" => self::$PAYER_BUYER,
193 "TITLE" => GetMessage('SALE_DH_PECOM_AS_PAYMENT_FORM'),
194 "GROUP" => "exchange_sett",
195 "VALUES" => array(
196 self::$PAYER_SHOP => GetMessage('SALE_DH_PECOM_AS_PAYMENT_BANK'),
197 self::$PAYER_BUYER => GetMessage('SALE_DH_PECOM_AS_PAYMENT_KASSA')
198 )
199 ),
200
201 "SERVICE_TAKE" => array(
202 'TYPE' => 'SECTION',
203 'TITLE' => GetMessage('SALE_DH_PECOM_AS_TAKE'),
204 'GROUP' => 'add_services',
205 ),
206
207 "SERVICE_TAKE_ENABLED" => array(
208 'TYPE' => 'CHECKBOX',
209 'TITLE' => GetMessage('SALE_DH_PECOM_AS_TAKE_ENABLE'),
210 'GROUP' => 'add_services',
211 'DEFAULT' => '',
212 'HIDE_BY_NAMES' => array('SERVICE_TAKE_TENT_ENABLED', 'SERVICE_TAKE_HYDRO_ENABLED')
213 ),
214
215 "SERVICE_TAKE_TENT_ENABLED" => array(
216 'TYPE' => 'CHECKBOX',
217 'TITLE' => GetMessage('SALE_DH_PECOM_AS_TAKE_TENT'),
218 'GROUP' => 'add_services',
219 'DEFAULT' => ''
220 ),
221
222 "SERVICE_TAKE_HYDRO_ENABLED" => array(
223 'TYPE' => 'CHECKBOX',
224 'TITLE' => GetMessage('SALE_DH_PECOM_AS_TAKE_HYDRO'),
225 'GROUP' => 'add_services',
226 'DEFAULT' => ''
227 ),
228
229 "SERVICE_DELIVERY" => array(
230 'TYPE' => 'SECTION',
231 'TITLE' => GetMessage('SALE_DH_PECOM_AS_DELIVERY'),
232 'GROUP' => 'add_services',
233 ),
234
235 "SERVICE_DELIVERY_ENABLED" => array(
236 'TYPE' => 'CHECKBOX',
237 'TITLE' => GetMessage('SALE_DH_PECOM_AS_DELIVERY_ENABLE'),
238 'GROUP' => 'add_services',
239 'DEFAULT' => '',
240 'HIDE_BY_NAMES' => array('SERVICE_DELIVERY_TENT_ENABLED', 'SERVICE_DELIVERY_HYDRO_ENABLED', 'SERVICE_OTHER_DELIVERY_PAYER')
241 ),
242
243 "SERVICE_DELIVERY_TENT_ENABLED" => array(
244 'TYPE' => 'CHECKBOX',
245 'TITLE' => GetMessage('SALE_DH_PECOM_AS_DELIVERY_TENT'),
246 'GROUP' => 'add_services',
247 'DEFAULT' => ''
248 ),
249
250 "SERVICE_DELIVERY_HYDRO_ENABLED" => array(
251 'TYPE' => 'CHECKBOX',
252 'TITLE' => GetMessage('SALE_DH_PECOM_AS_DELIVERY_HYDRO'),
253 'GROUP' => 'add_services',
254 'DEFAULT' => ''
255 ),
256
257 "SERVICE_OTHER_DELIVERY_PAYER" => array(
258 'TYPE' => 'DROPDOWN',
259 'TITLE' => GetMessage('SALE_DH_PECOM_AS_PAYER'),
260 'GROUP' => 'add_services',
261 'DEFAULT' => self::$PAYER_BUYER,
262 "VALUES" => array(
263 self::$PAYER_SHOP => GetMessage('SALE_DH_PECOM_AS_PAYER_SHOP'),
264 self::$PAYER_BUYER => GetMessage('SALE_DH_PECOM_AS_PAYER_BUYER')
265 )
266 ),
267
268 "SERVICE_OTHER" => array(
269 'TYPE' => 'SECTION',
270 'TITLE' => GetMessage('SALE_DH_PECOM_AS_OTHER'),
271 'GROUP' => 'add_services',
272 ),
273
274 "SERVICE_OTHER_PLOMBIR_ENABLE" => array(
275 'TYPE' => 'CHECKBOX',
276 'TITLE' => GetMessage('SALE_DH_PECOM_AS_OTHER_PLOMBIR_ENABLE'),
277 'GROUP' => 'add_services',
278 'DEFAULT' => '',
279 'HIDE_BY_NAMES' => array('SERVICE_OTHER_PLOMBIR_COUNT', 'SERVICE_OTHER_PLOMBIR_PAYER')
280 ),
281
282 "SERVICE_OTHER_PLOMBIR_COUNT" => array(
283 'TYPE' => 'STRING',
284 'TITLE' => GetMessage('SALE_DH_PECOM_AS_OTHER_PLOMBIR_COUNT'),
285 'GROUP' => 'add_services',
286 'DEFAULT' => '0',
287 ),
288
289 "SERVICE_OTHER_PLOMBIR_PAYER" => array(
290 'TYPE' => 'DROPDOWN',
291 'TITLE' => GetMessage('SALE_DH_PECOM_AS_PAYER'),
292 'GROUP' => 'add_services',
293 'DEFAULT' => self::$PAYER_BUYER,
294 "VALUES" => array(
295 self::$PAYER_SHOP => GetMessage('SALE_DH_PECOM_AS_PAYER_SHOP'),
296 self::$PAYER_BUYER => GetMessage('SALE_DH_PECOM_AS_PAYER_BUYER')
297 )
298 ),
299
300 "SERVICE_OTHER_PALLETE" => array(
301 'TYPE' => 'CHECKBOX',
302 'TITLE' => GetMessage('SALE_DH_PECOM_AS_OTHER_PALLETE'),
303 'GROUP' => 'add_services',
304 'DEFAULT' => '',
305 'TOP_LINE' => 'Y',
306 'HIDE_BY_NAMES' => array('SERVICE_OTHER_PALLETE_PAYER')
307 ),
308
309 "SERVICE_OTHER_PALLETE_PAYER" => array(
310 'TYPE' => 'DROPDOWN',
311 'TITLE' => GetMessage('SALE_DH_PECOM_AS_PAYER'),
312 'GROUP' => 'add_services',
313 'DEFAULT' => self::$PAYER_BUYER,
314 "VALUES" => array(
315 self::$PAYER_SHOP => GetMessage('SALE_DH_PECOM_AS_PAYER_SHOP'),
316 self::$PAYER_BUYER => GetMessage('SALE_DH_PECOM_AS_PAYER_BUYER')
317 )
318 ),
319
320 "SERVICE_OTHER_INSURANCE" => array(
321 'TYPE' => 'CHECKBOX',
322 'TITLE' => GetMessage('SALE_DH_PECOM_AS_OTHER_INSURANCE'),
323 'GROUP' => 'add_services',
324 'DEFAULT' => '',
325 'TOP_LINE' => 'Y',
326 'HIDE_BY_NAMES' => array('SERVICE_OTHER_INSURANCE_PAYER')
327 ),
328
329 "SERVICE_OTHER_INSURANCE_PAYER" => array(
330 'TYPE' => 'DROPDOWN',
331 'TITLE' => GetMessage('SALE_DH_PECOM_AS_PAYER'),
332 'GROUP' => 'add_services',
333 'DEFAULT' => self::$PAYER_BUYER,
334 "VALUES" => array(
335 self::$PAYER_SHOP => GetMessage('SALE_DH_PECOM_AS_PAYER_SHOP'),
336 self::$PAYER_BUYER => GetMessage('SALE_DH_PECOM_AS_PAYER_BUYER')
337 )
338 ),
339
340 "SERVICE_OTHER_RIGID_PACKING" => array(
341 'TYPE' => 'CHECKBOX',
342 'TITLE' => GetMessage('SALE_DH_PECOM_AS_OTHER_RIGID_PACKING'),
343 'GROUP' => 'add_services',
344 'DEFAULT' => '',
345 'TOP_LINE' => 'Y',
346 'HIDE_BY_NAMES' => array('SERVICE_OTHER_RIGID_PAYER')
347 ),
348
349 "SERVICE_OTHER_RIGID_PAYER" => array(
350 'TYPE' => 'DROPDOWN',
351 'TITLE' => GetMessage('SALE_DH_PECOM_AS_PAYER'),
352 'GROUP' => 'add_services',
353 'DEFAULT' => self::$PAYER_BUYER,
354 "VALUES" => array(
355 self::$PAYER_SHOP => GetMessage('SALE_DH_PECOM_AS_PAYER_SHOP'),
356 self::$PAYER_BUYER => GetMessage('SALE_DH_PECOM_AS_PAYER_BUYER')
357 )
358 )
359 )
360 );
361
362 $aviableBoxes = self::getAviableBoxes();
363
364 foreach ($aviableBoxes as $boxId => $arBox)
365 {
366 CSaleDeliveryHelper::makeBoxConfig($boxId, $arBox, 'auto', $arConfig);
367 CSaleDeliveryHelper::makeBoxConfig($boxId, $arBox, 'avia', $arConfig);
368 }
369
370 return $arConfig;
371 }
372
373 public static function getSettings($strSettings)
374 {
375 return unserialize($strSettings, ['allowed_classes' => false]);
376 }
377
378 public static function setSettings($arSettings)
379 {
380 unset($arSettings["CITY"]);
381
382 foreach ($arSettings as $key => $value)
383 {
384 if ($value <> '')
385 $arSettings[$key] = $value;
386 else
387 unset($arSettings[$key]);
388 }
389
390 return serialize($arSettings);
391 }
392
393 public static function getFeatures($arConfig)
394 {
395 $arResult = array();
396
397 $mesEnabled = GetMessage("SALE_DH_PECOM_FEATURE_ENABLED");
398
399 if($arConfig["SERVICE_TAKE_ENABLED"]["VALUE"] == "Y")
400 $arResult[GetMessage("SALE_DH_PECOM_AS_TAKE_ENABLE")] = $mesEnabled;
401
402 if($arConfig["SERVICE_TAKE_TENT_ENABLED"]["VALUE"] == "Y")
403 $arResult[GetMessage("SALE_DH_PECOM_AS_TAKE_TENT")] = $mesEnabled;
404
405 if($arConfig["SERVICE_TAKE_HYDRO_ENABLED"]["VALUE"] == "Y")
406 $arResult[GetMessage("SALE_DH_PECOM_AS_TAKE_HYDRO")] = $mesEnabled;
407
408 if($arConfig["SERVICE_DELIVERY_ENABLED"]["VALUE"] == "Y")
409 $arResult[GetMessage("SALE_DH_PECOM_AS_DELIVERY_ENABLE")] = $mesEnabled;
410
411 if($arConfig["SERVICE_DELIVERY_TENT_ENABLED"]["VALUE"] == "Y")
412 $arResult[GetMessage("SALE_DH_PECOM_AS_DELIVERY_TENT")] = $mesEnabled;
413
414 if($arConfig["SERVICE_DELIVERY_HYDRO_ENABLED"]["VALUE"] == "Y")
415 $arResult[GetMessage("SALE_DH_PECOM_AS_DELIVERY_HYDRO")] = $mesEnabled;
416
417 if($arConfig["SERVICE_OTHER_DELIVERY_PAYER"]["VALUE"] == self::$PAYER_SHOP)
418 $arResult[GetMessage("SALE_DH_PECOM_AS_PAYER")] = GetMessage('SALE_DH_PECOM_AS_PAYER_SHOP');
419 else
420 $arResult[GetMessage("SALE_DH_PECOM_AS_PAYER")] = GetMessage('SALE_DH_PECOM_AS_PAYER_BUYER');
421
422 if($arConfig["SERVICE_OTHER_PLOMBIR_ENABLE"]["VALUE"] == "Y")
423 $arResult[GetMessage("SALE_DH_PECOM_AS_OTHER_PLOMBIR_ENABLE")] = $mesEnabled;
424
425 if($arConfig["SERVICE_OTHER_PALLETE"]["VALUE"] == "Y")
426 $arResult[GetMessage("SALE_DH_PECOM_AS_OTHER_PALLETE")] = $mesEnabled;
427
428 if($arConfig["SERVICE_OTHER_INSURANCE"]["VALUE"] == "Y")
429 $arResult[GetMessage("SALE_DH_PECOM_AS_OTHER_INSURANCE")] = $mesEnabled;
430
431 if($arConfig["SERVICE_OTHER_RIGID_PACKING"]["VALUE"] == "Y")
432 $arResult[GetMessage("SALE_DH_PECOM_AS_OTHER_RIGID_PACKING")] = $mesEnabled;
433
434 return $arResult;
435 }
436
437 public static function calculate($profile, $arConfig, $arOrder, $STEP, $TEMP = false)
438 {
439 $ttl = 604800; //week
440 $cacheId = "SaleDeliveryPecomCalc_".$profile."_".md5(serialize($arConfig))."_".md5(serialize($arOrder));
441 $cacheManager = \Bitrix\Main\Application::getInstance()->getManagedCache();
442
443 if($cacheManager->read($ttl, $cacheId))
444 {
445 $result = $cacheManager->get($cacheId);
446 }
447 else
448 {
449 $calc = new Calculator($arOrder, $arConfig, $profile);
450 $result = $calc->getPriceInfo();
451 $cacheManager->set($cacheId, $result);
452 }
453
454 return $result;
455 }
456
457 public static function compability($arOrder, $arConfig)
458 {
459 $ttl = 604800;
460 $cacheId = "SaleDeliveryPecomCompability".$arConfig["CITY_DELIVERY"]["VALUE"].$arOrder["LOCATION_TO"];
461 $arResult = array();
462
463 $cacheManager = \Bitrix\Main\Application::getInstance()->getManagedCache();
464
465 if($cacheManager->read($ttl, $cacheId))
466 {
467 $arResult = $cacheManager->get($cacheId);
468 }
469
470 if(empty($arResult))
471 {
472 $calc = new Calculator($arOrder, $arConfig);
473 $arResult =$calc->getCompabilityInfo();
474 $cacheManager->set($cacheId, $arResult);
475 }
476
477 return $arResult;
478 }
479
480 public static function getConfValue(&$arConfig, $key)
481 {
482 return CSaleDeliveryHelper::getConfValue($arConfig[$key]);
483 }
484
485 public static function isConfCheckedVal(&$arConfig, $key)
486 {
487 return $arConfig[$key]['VALUE'] == 'Y'
488 ||(
489 !isset($arConfig[$key]['VALUE'])
490 && $arConfig[$key]['DEFAULT'] == 'Y'
491 );
492 }
493
494 public static function getActionsList()
495 {
497
498 return array(
499 "REQUEST_SELF" => $actions["REQUEST_SELF"],
500 //"REQUEST_TAKE" => $actions["REQUEST_TAKE"]
501 );
502 }
503
504 protected static function sendRequest($apiLogin, $apiKey, $controller, $action, $data)
505 {
506 $pcr = new Request($apiLogin, $apiKey);
507
508 try
509 {
510 $requestResult = $pcr->send($controller, $action, $data);
511
512 if(isset($requestResult["error"]))
513 {
514 $result = array(
515 "RESULT" => "ERROR",
516 "TEXT" => $requestResult["error"]["title"].": ".$requestResult["error"]["message"],
517 "DATA" => $requestResult
518 );
519 }
520 else
521 {
522 $result = array(
523 "RESULT" => "OK",
524 "DATA" => $requestResult
525 );
526 }
527 }
528 catch(\Exception $e)
529 {
530 $result = array(
531 "RESULT" => "ERROR",
532 "TEXT" => $e->getMessage()
533 );
534 }
535
536 return $result;
537 }
538
539 protected static function getPhoneEmail($orderId)
540 {
541 $result = array(
542 "EMAIL" => "",
543 "PHONE" => ""
544 );
545
547
548 while ($arOrderProps = $dbOrderProps->Fetch())
549 {
550 if($arOrderProps["CODE"] == "EMAIL")
551 $result["EMAIL"] = $arOrderProps["VALUE"];
552
553 if($arOrderProps["CODE"] == "PHONE")
554 $result["PHONE"] = $arOrderProps["VALUE"];
555 }
556
557 return $result;
558 }
559
560 public static function executeAction($actionId, $profileId, $arOrder, $arConfig)
561 {
562 $reqResult = array();
563 $result = array();
564
565 switch($actionId)
566 {
567 case "REQUEST_SELF":
568 $controller = 'preregistration';
569 $action = 'submit';
570 $data = Adapter::preparePreregistrationReqData($arOrder, $profileId, $arConfig);
571 $reqResult = static::sendRequest($arConfig["LOGIN"]["VALUE"], $arConfig["KEY"]["VALUE"], $controller, $action, $data);
572
573 if( isset($reqResult["DATA"]["cargos"][0]["cargoCode"]))
574 {
575 $result["TRACKING_NUMBER"] = $reqResult["DATA"]["cargos"][0]["cargoCode"];
576
577 if(isset($reqResult["DATA"]["documentId"]))
578 $result["DELIVERY_DOC_NUM"] = $reqResult["DATA"]["documentId"];
579
580 $phoneAndEmail = static::getPhoneEmail($arOrder["ID"]);
581 $subsData = Adapter::prepareSubscribeReqData(
582 array($reqResult["DATA"]["cargos"][0]["cargoCode"]),
583 $phoneAndEmail["EMAIL"],
584 $phoneAndEmail["PHONE"]
585 );
586
587 $subsResult = static::sendRequest($arConfig["LOGIN"]["VALUE"], $arConfig["KEY"]["VALUE"], "notification", "cargosubscribe", $subsData);
588 }
589
590 break;
591
592 case "REQUEST_STATUS":
593 $controller = 'cargos';
594 $action = 'status';
595 $data = array(
596 'cargoCodes' => array(
597 $arOrder['TRACKING_NUMBER']
598 )
599 );
600 $reqResult = static::sendRequest($arConfig["LOGIN"]["VALUE"], $arConfig["KEY"]["VALUE"], $controller, $action, $data);
601 break;
602
603 case "REQUEST_TAKE":
604 $reqResult = array(
605 "RESULT" => "ERROR",
606 "TEXT" => ""
607 );
608 break;
609 }
610
611 $result["RESULT"] = $reqResult["RESULT"];
612
613 if(isset($reqResult["TEXT"]))
614 $result["TEXT"] = $reqResult["TEXT"];
615
616 if(isset($reqResult["DATA"]))
617 $result["DATA"] = $reqResult["DATA"];
618
619 return $result;
620 }
621
622 protected static function getAviableBoxes()
623 {
624 return array(
625 array(
626 "NAME" => GetMessage("SALE_DH_RP_STNDRD_BOX"),
627 "DIMENSIONS" => array("425", "265", "380")
628 )
629 );
630 }
631
632 public static function getAdminMessage()
633 {
634 $result = array();
635 $message = '';
636
637 if(!Location::isInstalled())
638 {
639 $message =
640 GetMessage('SALE_DH_PECOM_LOC_INSTALL').
641 '. <a href="javascript:void(0)" onclick="startInstallPecomLocations()"> '.
642 GetMessage('SALE_DH_PECOM_LOC_INSTALL_START').
643 '</a>
644 <script>
645 function startInstallPecomLocations()
646 {
647 window.location.href.search(\'PECOM_LOCATIONS_START_MAP\') != -1 ? window.location.reload(true) : window.location.href += \'&PECOM_LOCATIONS_START_MAP=Y\';
648 }
649 </script>';
650 }
651
652 if(isset($_SESSION['PECOM_LOCATIONS_MAP_ERRORS']) && is_array($_SESSION['PECOM_LOCATIONS_MAP_ERRORS']))
653 {
655 foreach($_SESSION['PECOM_LOCATIONS_MAP_ERRORS'] as $error)
656 $message .= $error->getMessage()."\n<br>";
657
658 unset($_SESSION['PECOM_LOCATIONS_MAP_ERRORS']);
659 }
660
661 if($message <> '')
662 {
663 $result = array(
664 'MESSAGE' => $message,
665 "TYPE" => "ERROR",
666 "HTML" => true
667 );
668 }
669
670 return $result;
671 }
672
673 public static function execAdminAction()
674 {
675 $result = new \Bitrix\Sale\Result();
676
677 if(isset($_REQUEST['PECOM_LOCATIONS_START_MAP']) && $_REQUEST['PECOM_LOCATIONS_START_MAP'] == 'Y' && !Location::isInstalled())
678 $result = Location::install();
679
680 if(!$result->isSuccess())
681 $_SESSION['PECOM_LOCATIONS_MAP_ERRORS'] = $result->getErrors();
682
683 return $result;
684 }
685
686 public static function getAdditionalInfoShipmentEdit(Shipment $shipment)
687 {
688 $shipmentId = $shipment->getId();
689
690 if(intval($shipmentId) <= 0)
691 return array();
692
693 if(self::isRequestSelfSent($shipmentId))
694 {
695 $date = self::getRequestSelfSentDate($shipmentId);
696
697 $inputs = array(
698 'REQUEST_SELF' => array(
699 'LABEL' => GetMessage('SALE_DH_PECOM_PRELIMINARY_REQUEST'),
700 'TYPE' => 'DELIVERY_READ_ONLY',
701 'VALUE' => GetMessage('SALE_DH_PECOM_PRELIMINARY_REQUEST_SENT').' '.$date.'.'
702 )
703 );
704 }
705 else
706 {
707 $inputs = array(
708 'REQUEST_SELF' => array(
709 'LABEL' => GetMessage('SALE_DH_PECOM_PRELIMINARY_SEND_REQUEST'),
710 'TYPE' => 'Y/N',
711 'VALUE' => 'N'
712 )
713 );
714 }
715
716 return $inputs;
717 }
718
719 public static function getAdditionalInfoShipmentView(Shipment $shipment)
720 {
721 $shipmentId = $shipment->getId();
722
723 if(intval($shipmentId) <= 0)
724 return array();
725
726 if(self::isRequestSelfSent($shipmentId))
727 $value = GetMessage('SALE_DH_PECOM_PRELIMINARY_REQUEST_SENT').' '.self::getRequestSelfSentDate($shipmentId);
728 else
729 $value = GetMessage('SALE_DH_PECOM_PRELIMINARY_REQUEST_NOT_SENT');
730
731 $inputs = array(
732 'REQUEST_SELF' => array(
733 'LABEL' => GetMessage('SALE_DH_PECOM_PRELIMINARY_REQUEST'),
734 'TYPE' => 'DELIVERY_READ_ONLY',
735 'VALUE' => $value
736 )
737 );
738
739 return $inputs;
740 }
741
742 protected static function isRequestSelfSent($shipmentId)
743 {
744 return self::getRequestSelfSentDate($shipmentId) !== null;
745 }
746
747 protected static function getRequestSelfSentDate($shipmentId)
748 {
749 static $result = array();
750
751 if(!isset($result[$shipmentId]))
752 {
753 $result[$shipmentId] = null;
754
755 $dbRes = \Bitrix\Sale\Internals\OrderDeliveryReqTable::getList(array(
756 'filter'=>array('=SHIPMENT_ID' => $shipmentId),
757 ));
758
759 while($req = $dbRes->fetch())
760 {
761 if(!is_null($req["DATE_REQUEST"]) && !empty($req["PARAMS"]["TYPE"]) && $req["PARAMS"]["TYPE"] == "REQUEST_SELF")
762 {
763 $result[$shipmentId] = $req["DATE_REQUEST"];
764 break;
765 }
766 }
767 }
768
769 return $result[$shipmentId];
770 }
771
772 public static function processAdditionalInfoShipmentEdit(Shipment $shipment, array $requestData)
773 {
774 if(empty($requestData['REQUEST_SELF']) || $requestData['REQUEST_SELF'] != 'Y')
775 return null;
776
777 $shipmentId = $shipment->getId();
778
779 if(intval($shipmentId) <= 0)
780 return null;
781
782 $dt = new \Bitrix\Main\Type\DateTime();
783
786 $shipment->getDeliveryId()
787 ),
788 'REQUEST_SELF',
789 \CAllSaleDelivery::convertOrderNewToOld(
790 $shipment
791 )
792 );
793
794 if(!$arResult)
795 return null;
796
797 $res = \Bitrix\Sale\Internals\OrderDeliveryReqTable::add(
798 array(
799 "SHIPMENT_ID" => $shipmentId,
800 "ORDER_ID" => $shipment->getCollection()->getOrder()->getId(),
801 "DATE_REQUEST" => $dt,
802 "PARAMS" => array(
803 "TYPE" => "REQUEST_SELF",
804 "RESULT" => $arResult
805 )
806 )
807 );
808
809 if(!$res->isSuccess())
810 return null;
811
812 if(isset($arResult["TRACKING_NUMBER"]))
813 $shipment->setField("TRACKING_NUMBER", $arResult["TRACKING_NUMBER"]);
814
815 if(isset($arResult["DELIVERY_DOC_NUM"]))
816 {
817 $shipment->setField("DELIVERY_DOC_NUM", $arResult["DELIVERY_DOC_NUM"]);
818 $shipment->setField("DELIVERY_DOC_DATE", $dt);
819 }
820
821 return $shipment;
822 }
823}
824
825AddEventHandler('sale', 'onSaleDeliveryHandlersBuildList', array('CDeliveryPecom', 'Init'));
826?>
$arResult
Определения generate_coupon.php:16
static getInstance()
Определения application.php:98
setField($name, $value)
Определения shipment.php:792
getDeliveryId()
Определения shipment.php:1315
static getActionsNames()
Определения delivery_handler.php:1491
static executeAction($deliveryId, $actionId, $arOrder)
Определения delivery_handler.php:494
static getCodeById($id)
Определения delivery.php:1655
static GetOrderProps($ORDER_ID)
Определения order_props_values.php:149
static getRequestSelfSentDate($shipmentId)
Определения delivery_pecom.php:747
static getActionsList()
Определения delivery_pecom.php:494
static $PAYER_SHOP
Определения delivery_pecom.php:36
static executeAction($actionId, $profileId, $arOrder, $arConfig)
Определения delivery_pecom.php:560
static getAdditionalInfoShipmentEdit(Shipment $shipment)
Определения delivery_pecom.php:686
static execAdminAction()
Определения delivery_pecom.php:673
static getSettings($strSettings)
Определения delivery_pecom.php:373
static getConfig($siteId=false)
Определения delivery_pecom.php:113
static getFeatures($arConfig)
Определения delivery_pecom.php:393
static getAviableBoxes()
Определения delivery_pecom.php:622
static getExtraInfoParams($arOrder, $arConfig, $profileId, $siteId)
Определения delivery_pecom.php:88
static sendRequest($apiLogin, $apiKey, $controller, $action, $data)
Определения delivery_pecom.php:504
static isRequestSelfSent($shipmentId)
Определения delivery_pecom.php:742
static $EXTRA_DEMENSIONS_WEIGHT
Определения delivery_pecom.php:33
static getAdditionalInfoShipmentView(Shipment $shipment)
Определения delivery_pecom.php:719
static $PAYER_BUYER
Определения delivery_pecom.php:37
static Init()
Определения delivery_pecom.php:39
static compability($arOrder, $arConfig)
Определения delivery_pecom.php:457
static processAdditionalInfoShipmentEdit(Shipment $shipment, array $requestData)
Определения delivery_pecom.php:772
static getConfValue(&$arConfig, $key)
Определения delivery_pecom.php:480
static $EXTRA_DIMENSIONS_SIZE
Определения delivery_pecom.php:34
static setSettings($arSettings)
Определения delivery_pecom.php:378
static calculate($profile, $arConfig, $arOrder, $STEP, $TEMP=false)
Определения delivery_pecom.php:437
static isConfCheckedVal(&$arConfig, $key)
Определения delivery_pecom.php:485
static getPhoneEmail($orderId)
Определения delivery_pecom.php:539
static makeBoxConfig($boxId, $arBox, $group, &$arConfig)
Определения delivery_helper.php:390
static getConfValue($arField)
Определения delivery_helper.php:148
static getLocationByIdHitCached($id)
Определения helper.php:462
static getShopLocationId($siteId)
Определения helper.php:334
$data['IS_AVAILABLE']
Определения .description.php:13
$orderId
Определения payment.php:5
</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
$_REQUEST["admin_mnu_menu_id"]
Определения get_menu.php:8
$result
Определения get_property_values.php:14
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
$STEP
Определения csv_new_setup.php:23
$siteId
Определения ajax.php:8
AddEventHandler($FROM_MODULE_ID, $MESSAGE_ID, $CALLBACK, $SORT=100, $FULL_PATH=false)
Определения tools.php:5165
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$message
Определения payment.php:8
if(empty($signedUserToken)) $key
Определения quickway.php:257
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
$error
Определения subscription_card_product.php:20
$action
Определения file_dialog.php:21
$dbRes
Определения yandex_detail.php:168