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/yandex.market/lib/trading/entity/sale/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/yandex.market/lib/trading/entity/sale/status.php
<?php

namespace Yandex\Market\Trading\Entity\Sale;

use Yandex\Market;
use Bitrix\Main;
use Bitrix\Sale;

class Status extends Market\Trading\Entity\Reference\Status
{
	use Market\Reference\Concerns\HasLang;

	const STATUS_CANCELED = 'CANCELED';
	const STATUS_ALLOW_DELIVERY = 'ALLOW_DELIVERY';
	const STATUS_SUBSIDY = 'SUBSIDY';
	const STATUS_PAYED = 'PAYED';
	const STATUS_DEDUCTED = 'DEDUCTED';
	
	protected $orderEnum;

	protected static function includeMessages()
	{
		Main\Localization\Loc::loadMessages(__FILE__);
	}

	public function getTitle($status, $version = '')
	{
		$orderEnum = $this->getOrderEnum();

		if (isset($orderEnum[$status]))
		{
			$result = $orderEnum[$status];
		}
		else
		{
			$result = $this->getSpecialTitle($status, $version);
		}

		return $result;
	}

	public function getEnum($variants)
	{
		$result = [];
		$orderVariants = $this->getOrderVariants();

		foreach ($variants as $variant)
		{
			if (in_array($variant, $orderVariants, true))
			{
				$statusName = '[' . $variant . '] ' . $this->getTitle($variant);
			}
			else
			{
				$statusName = $this->getTitle($variant);
			}

			$result[] = [
				'ID' => $variant,
				'VALUE' => $statusName,
			];
		}

		return $result;
	}

	public function getVariants()
	{
		$result = array_merge(
			$this->getSpecialVariants(),
			$this->getOrderVariants()
		);
		$result = array_diff($result, [
			static::STATUS_SUBSIDY,
		]);

		return $result;
	}

	public function isStandalone($status)
	{
		return in_array($status, $this->getSpecialVariants(), true);
	}

	public function getGroup($status)
	{
		return in_array($status, $this->getSpecialVariants(), true) ? $status : 'STATUS';
	}

	public function getMeaningfulMap()
	{
		$result = [
			Market\Data\Trading\MeaningfulStatus::CREATED => 'N',
			Market\Data\Trading\MeaningfulStatus::PROCESSING => 'P',
			Market\Data\Trading\MeaningfulStatus::ALLOW_DELIVERY => static::STATUS_ALLOW_DELIVERY,
			Market\Data\Trading\MeaningfulStatus::DEDUCTED => static::STATUS_DEDUCTED,
			Market\Data\Trading\MeaningfulStatus::SUBSIDY => static::STATUS_SUBSIDY,
			Market\Data\Trading\MeaningfulStatus::PAYED => static::STATUS_PAYED,
			Market\Data\Trading\MeaningfulStatus::CANCELED => static::STATUS_CANCELED,
			Market\Data\Trading\MeaningfulStatus::FINISHED => 'F',
		];

		if (Main\ModuleManager::isModuleInstalled('intaro.retailcrm'))
		{
			$result = $this->extendMeaningfulMapByRetailCrm($result);
		}

		return $result;
	}

	protected function extendMeaningfulMapByRetailCrm($map)
	{
		$cancelOption = (string)Main\Config\Option::get('intaro.retailcrm', 'cansel_order');

		if ($cancelOption === '') { return $map; }

		$cancelStatuses = Market\Utils\PhpSerializer::decode($cancelOption);

		if (!is_array($cancelStatuses)) { return $map; }

		$cancelStatuses = array_filter($cancelStatuses, static function($status) {
			return is_string($status) && trim($status) !== '';
		});

		if (empty($cancelStatuses)) { return $map; }

		$map[Market\Data\Trading\MeaningfulStatus::CANCELED] = (array)$map[Market\Data\Trading\MeaningfulStatus::CANCELED];

		array_push($map[Market\Data\Trading\MeaningfulStatus::CANCELED], ...$cancelStatuses);

		return $map;
	}

	public function getCancelReasonMeaningfulMap()
	{
		$result = [];

		if (Main\ModuleManager::isModuleInstalled('intaro.retailcrm'))
		{
			$result = $this->extendCancelReasonMeaningfulMapByRetailCrm($result);
		}

		return $result;
	}

	protected function extendCancelReasonMeaningfulMapByRetailCrm($cancelReasonMap)
	{
		$statusMapOption = (string)Main\Config\Option::get('intaro.retailcrm', 'pay_statuses_arr');

		if ($statusMapOption === '') { return $cancelReasonMap; }

		$statusMap = Market\Utils\PhpSerializer::decode($statusMapOption);

		if (!is_array($statusMap)) { return $cancelReasonMap; }

		$retailReasonMap = [
			'no-call' => Market\Data\Trading\CancelReason::USER_CHANGED_MIND,
			'already-buyed' => Market\Data\Trading\CancelReason::USER_CHANGED_MIND,
			'delyvery-did-not-suit' => Market\Data\Trading\CancelReason::SHOP_FAILED,
			'prices-did-not-suit' => Market\Data\Trading\CancelReason::SHOP_FAILED,
			'no-product' => Market\Data\Trading\CancelReason::SHOP_FAILED,
		];

		foreach ($statusMap as $status => $retailReason)
		{
			if (!isset($retailReasonMap[$retailReason])) { continue; }

			$cancelReason = $retailReasonMap[$retailReason];

			if (!isset($cancelReasonMap[$cancelReason]))
			{
				$cancelReasonMap[$cancelReason] = $status;
			}
			else
			{
				if (!is_array($cancelReasonMap[$cancelReason]))
				{
					$cancelReasonMap[$cancelReason] = (array)$cancelReasonMap[$cancelReason];
				}

				$cancelReasonMap[$cancelReason][] = $status;
			}
		}

		return $cancelReasonMap;
	}

	protected function getSpecialVariants()
	{
		return [
			static::STATUS_ALLOW_DELIVERY,
			static::STATUS_DEDUCTED,
			static::STATUS_SUBSIDY,
			static::STATUS_PAYED,
			static::STATUS_CANCELED,
		];
	}

	protected function getSpecialTitle($status, $version = '')
	{
		$statusKey = Market\Data\TextString::toUpper($status);
		$versionSuffix = ($version !== '' ? '_' . $version : '');

		return static::getLang('TRADING_ENTITY_SALE_STATUS_' . $statusKey . $versionSuffix);
	}
	
	protected function getOrderVariants()
	{
		$enum = $this->getOrderEnum();

		return array_keys($enum);
	}
	
	protected function getOrderEnum()
	{
		if ($this->orderEnum === null)
		{
			$this->orderEnum = $this->loadOrderEnum();
		}
		
		return $this->orderEnum;
	}
	
	protected function loadOrderEnum()
	{
		$result = [];
		$query = Sale\Internals\StatusTable::getList([
			'order' => [ 'SORT' => 'asc' ],
			'filter' => [ '=TYPE' => 'O', '=YAMARKET_STATUS_LANG.LID' => LANGUAGE_ID ],
			'select' => [ 'ID', 'YAMARKET_NAME' => 'YAMARKET_STATUS_LANG.NAME' ],
			'runtime' => [
				new Main\Entity\ReferenceField(
					'YAMARKET_STATUS_LANG',
					Sale\Internals\StatusLangTable::class,
					[ '=this.ID' => 'ref.STATUS_ID' ]
				)
			]
		]);

		while ($row = $query->Fetch())
		{
			$result[$row['ID']] = $row['YAMARKET_NAME'];
		}

		return $result;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit