Skip to content

Commit ce498a9

Browse files
MAGETWO-90575: Use price index to calculate price for configurable products
1 parent 199272b commit ce498a9

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\ConfigurableProduct\Model\ResourceModel\Product;
7+
8+
use Magento\Catalog\Model\ResourceModel\Product\LinkedProductSelectBuilderInterface;
9+
10+
class LinkedProductSelectBuilderComposite implements LinkedProductSelectBuilderInterface
11+
{
12+
/**
13+
* @var LinkedProductSelectBuilderInterface[]
14+
*/
15+
private $linkedProductSelectBuilder;
16+
17+
/**
18+
* @param LinkedProductSelectBuilderInterface[] $linkedProductSelectBuilder
19+
*/
20+
public function __construct($linkedProductSelectBuilder)
21+
{
22+
$this->linkedProductSelectBuilder = $linkedProductSelectBuilder;
23+
}
24+
25+
/**
26+
* {@inheritdoc}
27+
*/
28+
public function build($productId)
29+
{
30+
$selects = [];
31+
foreach ($this->linkedProductSelectBuilder as $productSelectBuilder) {
32+
$selects = array_merge($selects, $productSelectBuilder->build($productId));
33+
}
34+
35+
return $selects;
36+
}
37+
}

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,18 @@
189189
<argument name="productIndexer" xsi:type="object">Magento\Catalog\Model\Indexer\Product\Full</argument>
190190
</arguments>
191191
</type>
192+
<virtualType name="LinkedProductSelectBuilderByIndexMinPrice" type="Magento\ConfigurableProduct\Model\ResourceModel\Product\LinkedProductSelectBuilderComposite">
193+
<arguments>
194+
<argument name="linkedProductSelectBuilder" xsi:type="array">
195+
<item name="indexPrice" xsi:type="object">Magento\Catalog\Model\ResourceModel\Product\Indexer\LinkedProductSelectBuilderByIndexPrice</item>
196+
</argument>
197+
</arguments>
198+
</virtualType>
199+
<type name="Magento\ConfigurableProduct\Model\ResourceModel\Product\LinkedProductSelectBuilder">
200+
<arguments>
201+
<argument name="linkedProductSelectBuilder" xsi:type="object">LinkedProductSelectBuilderByIndexMinPrice</argument>
202+
</arguments>
203+
</type>
192204
<type name="Magento\ConfigurableProduct\Pricing\Price\LowestPriceOptionsProvider">
193205
<arguments>
194206
<argument name="linkedProductSelectBuilder" xsi:type="object">Magento\ConfigurableProduct\Model\ResourceModel\Product\LinkedProductSelectBuilder</argument>

0 commit comments

Comments
 (0)