%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 3.135.192.185
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sale/lib/discount/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sale/lib/discount/cumulativecalculator.php
<?php

namespace Bitrix\Sale\Discount;

use Bitrix\Main;
use Bitrix\Main\Loader;

final class CumulativeCalculator
{
	const TYPE_ORDER_ARCHIVED     = 2;
	const TYPE_ORDER_NON_ARCHIVED = 3;

	const TYPE_COUNT_PERIOD_ALL_TIME = 'all_time';
	const TYPE_COUNT_PERIOD_INTERVAL = 'interval';
	const TYPE_COUNT_PERIOD_RELATIVE = 'relative';

	private $userId;
	private $siteId;
	private $sumConfiguration = array();

	public function __construct($userId, $siteId)
	{
		$this->userId = $userId;
		$this->siteId = $siteId;
	}

	public function setSumConfiguration(array $sumConfiguration)
	{
		$this->sumConfiguration = $sumConfiguration;

		return $this;
	}

	public function calculate()
	{
		if (!Loader::includeModule('currency'))
		{
			return 0;
		}

		if(empty($this->userId))
		{
			return 0;
		}

		$filter = $this->createFilterBySumConfiguration($this->sumConfiguration);
		$orderUserId = $this->userId;
		$filter = array_merge(array(
			'USER_ID' => $orderUserId,
			'=LID' => $this->siteId,
			'=PAYED' => 'Y',
			'=CANCELED' => 'N',
		), $filter);

		$sum = 0;
		foreach (array(self::TYPE_ORDER_NON_ARCHIVED, self::TYPE_ORDER_ARCHIVED) as $orderType)
		{
			$sum += $this->sumOrders($filter, $orderType);
		}

		return $sum;
	}

	private function createFilterBySumConfiguration($sumConfiguration)
	{
		$filter = array();
		if (empty($sumConfiguration))
		{
			return $filter;
		}

		$type = $sumConfiguration['type_sum_period'];
		$periodData = $sumConfiguration['sum_period_data'];

		if ($type === self::TYPE_COUNT_PERIOD_INTERVAL)
		{
			if (!empty($periodData['order_start']))
			{
				$filter['>=DATE_INSERT'] = Main\Type\DateTime::createFromTimestamp($periodData['order_start']);
			}
			if (!empty($periodData['order_end']))
			{
				$filter['<DATE_INSERT'] = Main\Type\DateTime::createFromTimestamp($periodData['order_end']);
			}
		}
		elseif ($type === self::TYPE_COUNT_PERIOD_RELATIVE)
		{
			$value = (int)$periodData['period_value'];
			$typeRelativePeriod = $periodData['period_type'];
			if (!in_array($typeRelativePeriod, array('D', 'M', 'Y')))
			{
				return array();
			}

			$start = new Main\Type\DateTime();
			$end = $start->add("-P{$value}{$typeRelativePeriod}");

			$filter['>=DATE_INSERT'] = $end;
		}
		elseif ($type === self::TYPE_COUNT_PERIOD_ALL_TIME)
		{
			return array();
		}

		return $filter;
	}

	private function sumOrders($filter, $orderType)
	{
		$provider = null;
		if ($orderType === self::TYPE_ORDER_ARCHIVED)
		{
			/** @var \Bitrix\Sale\Archive\Manager $provider */
			$provider = '\Bitrix\Sale\Archive\Manager';
		}
		elseif ($orderType === self::TYPE_ORDER_NON_ARCHIVED)
		{
			/** @var \Bitrix\Sale\Order $provider */
			$provider = '\Bitrix\Sale\Order';
		}

		if ($provider === null)
		{
			return false;
		}

		$orders = $provider::getList(
			array(
				'filter' => $filter,
				'select' => array('DATE_INSERT', 'PRICE', 'CURRENCY')
			)
		);

		$sum = 0;
		$currency = null;
		foreach ($orders as $orderData)
		{
			if (!$currency)
			{
				$currency = $orderData['CURRENCY'];
			}

			if ($currency !== $orderData['CURRENCY'])
			{
				$sum += \CCurrencyRates::ConvertCurrency($orderData['PRICE'], $orderData['CURRENCY'], $currency);
			}
			else
			{
				$sum += $orderData['PRICE'];
			}
		}

		return $sum;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit