![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-directory/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Directory\Model; use Magento\Framework\App\ScopeInterface; use Magento\Store\Model\StoreManagerInterface; use Psr\Log\LoggerInterface as Logger; use Magento\Store\Model\Store; /** * Class PriceCurrency model for convert and format price value */ class PriceCurrency implements \Magento\Framework\Pricing\PriceCurrencyInterface { /** * @var \Magento\Store\Model\StoreManagerInterface */ protected $storeManager; /** * @var CurrencyFactory */ protected $currencyFactory; /** * @var Logger */ protected $logger; /** * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param CurrencyFactory $currencyFactory * @param Logger $logger */ public function __construct( StoreManagerInterface $storeManager, CurrencyFactory $currencyFactory, Logger $logger ) { $this->storeManager = $storeManager; $this->currencyFactory = $currencyFactory; $this->logger = $logger; } /** * @inheritdoc */ public function convert($amount, $scope = null, $currency = null) { $currentCurrency = $this->getCurrency($scope, $currency); return $this->getStore($scope) ->getBaseCurrency() ->convert($amount, $currentCurrency); } /** * @inheritdoc */ public function convertAndRound($amount, $scope = null, $currency = null, $precision = self::DEFAULT_PRECISION) { return $this->roundPrice($this->convert($amount, $scope, $currency), $precision); } /** * @inheritdoc */ public function format( $amount, $includeContainer = true, $precision = self::DEFAULT_PRECISION, $scope = null, $currency = null ) { return $this->getCurrency($scope, $currency) ->formatPrecision($amount, $precision, [], $includeContainer); } /** * @inheritdoc */ public function convertAndFormat( $amount, $includeContainer = true, $precision = self::DEFAULT_PRECISION, $scope = null, $currency = null ) { $amount = $this->convert($amount, $scope, $currency); return $this->format($amount, $includeContainer, $precision, $scope, $currency); } /** * @inheritdoc */ public function getCurrency($scope = null, $currency = null) { if ($currency instanceof Currency) { $currentCurrency = $currency; } elseif (is_string($currency)) { $currency = $this->currencyFactory->create() ->load($currency); $baseCurrency = $this->getStore($scope) ->getBaseCurrency(); $currentCurrency = $baseCurrency->getRate($currency) ? $currency : $baseCurrency; } else { $currentCurrency = $this->getStore($scope) ->getCurrentCurrency(); } return $currentCurrency; } /** * Get currrency symbol * * @param null|string|bool|int|\Magento\Framework\App\ScopeInterface $scope * @param \Magento\Framework\Model\AbstractModel|string|null $currency * @return string */ public function getCurrencySymbol($scope = null, $currency = null) { return $this->getCurrency($scope, $currency)->getCurrencySymbol(); } /** * Get store model * * @param null|string|bool|int|ScopeInterface $scope * @return Store */ protected function getStore($scope = null) { try { if (!$scope instanceof Store) { $scope = $this->storeManager->getStore($scope); } } catch (\Exception $e) { $this->logger->critical($e); $scope = $this->storeManager->getStore(); } return $scope; } /** * @inheritdoc */ public function round($price) { return round((float) $price, 2); } /** * Round price with precision * * @param float $price * @param int $precision * @return float */ public function roundPrice($price, $precision = self::DEFAULT_PRECISION) { return round((float) $price, $precision); } }