From 120ddcb0272e061bc04e9f52b01c417da140202f Mon Sep 17 00:00:00 2001 From: Oleksii Lisovyi Date: Thu, 28 Mar 2019 17:37:51 +0200 Subject: [PATCH 1/3] Magento Catalog - fix custom option type text price conversion for multi currency website --- .../Catalog/Model/ResourceModel/Product/Option.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Product/Option.php b/app/code/Magento/Catalog/Model/ResourceModel/Product/Option.php index 179da06b59990..1a261f693268f 100644 --- a/app/code/Magento/Catalog/Model/ResourceModel/Product/Option.php +++ b/app/code/Magento/Catalog/Model/ResourceModel/Product/Option.php @@ -6,6 +6,7 @@ namespace Magento\Catalog\Model\ResourceModel\Product; use Magento\Catalog\Api\Data\ProductInterface; +use Magento\Store\Model\ScopeInterface; /** * Catalog product custom option resource model @@ -154,21 +155,24 @@ protected function _saveValuePrices(\Magento\Framework\Model\AbstractModel $obje $scope = (int)$this->_config->getValue( \Magento\Store\Model\Store::XML_PATH_PRICE_SCOPE, - \Magento\Store\Model\ScopeInterface::SCOPE_STORE + ScopeInterface::SCOPE_STORE ); if ($object->getStoreId() != '0' && $scope == \Magento\Store\Model\Store::PRICE_SCOPE_WEBSITE) { - $baseCurrency = $this->_config->getValue( + $website = $this->_storeManager->getStore($object->getStoreId())->getWebsite(); + + $websiteBaseCurrency = $this->_config->getValue( \Magento\Directory\Model\Currency::XML_PATH_CURRENCY_BASE, - 'default' + ScopeInterface::SCOPE_WEBSITE, + $website ); - $storeIds = $this->_storeManager->getStore($object->getStoreId())->getWebsite()->getStoreIds(); + $storeIds = $website->getStoreIds(); if (is_array($storeIds)) { foreach ($storeIds as $storeId) { if ($object->getPriceType() == 'fixed') { $storeCurrency = $this->_storeManager->getStore($storeId)->getBaseCurrencyCode(); - $rate = $this->_currencyFactory->create()->load($baseCurrency)->getRate($storeCurrency); + $rate = $this->_currencyFactory->create()->load($websiteBaseCurrency)->getRate($storeCurrency); if (!$rate) { $rate = 1; } From 70281dae5314442b2c29c1e56240e36ea3e12e12 Mon Sep 17 00:00:00 2001 From: Oleksii Lisovyi Date: Thu, 11 Apr 2019 11:05:55 +0300 Subject: [PATCH 2/3] Fix line limit issue --- .../Magento/Catalog/Model/ResourceModel/Product/Option.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Product/Option.php b/app/code/Magento/Catalog/Model/ResourceModel/Product/Option.php index 1a261f693268f..7e690ef3dbfc2 100644 --- a/app/code/Magento/Catalog/Model/ResourceModel/Product/Option.php +++ b/app/code/Magento/Catalog/Model/ResourceModel/Product/Option.php @@ -172,7 +172,8 @@ protected function _saveValuePrices(\Magento\Framework\Model\AbstractModel $obje foreach ($storeIds as $storeId) { if ($object->getPriceType() == 'fixed') { $storeCurrency = $this->_storeManager->getStore($storeId)->getBaseCurrencyCode(); - $rate = $this->_currencyFactory->create()->load($websiteBaseCurrency)->getRate($storeCurrency); + $rate = $this->_currencyFactory->create()->load($websiteBaseCurrency) + ->getRate($storeCurrency); if (!$rate) { $rate = 1; } From ccecc7cda551dbc57c53e6b11e6b9ff8bc234d08 Mon Sep 17 00:00:00 2001 From: Nazarn96 Date: Fri, 10 May 2019 13:21:22 +0300 Subject: [PATCH 3/3] magento/magento2#22760 static-test-fix --- .../Magento/Catalog/Model/ResourceModel/Product/Option.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Product/Option.php b/app/code/Magento/Catalog/Model/ResourceModel/Product/Option.php index 7e690ef3dbfc2..7f211c3330bf0 100644 --- a/app/code/Magento/Catalog/Model/ResourceModel/Product/Option.php +++ b/app/code/Magento/Catalog/Model/ResourceModel/Product/Option.php @@ -174,9 +174,7 @@ protected function _saveValuePrices(\Magento\Framework\Model\AbstractModel $obje $storeCurrency = $this->_storeManager->getStore($storeId)->getBaseCurrencyCode(); $rate = $this->_currencyFactory->create()->load($websiteBaseCurrency) ->getRate($storeCurrency); - if (!$rate) { - $rate = 1; - } + $rate ?: $rate = 1; $newPrice = $object->getPrice() * $rate; } else { $newPrice = $object->getPrice(); @@ -587,6 +585,8 @@ public function getPriceTypes() } /** + * Returns metadata poll. + * * @return \Magento\Framework\EntityManager\MetadataPool */ private function getMetadataPool()