Skip to content

Commit 70f04c0

Browse files
committed
MC-19672: Simple product disappearing in the configurable grid after qty set to 0
1 parent 7f54568 commit 70f04c0

File tree

3 files changed

+23
-223
lines changed

3 files changed

+23
-223
lines changed

app/code/Magento/ConfigurableProduct/Model/Plugin/UsedProductsCache.php

Lines changed: 0 additions & 200 deletions
This file was deleted.

app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Magento\Catalog\Model\Product\Gallery\ReadHandler as GalleryReadHandler;
1515
use Magento\ConfigurableProduct\Model\Product\Type\Collection\SalableProcessor;
1616
use Magento\Framework\App\ObjectManager;
17+
use Magento\Framework\App\State as AppState;
1718
use Magento\Framework\EntityManager\MetadataPool;
1819

1920
/**
@@ -194,6 +195,11 @@ class Configurable extends \Magento\Catalog\Model\Product\Type\AbstractType
194195
*/
195196
private $salableProcessor;
196197

198+
/**
199+
* @var AppState
200+
*/
201+
private $appState;
202+
197203
/**
198204
* @codingStandardsIgnoreStart/End
199205
*
@@ -217,6 +223,7 @@ class Configurable extends \Magento\Catalog\Model\Product\Type\AbstractType
217223
* @param \Magento\Framework\Serialize\Serializer\Json $serializer
218224
* @param ProductInterfaceFactory $productFactory
219225
* @param SalableProcessor $salableProcessor
226+
* @param AppState|null $appState
220227
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
221228
*/
222229
public function __construct(
@@ -241,7 +248,8 @@ public function __construct(
241248
\Magento\Customer\Model\Session $customerSession = null,
242249
\Magento\Framework\Serialize\Serializer\Json $serializer = null,
243250
ProductInterfaceFactory $productFactory = null,
244-
SalableProcessor $salableProcessor = null
251+
SalableProcessor $salableProcessor = null,
252+
AppState $appState = null
245253
) {
246254
$this->typeConfigurableFactory = $typeConfigurableFactory;
247255
$this->_eavAttributeFactory = $eavAttributeFactory;
@@ -256,6 +264,7 @@ public function __construct(
256264
$this->productFactory = $productFactory ?: ObjectManager::getInstance()
257265
->get(ProductInterfaceFactory::class);
258266
$this->salableProcessor = $salableProcessor ?: ObjectManager::getInstance()->get(SalableProcessor::class);
267+
$this->appState = $appState ?? ObjectManager::getInstance()->get(AppState::class);
259268
parent::__construct(
260269
$catalogProductOption,
261270
$eavConfig,
@@ -1232,23 +1241,25 @@ public function isPossibleBuyFromList($product)
12321241
/**
12331242
* Returns array of sub-products for specified configurable product
12341243
*
1235-
* $requiredAttributeIds - one dimensional array, if provided
12361244
* Result array contains all children for specified configurable product
12371245
*
1238-
* @param \Magento\Catalog\Model\Product $product
1239-
* @param array $requiredAttributeIds
1246+
* @param \Magento\Catalog\Model\Product $product
1247+
* @param array $requiredAttributeIds
12401248
* @return ProductInterface[]
1241-
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
12421249
*/
12431250
public function getUsedProducts($product, $requiredAttributeIds = null)
12441251
{
1245-
if (!$product->hasData($this->_usedProducts)) {
1246-
$collection = $this->getConfiguredUsedProductCollection($product, false);
1247-
$usedProducts = array_values($collection->getItems());
1248-
$product->setData($this->_usedProducts, $usedProducts);
1249-
}
1250-
1251-
return $product->getData($this->_usedProducts);
1252+
$metadata = $this->getMetadataPool()->getMetadata(ProductInterface::class);
1253+
$keyParts = [
1254+
__METHOD__,
1255+
$product->getData($metadata->getLinkField()),
1256+
$product->getStoreId(),
1257+
$this->getCustomerSession()->getCustomerGroupId(),
1258+
$this->appState->getAreaCode(),
1259+
$requiredAttributeIds
1260+
];
1261+
$cacheKey = $this->getUsedProductsCacheKey($keyParts);
1262+
return $this->loadUsedProducts($product, $cacheKey);
12521263
}
12531264

12541265
/**

app/code/Magento/ConfigurableProduct/etc/di.xml

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -262,15 +262,4 @@
262262
</argument>
263263
</arguments>
264264
</type>
265-
<type name="Magento\ConfigurableProduct\Model\Plugin\UsedProductsCache">
266-
<arguments>
267-
<argument name="cache" xsi:type="object">Magento\Framework\App\Cache\Type\Collection</argument>
268-
</arguments>
269-
<arguments>
270-
<argument name="serializer" xsi:type="object">Magento\Framework\Serialize\Serializer\Json</argument>
271-
</arguments>
272-
</type>
273-
<type name="Magento\ConfigurableProduct\Model\Product\Type\Configurable">
274-
<plugin name="used_products_cache" type="Magento\ConfigurableProduct\Model\Plugin\UsedProductsCache" />
275-
</type>
276265
</config>

0 commit comments

Comments
 (0)