diff --git a/vendor/magento/module-sales/Ui/Component/Listing/Column/Price.php b/vendor/magento/module-sales/Ui/Component/Listing/Column/Price.php index 8780ce10375..b84b5af33d1 100644 --- a/vendor/magento/module-sales/Ui/Component/Listing/Column/Price.php +++ b/vendor/magento/module-sales/Ui/Component/Listing/Column/Price.php @@ -7,14 +7,19 @@ declare(strict_types=1); namespace Magento\Sales\Ui\Component\Listing\Column; +use Magento\Framework\App\ObjectManager; use Magento\Framework\View\Element\UiComponent\ContextInterface; use Magento\Framework\View\Element\UiComponentFactory; +use Magento\Store\Model\Store; +use Magento\Store\Model\StoreManagerInterface; use Magento\Ui\Component\Listing\Columns\Column; use Magento\Framework\Pricing\PriceCurrencyInterface; use Magento\Directory\Model\Currency; /** * Class Price + * + * UiComponent class for Price format column */ class Price extends Column { @@ -28,6 +33,11 @@ class Price extends Column */ private $currency; + /** + * @var StoreManagerInterface|null + */ + private $storeManager; + /** * Constructor * @@ -37,6 +47,7 @@ class Price extends Column * @param array $components * @param array $data * @param Currency $currency + * @param StoreManagerInterface|null $storeManager */ public function __construct( ContextInterface $context, @@ -44,11 +55,14 @@ class Price extends Column PriceCurrencyInterface $priceFormatter, array $components = [], array $data = [], - Currency $currency = null + Currency $currency = null, + StoreManagerInterface $storeManager = null ) { $this->priceFormatter = $priceFormatter; - $this->currency = $currency ?: \Magento\Framework\App\ObjectManager::getInstance() - ->create(Currency::class); + $this->currency = $currency ?: ObjectManager::getInstance() + ->get(Currency::class); + $this->storeManager = $storeManager ?: ObjectManager::getInstance() + ->get(StoreManagerInterface::class); parent::__construct($context, $uiComponentFactory, $components, $data); } @@ -63,6 +77,14 @@ class Price extends Column if (isset($dataSource['data']['items'])) { foreach ($dataSource['data']['items'] as & $item) { $currencyCode = isset($item['base_currency_code']) ? $item['base_currency_code'] : null; + if (!$currencyCode) { + $storeId = isset($item['store_id']) && (int)$item['store_id'] !== 0 ? $item['store_id'] : + $this->context->getFilterParam('store_id', Store::DEFAULT_STORE_ID); + $store = $this->storeManager->getStore( + $storeId + ); + $currencyCode = $store->getBaseCurrency()->getCurrencyCode(); + } $basePurchaseCurrency = $this->currency->load($currencyCode); $item[$this->getData('name')] = $basePurchaseCurrency ->format($item[$this->getData('name')], [], false);