Skip to content

Commit 94393ab

Browse files
[Magento Community Engineering] Community Contributions - 2.3-develop-fast-lane-prs
- merged with '2.3-develop-express-lane-prs' branch
2 parents 3c757d7 + 96235b6 commit 94393ab

File tree

3 files changed

+43
-26
lines changed

3 files changed

+43
-26
lines changed

app/code/Magento/Review/Block/Adminhtml/Grid.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
67

78
namespace Magento\Review\Block\Adminhtml;
89

@@ -15,8 +16,6 @@
1516
* @method \Magento\Review\Block\Adminhtml\Grid setCustomerId() setCustomerId(int $customerId)
1617
* @method \Magento\Review\Block\Adminhtml\Grid setMassactionIdFieldOnlyIndexValue()
1718
* setMassactionIdFieldOnlyIndexValue(bool $onlyIndex)
18-
*
19-
* @author Magento Core Team <core@magentocommerce.com>
2019
*/
2120
class Grid extends \Magento\Backend\Block\Widget\Grid\Extended
2221
{
@@ -239,7 +238,13 @@ protected function _prepareColumns()
239238
if (!$this->_storeManager->isSingleStoreMode()) {
240239
$this->addColumn(
241240
'visible_in',
242-
['header' => __('Visibility'), 'index' => 'stores', 'type' => 'store', 'store_view' => true]
241+
[
242+
'header' => __('Visibility'),
243+
'index' => 'stores',
244+
'type' => 'store',
245+
'store_view' => true,
246+
'sortable' => false
247+
]
243248
);
244249
}
245250

app/code/Magento/Tax/Observer/GetPriceConfigurationObserver.php

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@
55
*/
66
namespace Magento\Tax\Observer;
77

8-
use Magento\Framework\Event\ObserverInterface;
98
use Magento\Catalog\Pricing\Price\BasePrice;
109
use Magento\Catalog\Pricing\Price\RegularPrice;
10+
use Magento\Framework\Event\ObserverInterface;
1111

12+
/**
13+
* Modifies the bundle config for the front end to resemble the tax included price when tax included prices.
14+
*/
1215
class GetPriceConfigurationObserver implements ObserverInterface
1316
{
1417
/**
@@ -23,6 +26,11 @@ class GetPriceConfigurationObserver implements ObserverInterface
2326
*/
2427
protected $registry;
2528

29+
/**
30+
* @var array Cache of the current bundle selection items
31+
*/
32+
private $selectionCache = [];
33+
2634
/**
2735
* @param \Magento\Framework\Registry $registry
2836
* @param \Magento\Tax\Helper\Data $taxData
@@ -44,6 +52,7 @@ public function __construct(
4452
*/
4553
public function execute(\Magento\Framework\Event\Observer $observer)
4654
{
55+
$this->selectionCache = [];
4756
if ($this->taxData->displayPriceIncludingTax()) {
4857
/** @var \Magento\Catalog\Model\Product $product */
4958
$product = $this->registry->registry('current_product');
@@ -78,12 +87,11 @@ private function recurConfigAndUpdatePrice($input, $searchKey)
7887
if (is_array($el)) {
7988
$holder[$key] =
8089
$this->recurConfigAndUpdatePrice($el, $searchKey);
81-
if ($key === $searchKey) {
82-
if ((array_key_exists('basePrice', $holder[$key]))) {
83-
if (array_key_exists('optionId', $input)) {
84-
$holder = $this->updatePriceForBundle($holder, $key);
85-
}
86-
}
90+
if ($key === $searchKey
91+
&& array_key_exists('optionId', $input)
92+
&& array_key_exists('basePrice', $holder[$key])
93+
) {
94+
$holder = $this->updatePriceForBundle($holder, $key);
8795
}
8896
} else {
8997
$holder[$key] = $el;
@@ -102,32 +110,35 @@ private function recurConfigAndUpdatePrice($input, $searchKey)
102110
*/
103111
private function updatePriceForBundle($holder, $key)
104112
{
105-
if (array_key_exists($key, $holder)) {
106-
if (array_key_exists('basePrice', $holder[$key])) {
107-
/** @var \Magento\Catalog\Model\Product $product */
108-
$product = $this->registry->registry('current_product');
109-
if ($product->getTypeId() == \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE) {
113+
if (array_key_exists($key, $holder)
114+
&& array_key_exists('basePrice', $holder[$key])) {
115+
/** @var \Magento\Catalog\Model\Product $product */
116+
$product = $this->registry->registry('current_product');
117+
if ($product->getTypeId() == \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE) {
118+
if (!isset($this->selectionCache[$product->getId()])) {
110119
$typeInstance = $product->getTypeInstance();
111120
$typeInstance->setStoreFilter($product->getStoreId(), $product);
112121

113122
$selectionCollection = $typeInstance->getSelectionsCollection(
114123
$typeInstance->getOptionsIds($product),
115124
$product
116125
);
126+
$this->selectionCache[$product->getId()] = $selectionCollection->getItems();
127+
}
128+
$arrSelections = $this->selectionCache[$product->getId()];
117129

118-
foreach ($selectionCollection->getItems() as $selectionItem) {
119-
if ($holder['optionId'] == $selectionItem->getId()) {
120-
/** @var \Magento\Framework\Pricing\Amount\Base $baseAmount */
121-
$baseAmount = $selectionItem->getPriceInfo()->getPrice(BasePrice::PRICE_CODE)->getAmount();
122-
/** @var \Magento\Framework\Pricing\Amount\Base $oldAmount */
123-
$oldAmount =
130+
foreach ($arrSelections as $selectionItem) {
131+
if ($holder['optionId'] == $selectionItem->getId()) {
132+
/** @var \Magento\Framework\Pricing\Amount\Base $baseAmount */
133+
$baseAmount = $selectionItem->getPriceInfo()->getPrice(BasePrice::PRICE_CODE)->getAmount();
134+
/** @var \Magento\Framework\Pricing\Amount\Base $oldAmount */
135+
$oldAmount =
124136
$selectionItem->getPriceInfo()->getPrice(RegularPrice::PRICE_CODE)->getAmount();
125-
if ($baseAmount->hasAdjustment('tax')) {
126-
$holder[$key]['basePrice']['amount'] =
137+
if ($baseAmount->hasAdjustment('tax')) {
138+
$holder[$key]['basePrice']['amount'] =
127139
$baseAmount->getBaseAmount() + $baseAmount->getAdjustmentAmount('tax');
128-
$holder[$key]['oldPrice']['amount'] =
140+
$holder[$key]['oldPrice']['amount'] =
129141
$oldAmount->getBaseAmount() + $oldAmount->getAdjustmentAmount('tax');
130-
}
131142
}
132143
}
133144
}

app/code/Magento/Tax/Test/Unit/Observer/GetPriceConfigurationObserverTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
67
namespace Magento\Tax\Test\Unit\Observer;
78

89
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
@@ -118,7 +119,7 @@ public function testExecute($testArray, $expectedArray)
118119

119120
$product = $this->createPartialMock(
120121
\Magento\Bundle\Model\Product\Type::class,
121-
['getTypeInstance', 'getTypeId', 'getStoreId', 'getSelectionsCollection']
122+
['getTypeInstance', 'getTypeId', 'getStoreId', 'getSelectionsCollection', 'getId']
122123
);
123124
$product->expects($this->any())
124125
->method('getTypeInstance')

0 commit comments

Comments
 (0)