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/lpost.delivery/lib/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/lpost.delivery/lib/calculate.php
<?

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;
    }

}

?>

Youez - 2016 - github.com/yon3zu
LinuXploit