Skip to content

Commit 72733c3

Browse files
committed
AC-10847: As low as label is still displayed for a Configurable Product for the Test case AC-6158
1 parent 471b64a commit 72733c3

File tree

1 file changed

+17
-24
lines changed

1 file changed

+17
-24
lines changed

app/code/Magento/ConfigurableProduct/Pricing/Price/ConfigurableRegularPrice.php

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
<?php
22
/**
3-
* Copyright © Magento, Inc. All rights reserved.
4-
* See COPYING.txt for license details.
3+
* Copyright 2015 Adobe
4+
* All Rights Reserved.
55
*/
66

77
namespace Magento\ConfigurableProduct\Pricing\Price;
88

99
use Magento\Catalog\Model\Product;
10-
use Magento\ConfigurableProduct\Model\ConfigurableMaxPriceCalculator;
1110
use Magento\Framework\App\ObjectManager;
1211
use Magento\Framework\ObjectManager\ResetAfterRequestInterface;
1312
use Magento\Framework\Pricing\Price\AbstractPrice;
@@ -55,18 +54,12 @@ class ConfigurableRegularPrice extends AbstractPrice implements
5554
*/
5655
private $lowestPriceOptionsProvider;
5756

58-
/**
59-
* @var ConfigurableMaxPriceCalculator
60-
*/
61-
private $configurableMaxPriceCalculator;
62-
6357
/**
6458
* @param \Magento\Framework\Pricing\SaleableInterface $saleableItem
6559
* @param float $quantity
6660
* @param \Magento\Framework\Pricing\Adjustment\CalculatorInterface $calculator
6761
* @param \Magento\Framework\Pricing\PriceCurrencyInterface $priceCurrency
6862
* @param PriceResolverInterface $priceResolver
69-
* @param ConfigurableMaxPriceCalculator $configurableMaxPriceCalculator
7063
* @param LowestPriceOptionsProviderInterface $lowestPriceOptionsProvider
7164
*/
7265
public function __construct(
@@ -75,14 +68,12 @@ public function __construct(
7568
\Magento\Framework\Pricing\Adjustment\CalculatorInterface $calculator,
7669
\Magento\Framework\Pricing\PriceCurrencyInterface $priceCurrency,
7770
PriceResolverInterface $priceResolver,
78-
ConfigurableMaxPriceCalculator $configurableMaxPriceCalculator,
7971
?LowestPriceOptionsProviderInterface $lowestPriceOptionsProvider = null
8072
) {
8173
parent::__construct($saleableItem, $quantity, $calculator, $priceCurrency);
8274
$this->priceResolver = $priceResolver;
8375
$this->lowestPriceOptionsProvider = $lowestPriceOptionsProvider ?:
8476
ObjectManager::getInstance()->get(LowestPriceOptionsProviderInterface::class);
85-
$this->configurableMaxPriceCalculator = $configurableMaxPriceCalculator;
8677
}
8778

8879
/**
@@ -196,26 +187,28 @@ public function _resetState(): void
196187
}
197188

198189
/**
199-
* Check whether Configurable Product have more than one children products
190+
* Check whether Configurable Product has more than one child product and if their prices are equal
200191
*
201192
* @param SaleableInterface $product
202193
* @return bool
203194
*/
204195
public function isChildProductsOfEqualPrices(SaleableInterface $product): bool
205196
{
206-
$minPrice = $this->getMinRegularAmount()->getValue();
207-
$final_price = $product->getFinalPrice();
208-
$productId = $product->getId();
209-
if ($final_price < $minPrice) {
210-
return false;
197+
// Get all child products of the configurable product
198+
$childProducts = $product->getTypeInstance()->getUsedProducts($product);
199+
if (count($childProducts) <= 1) {
200+
return false; // Not more than one child product
211201
}
212-
$attributes = $product->getTypeInstance()->getConfigurableAttributes($product);
213-
$items = $attributes->getItems();
214-
$options = reset($items);
215-
$maxPrice = $this->configurableMaxPriceCalculator->getMaxPriceForConfigurableProduct($productId);
216-
if ($maxPrice == 0) {
217-
$maxPrice = $this->getMaxRegularAmount()->getValue();
202+
203+
$prices = [];
204+
foreach ($childProducts as $child) {
205+
$prices[] = $child->getFinalPrice();
218206
}
219-
return (count($options->getOptions()) > 1) && $minPrice == $maxPrice;
207+
208+
$minPrice = min($prices);
209+
$maxPrice = max($prices);
210+
211+
// Return true only if all child prices are equal (min == max)
212+
return $minPrice == $maxPrice;
220213
}
221214
}

0 commit comments

Comments
 (0)