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/lpost.delivery/lib/ |
Upload File : |
<? namespace Lpost\Delivery; use Bitrix\Sale; use Lpost\Delivery\Order\OrderManager; \CModule::IncludeModule("sale"); \CModule::IncludeModule("catalog"); /** * @deprecated */ class Calculate { use Base; private $profileId; /** * @var OrderManager */ private $orderManager; /** * @var Sale\Basket */ private $basket; function __construct($profileId) { $this->profileId = $profileId; } public function setBasket(Sale\Basket $basket) { $this->basket = $basket; } public function getInsurance($price, $profileID) { $defaultParams = $this->getDefaultParams($profileID); $defaultParams['INSURANCE'] = isset($defaultParams['INSURANCE']) ? $defaultParams['INSURANCE'] : 100; return $price * $defaultParams['INSURANCE'] / 100; } public function getDimensionBasketItemsVariantOne($basketItems, $profileID) { $dimensionsDefault = $this->getDefaultParams($profileID); $calcDimDefault = !empty($dimensionsDefault['CALC_DIMENSIONS_DEFAULT']) && $dimensionsDefault['CALC_DIMENSIONS_DEFAULT'] == 'product' ? 'product' : 'order'; // ������ ��������� �� ������� �� $dimensions = [ "Length" => 0, "Width" => 0, "Height" => 0, "Weight" => 0, ]; $totalVolume = $longestSide = 0; foreach($basketItems as $basketItem) { if(!empty($dimensionsDefault['GOODS_DIMENSIONS_FROM']) && $dimensionsDefault['GOODS_DIMENSIONS_FROM'] == 'product'){ // ����� ��������� � ������� ������ $arDimentions = $basketItem->getField('DIMENSIONS'); if (is_string($arDimentions)) { $arDimentions = unserialize($arDimentions); } if(empty($arDimentions['WIDTH']) || empty($arDimentions['HEIGHT']) || empty($arDimentions['LENGTH'])){ $product = \CCatalogProduct::GetByID($basketItem->getProductId()); $arDimentions = [ 'WIDTH' => $product['WIDTH'], 'HEIGHT' => $product['HEIGHT'], 'LENGTH' => $product['LENGTH'], ]; } if($calcDimDefault == 'product') { if(empty($arDimentions["LENGTH"])) $arDimentions["LENGTH"] = isset($dimensionsDefault['DEFAULT_LENGTH']) ? $dimensionsDefault['DEFAULT_LENGTH'] : 380; if(empty($arDimentions["WIDTH"])) $arDimentions["WIDTH"] = isset($dimensionsDefault['DEFAULT_WIDTH']) ? $dimensionsDefault['DEFAULT_WIDTH'] : 380; if(empty($arDimentions["HEIGHT"])) $arDimentions["HEIGHT"] = isset($dimensionsDefault['DEFAULT_HEIGHT']) ? $dimensionsDefault['DEFAULT_HEIGHT'] : 380; } $quantity = (float)$basketItem->getQuantity(); $dimensions["Length"] += $arDimentions['LENGTH'];// * $quantity; $dimensions["Width"] += $arDimentions['WIDTH'];// * $quantity; $dimensions["Height"] += $arDimentions['HEIGHT'];// * $quantity; $volume = $arDimentions['LENGTH'] * $arDimentions['WIDTH'] * $arDimentions['HEIGHT']; // calculate the volume of goods $totalVolume += $volume * $quantity; // calculate the total volume if($longestSide < $arDimentions['LENGTH']) $longestSide = $arDimentions['LENGTH']; if($longestSide < $arDimentions['HEIGHT']) $longestSide = $arDimentions['HEIGHT']; if($longestSide < $arDimentions['WIDTH']) $longestSide = $arDimentions['WIDTH']; } $weight = $basketItem->getWeight(); if(empty((int)$weight)) { if($calcDimDefault == 'product') { // ������ �� ������� �� ������ ������ $weight += isset($dimensionsDefault['DEFAULT_WEIGHT']) ? $dimensionsDefault['DEFAULT_WEIGHT'] : 100; $dimensions["Weight"] += $weight * $basketItem->getQuantity(); } } else{ $dimensions["Weight"] += $weight * $basketItem->getQuantity(); } } // if sides are equal if($dimensions['Length'] == $dimensions['Width'] && $dimensions['Length'] == $dimensions['Height']){ $dimensions['Length'] = $dimensions['Width'] = $dimensions['Height'] = round(pow($totalVolume , 1/3)); } else{ $dimensions['Length'] = $longestSide; // we take the largest side as the largest overall dimension $dimensions['Width'] = $dimensions['Height'] = round(sqrt($totalVolume / $longestSide)); // the remaining two sides are derived conditionally from the volume } if($calcDimDefault == 'order'){ // ������ �� ������� �� ����� ������ if(empty($dimensions["Weight"])) $dimensions["Weight"] = isset($dimensionsDefault['DEFAULT_WEIGHT']) ? $dimensionsDefault['DEFAULT_WEIGHT'] : 100; if(empty($dimensions["Length"])) $dimensions["Length"] = isset($dimensionsDefault['DEFAULT_LENGTH']) ? $dimensionsDefault['DEFAULT_LENGTH'] : 380; if(empty($dimensions["Width"])) $dimensions["Width"] = isset($dimensionsDefault['DEFAULT_WIDTH']) ? $dimensionsDefault['DEFAULT_WIDTH'] : 380; if(empty($dimensions["Height"])) $dimensions["Height"] = isset($dimensionsDefault['DEFAULT_HEIGHT']) ? $dimensionsDefault['DEFAULT_HEIGHT'] : 380; } return $dimensions; } public function getDimensionBasketItems($basketItems, $profileID) { $dimensionsDefault = $this->getDefaultParams($profileID); $calcDimDefault = !empty($dimensionsDefault['CALC_DIMENSIONS_DEFAULT']) && $dimensionsDefault['CALC_DIMENSIONS_DEFAULT'] == 'product' ? 'product' : 'order'; // ������ ��������� �� ������� �� $dimensions = [ "Length" => 0, "Width" => 0, "Height" => 0, "Weight" => 0, ]; $totalVolume = $longestLength = $longestHeight = 0; foreach($basketItems as $basketItem) { if(!empty($dimensionsDefault['GOODS_DIMENSIONS_FROM']) && $dimensionsDefault['GOODS_DIMENSIONS_FROM'] == 'product'){ // ����� ��������� � ������� ������ $arDimentions = $basketItem->getField('DIMENSIONS'); if (is_string($arDimentions)) { $arDimentions = unserialize($arDimentions); } if(empty($arDimentions['WIDTH']) || empty($arDimentions['HEIGHT']) || empty($arDimentions['LENGTH'])){ $product = \CCatalogProduct::GetByID($basketItem->getProductId()); $arDimentions = [ 'WIDTH' => $product['WIDTH'], 'HEIGHT' => $product['HEIGHT'], 'LENGTH' => $product['LENGTH'], ]; } if($calcDimDefault == 'product') { if(empty($arDimentions["LENGTH"])) $arDimentions["LENGTH"] = isset($dimensionsDefault['DEFAULT_LENGTH']) ? $dimensionsDefault['DEFAULT_LENGTH'] : 380; if(empty($arDimentions["WIDTH"])) $arDimentions["WIDTH"] = isset($dimensionsDefault['DEFAULT_WIDTH']) ? $dimensionsDefault['DEFAULT_WIDTH'] : 380; if(empty($arDimentions["HEIGHT"])) $arDimentions["HEIGHT"] = isset($dimensionsDefault['DEFAULT_HEIGHT']) ? $dimensionsDefault['DEFAULT_HEIGHT'] : 380; } $quantity = (float)$basketItem->getQuantity(); //$dimensions["Length"] += $arDimentions['LENGTH'];// * $quantity; $dimensions["Width"] += $arDimentions['WIDTH'] * $quantity; //$dimensions["Height"] += $arDimentions['HEIGHT'];// * $quantity; if($longestLength < $arDimentions['LENGTH']) $longestLength = $arDimentions['LENGTH']; if($longestHeight < $arDimentions['HEIGHT']) $longestHeight = $arDimentions['HEIGHT']; } $weight = $basketItem->getWeight(); if(empty((int)$weight)) { if($calcDimDefault == 'product') { // ������ �� ������� �� ������ ������ $weight += isset($dimensionsDefault['DEFAULT_WEIGHT']) ? $dimensionsDefault['DEFAULT_WEIGHT'] : 100; $dimensions["Weight"] += $weight * $basketItem->getQuantity(); } } else{ $dimensions["Weight"] += $weight * $basketItem->getQuantity(); } } $dimensions['Length'] = $longestLength; $dimensions['Height'] = $longestHeight; if($calcDimDefault == 'order'){ // ������ �� ������� �� ����� ������ if(empty($dimensions["Weight"])) $dimensions["Weight"] = isset($dimensionsDefault['DEFAULT_WEIGHT']) ? $dimensionsDefault['DEFAULT_WEIGHT'] : 100; if(empty($dimensions["Length"])) $dimensions["Length"] = isset($dimensionsDefault['DEFAULT_LENGTH']) ? $dimensionsDefault['DEFAULT_LENGTH'] : 380; if(empty($dimensions["Width"])) $dimensions["Width"] = isset($dimensionsDefault['DEFAULT_WIDTH']) ? $dimensionsDefault['DEFAULT_WIDTH'] : 380; if(empty($dimensions["Height"])) $dimensions["Height"] = isset($dimensionsDefault['DEFAULT_HEIGHT']) ? $dimensionsDefault['DEFAULT_HEIGHT'] : 380; } return $dimensions; } public static function getDefaultParams($profileId) { if($profile = \Bitrix\Sale\Delivery\Services\Manager::getObjectById($profileId)) { return $profile->getConfigValues()["MAIN"]; } return false; } } ?>