Skip to content

Commit e569fa4

Browse files
committed
MC-42243: Sorting by price is incorrect if price for shared catalog is 0
1 parent 2fd391d commit e569fa4

File tree

5 files changed

+8
-9
lines changed

5 files changed

+8
-9
lines changed

app/code/Magento/Catalog/Model/ResourceModel/Product/Collection.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1768,7 +1768,7 @@ public function addAttributeToSort($attribute, $dir = self::SORT_ORDER_ASC)
17681768
$this->addPriceData();
17691769
if ($this->_productLimitationFilters->isUsingPriceIndex()) {
17701770
$this->getSelect()->order(
1771-
new \Zend_Db_Expr("price_index.min_price = 0, price_index.min_price {$dir}")
1771+
new \Zend_Db_Expr("price_index.min_price IS NULL, price_index.min_price {$dir}")
17721772
);
17731773
return $this;
17741774
}

app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/Price/Query/BaseFinalPrice.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,11 +216,11 @@ public function getQuery(array $dimensions, string $productType, array $entityId
216216
$select->columns(
217217
[
218218
//orig_price in catalog_product_index_price_final_tmp
219-
'price' => $connection->getIfNullSql($price, 0),
219+
'price' => $price,
220220
//price in catalog_product_index_price_final_tmp
221-
'final_price' => $connection->getIfNullSql($finalPrice, 0),
222-
'min_price' => $connection->getIfNullSql($finalPrice, 0),
223-
'max_price' => $connection->getIfNullSql($finalPrice, 0),
221+
'final_price' => $finalPrice,
222+
'min_price' => $finalPrice,
223+
'max_price' => $finalPrice,
224224
'tier_price' => $tierPrice,
225225
]
226226
);

app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Indexer/Price/BaseStockStatusSelectProcessor.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ public function process(Select $select)
6060
[]
6161
);
6262
$select->where('si.is_in_stock = ?', Stock::STOCK_IN_STOCK);
63-
$select->orWhere('si_parent.is_in_stock = ?', Stock::STOCK_OUT_OF_STOCK);
6463
}
6564

6665
return $select;

app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Indexer/Price/Configurable.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,8 @@ private function updateTemporaryTable(string $temporaryPriceTableName, string $t
251251
// adds price of custom option, that was applied in DefaultPrice::_applyCustomOption
252252
$selectForCrossUpdate->columns(
253253
[
254-
'min_price' => new \Zend_Db_Expr('i.min_price - i.price + io.min_price'),
255-
'max_price' => new \Zend_Db_Expr('i.max_price - i.price + io.max_price'),
254+
'min_price' => 'io.min_price',
255+
'max_price' => 'io.max_price',
256256
'tier_price' => 'io.tier_price',
257257
]
258258
);

app/code/Magento/Elasticsearch/Model/ResourceModel/Fulltext/Collection/SearchResultApplier.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public function apply()
7878
$sortDirection = $sortOrder['price'];
7979
$this->collection->getSelect()
8080
->order(
81-
new \Zend_Db_Expr("price_index.min_price = 0, price_index.min_price {$sortDirection}")
81+
new \Zend_Db_Expr("price_index.min_price IS NULL, price_index.min_price {$sortDirection}")
8282
);
8383
} else {
8484
$orderList = join(',', $ids);

0 commit comments

Comments
 (0)