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/cvetdv.ru/bitrix/modules/sale/ru/delivery/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/sale/ru/delivery/delivery_kaz_post.php
<?
/********************************************************************************
Delivery services for Kazakhstan's Post Service (http://www.kazpost.kz/)
http://www.kazpost.kz/downloads/urlic/%D0%A2%D0%B0%D1%80%D0%B8%D1%84%D1%8B%20%D0%BD%D0%B0%20%D1%83%D1%81%D0%BB%D1%83%D0%B3%D1%83%20%D0%9F%D0%B5%D1%80%D0%B5%D1%81%D1%8B%D0%BB%D0%BA%D0%B0%20%D0%BF%D0%BE%D1%81%D1%8B%D0%BB%D0%BE%D0%BA%20%D0%B2%20%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B0%D1%85%20%D0%A0%D0%9A%20%D0%B4%D0%BB%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D1%85%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D0%BD%D0%B8%D0%B9%20%D0%B8%20%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82%20%D0%BC%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%D0%BE%D0%B2.xlsx
********************************************************************************/
CModule::IncludeModule('sale');

IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"].'/bitrix/modules/sale/delivery/delivery_kaz_post.php');

class CDeliveryKazPost
{
	private static $MAX_WEIGHT = 10000;	// (g)
	private static $MAX_DIMENSIONS = array("800", "800", "500"); //milimeters

	private static $BASE_WEIGHT = 1000;	// Base weight gramm

	private static $TARIFS = array();
	private static $TARIF_IDX = 0;
	private static $TARIF_DEFAULT = 1;
	private static $TARIF_DESCR = 2;

	public static function Init()
	{
		self::$TARIFS = array(
							"BASE" => array(
								'WEIGHT_LESS_1000' => array(1, 550, GetMessage('SALE_DH_KP_LESS_1')),
								'WEIGHT_MORE_1000' => array(2, 50, GetMessage('SALE_DH_KP_MORE_1'))
								),

							"CAPITAL" => array(
								'WEIGHT_LESS_1000' => array(3, 450, GetMessage('SALE_DH_KP_LESS_1')),
								'WEIGHT_MORE_1000' => array(4, 50, GetMessage('SALE_DH_KP_MORE_1')),
								)
			);

		return array(
			/* Basic description */
			'SID' => 'kaz_post',
			'NAME' => GetMessage('SALE_DH_KP_NAME'),
			'DESCRIPTION' => GetMessage('SALE_DH_KP_DESCR').' <a href="http://www.kazpost.kz">http://www.kazpost.kz</a>',
			'DESCRIPTION_INNER' => GetMessage('SALE_DH_KP_DESCR').' <a href="http://www.kazpost.kz">http://www.kazpost.kz</a>',
			'BASE_CURRENCY' => 'KZT',
			'HANDLER' => __FILE__,
			/* Handler methods */
			'DBGETSETTINGS' => array('CDeliveryKazPost', 'GetSettings'),
			'DBSETSETTINGS' => array('CDeliveryKazPost', 'SetSettings'),
			'GETCONFIG' => array('CDeliveryKazPost', 'GetConfig'),
			'COMPABILITY' => array('CDeliveryKazPost', 'Compability'),
			'CALCULATOR' => array('CDeliveryKazPost', 'Calculate'),

			/* List of delivery profiles */
			'PROFILES' => array(
				'distant_inner' => array(
					'TITLE' => GetMessage('SALE_DH_KP_DI_TITLE'),
					'DESCRIPTION' => GetMessage('SALE_DH_KP_DI_DESCR'),
					'RESTRICTIONS_WEIGHT' => array(0, self::$MAX_WEIGHT),
					'RESTRICTIONS_SUM' => array(0),
					'TAX_RATE' => 0,
					'RESTRICTIONS_MAX_SIZE' => 0,
					'RESTRICTIONS_DIMENSIONS_SUM' => 0,
					'RESTRICTIONS_DIMENSIONS' => self::$MAX_DIMENSIONS
					)
			)
		);
	}

	public static function GetConfig()
	{
		$arConfig = array(
			'CONFIG_GROUPS' => array(
				'distant_inner' => GetMessage('SALE_DH_KP_DI_TITLE'),
			),
		);

		$aviableBoxes = self::getAviableBoxes();

		foreach ($aviableBoxes as $boxId => $arBox)
			CSaleDeliveryHelper::makeBoxConfig($boxId, $arBox, 'distant_inner', $arConfig);

		$arConfig['CONFIG']['tarif_section_1'] = array(
					'TYPE' => 'SECTION',
					'TITLE' => GetMessage('SALE_DH_KP_TARIF_TITLE'),
					'GROUP' => 'distant_inner',
		);

		foreach (self::$TARIFS["BASE"] as $arTarif)
		{
			$tarifId = $arTarif[self::$TARIF_IDX];
			$arConfig['CONFIG']['TARIF_'.$tarifId] = array(
						'TYPE' => 'STRING',
						'DEFAULT' => $arTarif[self::$TARIF_DEFAULT],
						'TITLE' => $arTarif[self::$TARIF_DESCR],
						'GROUP' => 'distant_inner',
			);
		}

		$arConfig['CONFIG']['tarif_section_2'] = array(
					'TYPE' => 'SECTION',
					'TITLE' => GetMessage('SALE_DH_KP_TARIF_IREG'),
					'GROUP' => 'distant_inner',
		);

		foreach (self::$TARIFS["CAPITAL"] as $arTarif)
		{
			$tarifId = $arTarif[self::$TARIF_IDX];
			$arConfig['CONFIG']['TARIF_'.$tarifId] = array(
						'TYPE' => 'STRING',
						'DEFAULT' => $arTarif[self::$TARIF_DEFAULT],
						'TITLE' => $arTarif[self::$TARIF_DESCR],
						'GROUP' => 'distant_inner',
			);
		}

		return $arConfig;
	}

