From 0eb21dd86e7b572052da32f5bb45f350989d8477 Mon Sep 17 00:00:00 2001 From: Sviatoslav Mankivskyi <smankivskyi@magento.com> Date: Wed, 21 Dec 2016 11:49:02 +0200 Subject: [PATCH] MAGETWO-60098: Configurable product option price is displayed incorrectly per website --- .../Product/StatusBaseSelectProcessor.php | 8 ++++---- .../Product/StatusBaseSelectProcessorTest.php | 13 ++++++++----- .../Product/Indexer/Price/Configurable.php | 7 ++++++- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Product/StatusBaseSelectProcessor.php b/app/code/Magento/Catalog/Model/ResourceModel/Product/StatusBaseSelectProcessor.php index 381e09f5d74..b4293a39895 100644 --- a/app/code/Magento/Catalog/Model/ResourceModel/Product/StatusBaseSelectProcessor.php +++ b/app/code/Magento/Catalog/Model/ResourceModel/Product/StatusBaseSelectProcessor.php @@ -61,16 +61,16 @@ class StatusBaseSelectProcessor implements BaseSelectProcessorInterface $select->joinLeft( ['status_global_attr' => $statusAttribute->getBackendTable()], "status_global_attr.{$linkField} = " . self::PRODUCT_TABLE_ALIAS . ".{$linkField}" - . ' AND status_global_attr.attribute_id = ' . (int)$statusAttribute->getAttributeId() - . ' AND status_global_attr.store_id = ' . Store::DEFAULT_STORE_ID, + . ' AND status_global_attr.attribute_id = ' . (int)$statusAttribute->getAttributeId() + . ' AND status_global_attr.store_id = ' . Store::DEFAULT_STORE_ID, [] ); $select->joinLeft( ['status_attr' => $statusAttribute->getBackendTable()], "status_attr.{$linkField} = " . self::PRODUCT_TABLE_ALIAS . ".{$linkField}" - . ' AND status_attr.attribute_id = ' . (int)$statusAttribute->getAttributeId() - . ' AND status_attr.store_id = ' . $this->storeResolver->getCurrentStoreId(), + . ' AND status_attr.attribute_id = ' . (int)$statusAttribute->getAttributeId() + . ' AND status_attr.store_id = ' . $this->storeResolver->getCurrentStoreId(), [] ); diff --git a/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Product/StatusBaseSelectProcessorTest.php b/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Product/StatusBaseSelectProcessorTest.php index c1c78c41ea6..1fada997913 100644 --- a/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Product/StatusBaseSelectProcessorTest.php +++ b/app/code/Magento/Catalog/Test/Unit/Model/ResourceModel/Product/StatusBaseSelectProcessorTest.php @@ -19,6 +19,9 @@ use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\Store\Api\StoreResolverInterface; use Magento\Store\Model\Store; +/** + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ class StatusBaseSelectProcessorTest extends \PHPUnit_Framework_TestCase { /** @@ -100,9 +103,9 @@ class StatusBaseSelectProcessorTest extends \PHPUnit_Framework_TestCase ->with( ['status_global_attr' => $backendTable], "status_global_attr.{$linkField} = " - . BaseSelectProcessorInterface::PRODUCT_TABLE_ALIAS . ".{$linkField}" - . " AND status_global_attr.attribute_id = {$attributeId}" - . ' AND status_global_attr.store_id = ' . Store::DEFAULT_STORE_ID, + . BaseSelectProcessorInterface::PRODUCT_TABLE_ALIAS . ".{$linkField}" + . " AND status_global_attr.attribute_id = {$attributeId}" + . ' AND status_global_attr.store_id = ' . Store::DEFAULT_STORE_ID, [] ) ->willReturnSelf(); @@ -111,8 +114,8 @@ class StatusBaseSelectProcessorTest extends \PHPUnit_Framework_TestCase ->with( ['status_attr' => $backendTable], "status_attr.{$linkField} = " . BaseSelectProcessorInterface::PRODUCT_TABLE_ALIAS . ".{$linkField}" - . " AND status_attr.attribute_id = {$attributeId}" - . " AND status_attr.store_id = {$currentStoreId}", + . " AND status_attr.attribute_id = {$attributeId}" + . " AND status_attr.store_id = {$currentStoreId}", [] ) ->willReturnSelf(); diff --git a/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Indexer/Price/Configurable.php b/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Indexer/Price/Configurable.php index 07936cefdeb..ed4863342a9 100644 --- a/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Indexer/Price/Configurable.php +++ b/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Indexer/Price/Configurable.php @@ -13,6 +13,9 @@ use Magento\Catalog\Model\Product\Attribute\Source\Status; use Magento\Store\Api\StoreResolverInterface; use Magento\Store\Model\Store; +/** + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ class Configurable extends \Magento\Catalog\Model\ResourceModel\Product\Indexer\Price\DefaultPrice { /** @@ -29,6 +32,7 @@ class Configurable extends \Magento\Catalog\Model\ResourceModel\Product\Indexer\ * @param \Magento\Framework\Event\ManagerInterface $eventManager * @param \Magento\Framework\Module\Manager $moduleManager * @param string $connectionName + * @param StoreResolverInterface $storeResolver */ public function __construct( \Magento\Framework\Model\ResourceModel\Db\Context $context, @@ -235,7 +239,8 @@ class Configurable extends \Magento\Catalog\Model\ResourceModel\Product\Indexer\ . ' AND status_attr.store_id = ' . $this->storeResolver->getCurrentStoreId(), [] )->where( - 'IFNULL(status_attr.value, status_global_attr.value) = ?', Status::STATUS_ENABLED + 'IFNULL(status_attr.value, status_global_attr.value) = ?', + Status::STATUS_ENABLED )->group( ['e.entity_id', 'i.customer_group_id', 'i.website_id', 'l.product_id'] ); -- GitLab