3namespace Sale\Handlers\Delivery;
5use Bitrix\Main\Entity\ExpressionField;
8use Bitrix\Sale\Internals\CompanyTable;
10use \Bitrix\Sale\Shipment;
11use Bitrix\Main\EventManager;
12use Bitrix\Main\Localization\Loc;
13use Sale\Handlers\Delivery\Spsr\Location;
14use Bitrix\Sale\Delivery\CalculationResult;
16Loc::loadMessages(__FILE__);
18Loader::registerAutoLoadClasses(
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'
30class SpsrHandler
extends \Bitrix\Sale\Delivery\Services\Base
33 protected $handlerCode =
'BITRIX_SPSR';
36 protected static $canHasProfiles =
true;
38 protected static $whetherAdminExtraServicesShow =
true;
40 protected $trackingClass =
'\Sale\Handlers\Delivery\SpsrTracking';
45 public static function getClassTitle()
47 return Loc::getMessage(
"SALE_DLV_SRV_SPSR_TITLE");
53 public static function getClassDescription()
55 return Loc::getMessage(
56 "SALE_DLV_SRV_SPSR_DESCRIPTION",
58 '#A1#' =>
'<a href="http://www.spsr.ru/" target="_blank">',
70 public function calculateTariff(Shipment $shipment, $tariff)
72 return (
new CalculationResult())->addError(
new Error(
'The company no longer exists'));
78 protected function getConfigStructure()
80 $natures = array_intersect_key(
81 self::getNaturesList(),
83 self::getProfileNatures()
89 "TITLE" => Loc::getMessage(
"SALE_DLV_SRV_SPSR_MAIN_TITLE"),
90 "DESCRIPTION" => Loc::getMessage(
"SALE_DLV_SRV_SPSR_MAIN_DSCR"),
92 "CALCULATE_IMMEDIATELY" =>
array(
94 "NAME" => Loc::getMessage(
"SALE_DLV_SRV_SPSR_CALCULATE_IMMEDIATELY"),
97 "DEFAULT_WEIGHT" =>
array(
99 "NAME" => Loc::getMessage(
"SALE_DLV_SRV_SPSR_DEFAULT_WEIGHT"),
102 "AMOUNT_CHECK" =>
array(
104 "NAME" => Loc::getMessage(
"SALE_DLV_SRV_SPSR_AMOUNT_CHECK"),
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")
114 "NAME" => Loc::getMessage(
"SALE_DLV_SRV_SPSR_NATURE"),
117 "OPTIONS" => $natures
121 "NAME" => Loc::getMessage(
"SALE_DLV_SRV_SPSR_LOGIN"),
126 "NAME" => Loc::getMessage(
"SALE_DLV_SRV_SPSR_PASS"),
131 "NAME" => Loc::getMessage(
"SALE_DLV_SRV_SPSR_ICN"),
144 protected static function getNaturesList()
147 $codes =
array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24);
149 foreach($codes as
$code)
159 protected static function getProfileNatures($profileId = 0)
162 return array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24);
165 20 =>
array(1, 2, 17),
166 21 =>
array(1, 2, 17),
167 22 =>
array(1, 2, 17),
168 23 =>
array(1, 2, 17),
169 24 =>
array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24),
170 25 =>
array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24),
171 26 =>
array(1, 2, 17, 18, 19, 20, 21, 22 ),
172 27 =>
array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24),
173 28 =>
array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24),
174 35 =>
array(1, 2, 17 ),
175 36 =>
array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24)
178 return isset($natures[$profileId]) ? $natures[$profileId] :
array();
181 public function isCalculatePriceImmediately()
183 return $this->config[
'MAIN'][
'CALCULATE_IMMEDIATELY'] ==
'Y';
189 public static function onGetBusinessValueConsumers()
191 if(!self::isHoldingUsed())
198 $providerKeys =
array(
'',
'VALUE',
'COMPANY');
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),
208 'GROUP' =>
'DELIVERY',
216 public static function onGetBusinessValueGroups()
218 if(!self::isHoldingUsed())
222 'DELIVERY_SPSR_AUTH' =>
array(
'NAME' => Loc::getMessage(
'SALE_DLV_SRV_SPSR_BV_AUTH'),
'SORT' => 100),
226 private static function isHoldingUsed()
234 'filter' =>
array(
'=ACTIVE' =>
'Y'),
235 'select' =>
array(
'CNT'),
237 new ExpressionField(
'CNT',
'COUNT(*)'
241 if($row =
$dbRes->fetch())
242 if(intval($row[
'CNT']) > 1)
251 public static function getChildrenClassNames()
254 '\Sale\Handlers\Delivery\SpsrProfile'
261 public static function getCompanyName()
270 public function getSidResult($shipment =
null)
272 return (
new Result())->addError(
new Error(
'The company no longer exists'));
279 public function getICN($shipment =
null)
288 public function getServiceTypes($shipment =
null)
290 return (
new Result())->addError(
new Error(
'The company no longer exists'));
296 protected function getKnownServices()
298 return array(20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 36);
304 public function getEmbeddedExtraServicesList()
306 return self::getAlltExtraServices();
309 public static function getAlltExtraServices()
313 "NAME" => Loc::getMessage(
'SALE_DLV_SRV_SPSR_SMS'),
317 "CLASS_NAME" =>
'\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
318 "DESCRIPTION" => Loc::getMessage(
'SALE_DLV_SRV_SPSR_SMS_DESCR'),
320 "PARAMS" =>
array(
"PRICE" => 0)
323 "NAME" => Loc::getMessage(
'SALE_DLV_SRV_SPSR_SMS_RECV'),
327 "CLASS_NAME" =>
'\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
328 "DESCRIPTION" => Loc::getMessage(
'SALE_DLV_SRV_SPSR_SMS_RECV_DESCR'),
330 "PARAMS" =>
array(
"PRICE" => 0)
332 "BEFORE_SIGNAL" =>
array(
333 "NAME" => Loc::getMessage(
'SALE_DLV_SRV_SPSR_BEFORE_SIGNAL'),
337 "CLASS_NAME" =>
'\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
338 "DESCRIPTION" => Loc::getMessage(
'SALE_DLV_SRV_SPSR_BEFORE_SIGNAL_DESCR'),
340 "PARAMS" =>
array(
"PRICE" => 0)
343 "NAME" => Loc::getMessage(
'SALE_DLV_SRV_SPSR_BY_HAND'),
347 "CLASS_NAME" =>
'\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
348 "DESCRIPTION" => Loc::getMessage(
'SALE_DLV_SRV_SPSR_BY_HAND_DESCR'),
350 "PARAMS" =>
array(
"PRICE" => 0)
353 "NAME" => Loc::getMessage(
'SALE_DLV_SRV_SPSR_ICD'),
357 "CLASS_NAME" =>
'\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
358 "DESCRIPTION" => Loc::getMessage(
'SALE_DLV_SRV_SPSR_ICD_DESCR'),
360 "PARAMS" =>
array(
"PRICE" => 0)
362 "TO_BE_CALLED_FOR" =>
array(
363 "NAME" => Loc::getMessage(
'SALE_DLV_SRV_SPSR_TO_BE_CALLED_FOR'),
367 "CLASS_NAME" =>
'\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
370 "PARAMS" =>
array(
"PRICE" => 0)
372 "PLAT_TYPE" =>
array(
373 "NAME" => Loc::getMessage(
'SALE_DLV_SRV_SPSR_PLAT_TYPE'),
377 "CLASS_NAME" =>
'\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
378 "DESCRIPTION" => Loc::getMessage(
'SALE_DLV_SRV_SPSR_PLAT_TYPE_DESCR'),
380 "PARAMS" =>
array(
"PRICE" => 0)
389 public function getProfilesList($shipment =
null)
398 public function getCompatibleProfiles(Shipment $shipment)
406 public static function install()
411 'onSaleDeliveryTrackingClassNamesBuildList',
413 '\Sale\Handlers\Delivery\SpsrHandler',
414 'onSaleDeliveryTrackingClassNamesBuildList'
423 public static function unInstall()
428 'onSaleDeliveryTrackingClassNamesBuildList',
430 '\Sale\Handlers\Delivery\SpsrHandler',
431 'onSaleDeliveryTrackingClassNamesBuildList'
433 Location::unInstall();
436 public static function onSaleDeliveryTrackingClassNamesBuildList()
438 return new \Bitrix\Main\EventResult(
439 \Bitrix\Main\EventResult::SUCCESS,
441 '\Sale\Handlers\Delivery\SpsrTracking' =>
'/bitrix/modules/sale/handlers/delivery/spsr/tracking.php'
450 public static function isInstalled()
452 return Location::isInstalled();
455 public function getProfilesDefaultParams()
463 public static function canHasProfiles()
465 return self::$canHasProfiles;
471 public static function whetherAdminExtraServicesShow()
473 return self::$whetherAdminExtraServicesShow;
479 public function getAdminAdditionalTabs()
485 "bitrix:sale.location.map",
488 "EXTERNAL_LOCATION_CLASS" =>
'\Sale\Handlers\Delivery\Spsr\Location'
497 "TAB" => Loc::getMessage(
'SALE_DLVRS_ADD_LOC_TAB'),
498 "TITLE" => Loc::getMessage(
'SALE_DLVRS_ADD_LOC_TAB_TITLE'),
505 public static function isHandlerCompatible()
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code