	public static function GetSettings($strSettings)
	{
		return unserialize($strSettings, ['allowed_classes' => false]);
	}

	public static function SetSettings($arSettings)
	{
		foreach ($arSettings as $key => $value)
		{
			if ($value <> '')
				$arSettings[$key] = $value;
			else
				unset($arSettings[$key]);
		}

		return serialize($arSettings);
	}

	public static function Calculate($profile, $arConfig, $arOrder, $STEP, $TEMP = false)
	{
		$arPacks = CSaleDeliveryHelper::getBoxesFromConfig($profile, $arConfig);

		$arPackagesParams = CSaleDeliveryHelper::getRequiredPacks(
			$arOrder["ITEMS"],
			$arPacks,
			self::$MAX_WEIGHT
		);

		$packageCount = count($arPackagesParams);

		if ($packageCount <= 0)
		{
			return [
				"RESULT" => "ERROR",
				"TEXT" => GetMessage("SALE_DH_KP_OVERLOAD"),
			];
		}

		$totalPrice = 0;

		$shopLocationId = CSaleHelper::getShopLocationId(SITE_ID);
		$arShopLocation = CSaleHelper::getLocationByIdHitCached($shopLocationId);
		$arLocationTo = CSaleHelper::getLocationByIdHitCached($arOrder['LOCATION_TO']);

		foreach ($arPackagesParams as $arPackage)
		{
			$totalPrice += self::calculatePackPrice(
				$arPackage,
				$profile,
				$arConfig,
				$arShopLocation['REGION_ID'] ?? 0,
				$arLocationTo['REGION_ID'] ?? 0
			);
		}

		return [
			'RESULT' => 'OK',
			'VALUE' => $totalPrice,
			'PACKS_COUNT' => $packageCount,
		];
	}

	public static function Compability($arOrder, $arConfig)
	{
		$result = array();

		$aviableBoxes = CSaleDeliveryHelper::getBoxesFromConfig('distant_inner', $arConfig);

		foreach ($aviableBoxes as $arBox)
		{
			if (CSaleDeliveryHandler::checkDimensions($arOrder["MAX_DIMENSIONS"], $arBox["DIMENSIONS"]))
			{
				$result = array('distant_inner');
				break;
			}
		}

		return $result;
	}

	private static function getConfValue(&$arConfig, $key)
	{
		return CSaleDeliveryHelper::getConfValue($arConfig[$key]);
	}

	private static function getAviableBoxes()
	{
		return array(
					array(
						"NAME" => GetMessage("SALE_DH_KP_STNDRD_BOX"),
						"DIMENSIONS" => array("800", "800", "500")
						)
			);
	}

	private static function calculatePackPrice($arPackage, $profile, $arConfig, $regionIdFrom, $regionIdTo)
	{
		$arDebug = array();
		$basePrice = $totalPrice = 0;

		if($regionIdFrom == $regionIdTo)
			$tarifGroup = 'CAPITAL';
		else
			$tarifGroup = 'BASE';

		$basePrice = floatval(self::getConfValue($arConfig, 'TARIF_'.self::$TARIFS[$tarifGroup]['WEIGHT_LESS_1000'][self::$TARIF_IDX]));
		$arDebug[] = 'Base Price less 1000 g: '.$basePrice;

		if($arPackage['WEIGHT'] > self::$BASE_WEIGHT)
		{
			$addWeight = ceil(($arPackage['WEIGHT'] - self::$BASE_WEIGHT)/500);
			$addPrice = floatval(self::getConfValue($arConfig, 'TARIF_'.self::$TARIFS[$tarifGroup]['WEIGHT_MORE_1000'][self::$TARIF_IDX]));
			$arDebug[] = 'Price for additional weight more than 1000 g: '.$addWeight * $addPrice;
			$basePrice += $addWeight * $addPrice;
		}

		$totalPrice = $basePrice;
		$arDebug[] = 'Total value: '.$totalPrice;
		return $totalPrice;
	}
}

AddEventHandler('sale', 'onSaleDeliveryHandlersBuildList', array('CDeliveryKazPost', 'Init'));

?>

Youez - 2016 - github.com/yon3zu
LinuXploit