Skip to content

Commit 663abcf

Browse files
committed
MAGE-1180: fix configurable ranges with customer group prices
1 parent 2614317 commit 663abcf

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

Helper/Entity/Product/PriceManager/ProductWithChildren.php

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,28 +158,50 @@ protected function setFinalGroupPrices($field, $currencyCode, $min, $max, $dashe
158158
{
159159
if (count($subproducts) > 0) {
160160
$groupPriceList = [];
161+
$subProductsMin = -1;
162+
$subProductsMax = 0;
161163
/** @var Group $group */
162164
foreach ($this->groups as $group) {
163165
$groupId = (int) $group->getData('customer_group_id');
164166
$minPrice = $min;
167+
165168
foreach ($subproducts as $subProduct) {
166169
$subProduct->setData('customer_group_id', $groupId);
167170
$subProduct->setData('website_id', $subProduct->getStore()->getWebsiteId());
168171
$specialPrice = $this->getSpecialPrice($subProduct, $currencyCode, $withTax, []);
169172
$tierPrice = $this->getTierPrice($subProduct, $currencyCode, $withTax);
170173
$price = $this->getTaxPrice($product, $subProduct->getPriceModel()->getFinalPrice(1, $subProduct), $withTax);
174+
171175
if (!empty($tierPrice[$groupId]) && $specialPrice[$groupId] > $tierPrice[$groupId]){
172176
$minPrice = $tierPrice[$groupId];
173177
}
174-
$groupPriceList[$groupId]['min'] = min($minPrice, $price);
175-
$groupPriceList[$groupId]['max'] = max($max, $price);
178+
179+
if (isset($tierPrice[$groupId]) && $tierPrice[$groupId] !== false) {
180+
$minPrice = $tierPrice[$groupId];
181+
}
182+
183+
if ($subProductsMin == -1 || $price < $subProductsMin) {
184+
$subProductsMin = $price;
185+
}
186+
187+
if ($price > $subProductsMax) {
188+
$subProductsMax = $price;
189+
}
190+
191+
$groupPriceList[$groupId]['min'] = min($minPrice, $subProductsMin);
192+
$groupPriceList[$groupId]['max'] = $subProductsMax;
176193
$subProduct->setData('customer_group_id', null);
194+
177195
}
196+
197+
$subProductsMin = -1;
198+
$subProductsMax = 0;
178199
}
179200

180201
$minArray = [];
181202
foreach ($groupPriceList as $key => $value) {
182203
$minArray[$key]['price'] = $value['min'];
204+
$minArray[$key]['price_max'] = $value['max'];
183205
$minArray[$key]['formatted'] = $this->formattedConfigPrice($value['min'], $value['max'], $currencyCode);
184206
if ($currencyCode !== $this->baseCurrencyCode) {
185207
$minArray[$key]['formatted'] = $this->formattedConfigPrice($value['min'], $value['max'], $currencyCode);
@@ -190,6 +212,7 @@ protected function setFinalGroupPrices($field, $currencyCode, $min, $max, $dashe
190212
$groupId = (int) $group->getData('customer_group_id');
191213
$this->customData[$field][$currencyCode]['group_' . $groupId] = $minArray[$groupId]['price'];
192214
$this->customData[$field][$currencyCode]['group_' . $groupId . '_formated'] = $minArray[$groupId]['formatted'];
215+
$this->customData[$field][$currencyCode]['group_' . $groupId . '_max'] = $minArray[$groupId]['price_max'];
193216
}
194217
} else {
195218
/** @var Group $group */

0 commit comments

Comments
 (0)