Skip to content

Commit 84815af

Browse files
authored
Merge branch 'magento-commerce:develop' into extjs-jira-ac-9320
2 parents d98df22 + e66f83c commit 84815af

File tree

9 files changed

+1034
-7
lines changed

9 files changed

+1034
-7
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
ImageAddImageContentTypeToCMSPageTest
2+
ImageAddImageIntoPageBuilderStageTest
3+
ImageInvalidFileTypeValidationTest
4+
ImageRemoveImageFromStageTest
5+
PageBuilderCreateTemplateOnCMSBlockForPageAndApplyTemplateToCatalogCategory
6+
PageBuilderDeleteTemplate
7+
PageBuilderVerifySaveContentAsTemplateModalAndApplyTemplateSlideOut
8+
CanAddVideoToColumnTest
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
2+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderImageTest/AwsS3ImageAddImageContentTypeToCMSPageTest.xml"
3+
contains entity references that violate dependency constraints:
4+
5+
ImageAddImageContentTypeToCMSPageTest from module(s): magento/module-page-builder
6+
7+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderImageTest/AwsS3ImageAddImageIntoPageBuilderStageTest.xml"
8+
contains entity references that violate dependency constraints:
9+
10+
ImageAddImageIntoPageBuilderStageTest from module(s): magento/module-page-builder
11+
12+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderImageTest/AwsS3ImageInvalidFileTypeValidationTest.xml"
13+
contains entity references that violate dependency constraints:
14+
15+
ImageInvalidFileTypeValidationTest from module(s): magento/module-page-builder
16+
17+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderImageTest/AwsS3ImageRemoveImageFromStageTest.xml"
18+
contains entity references that violate dependency constraints:
19+
20+
ImageRemoveImageFromStageTest from module(s): magento/module-page-builder
21+
22+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderTemplateTests/AwsS3PageBuilderCreateTemplateOnCMSBlockForPageAndApplyTemplateToCatalogCategory.xml"
23+
contains entity references that violate dependency constraints:
24+
25+
PageBuilderCreateTemplateOnCMSBlockForPageAndApplyTemplateToCatalogCategory from module(s): magento/module-page-builder
26+
27+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderTemplateTests/AwsS3PageBuilderDeleteTemplate.xml"
28+
contains entity references that violate dependency constraints:
29+
30+
PageBuilderDeleteTemplate from module(s): magento/module-page-builder
31+
32+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderTemplateTests/AwsS3PageBuilderVerifySaveContentAsTemplateModalAndApplyTemplateSlideOut.xml"
33+
contains entity references that violate dependency constraints:
34+
35+
PageBuilderVerifySaveContentAsTemplateModalAndApplyTemplateSlideOut from module(s): magento/module-banner-page-builder, magento/module-page-builder
36+
37+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderVideoTest/AwsS3CanAddVideoToColumnTest.xml"
38+
contains entity references that violate dependency constraints:
39+
40+
CanAddVideoToColumnTest from module(s): magento/module-page-builder

app/code/Magento/PageBuilder/Model/Catalog/ProductTotals.php

Lines changed: 84 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
use Magento\Catalog\Model\ResourceModel\Product\Collection;
1515
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
1616
use Magento\CatalogWidget\Model\Rule;
17+
use Magento\Framework\App\ObjectManager;
18+
use Magento\Framework\App\ResourceConnection;
19+
use Magento\Framework\EntityManager\MetadataPool;
1720
use Magento\Framework\Exception\LocalizedException;
1821
use Magento\Framework\Exception\NoSuchEntityException;
1922
use Magento\Rule\Model\Condition\Combine;
@@ -53,25 +56,41 @@ class ProductTotals
5356
*/
5457
private $categoryRepository;
5558

59+
/**
60+
* @var MetadataPool
61+
*/
62+
private MetadataPool $metadataPool;
63+
64+
/**
65+
* @var ResourceConnection
66+
*/
67+
private ResourceConnection $resource;
68+
5669
/**
5770
* @param CollectionFactory $productCollectionFactory
5871
* @param Builder $sqlBuilder
5972
* @param Rule $rule
6073
* @param Conditions $conditionsHelper
6174
* @param CategoryRepositoryInterface $categoryRepository
75+
* @param MetadataPool|null $metadataPool
76+
* @param ResourceConnection|null $resource
6277
*/
6378
public function __construct(
6479
CollectionFactory $productCollectionFactory,
6580
Builder $sqlBuilder,
6681
Rule $rule,
6782
Conditions $conditionsHelper,
68-
CategoryRepositoryInterface $categoryRepository
83+
CategoryRepositoryInterface $categoryRepository,
84+
?MetadataPool $metadataPool = null,
85+
?ResourceConnection $resource = null
6986
) {
7087
$this->productCollectionFactory = $productCollectionFactory;
7188
$this->sqlBuilder = $sqlBuilder;
7289
$this->rule = $rule;
7390
$this->conditionsHelper = $conditionsHelper;
7491
$this->categoryRepository = $categoryRepository;
92+
$this->metadataPool = $metadataPool ?: ObjectManager::getInstance()->get(MetadataPool::class);
93+
$this->resource = $resource ?: ObjectManager::getInstance()->get(ResourceConnection::class);
7594
}
7695

7796
/**
@@ -159,37 +178,85 @@ private function getProductCollection(string $conditions, bool $usePriceIndex =
159178
return $collection;
160179
}
161180

181+
/**
182+
* Get parent products that don't have stand-alone properties (e.g. price or special price)
183+
*
184+
* @param Collection $collection
185+
* @return Collection|null
186+
* @throws \Exception
187+
*/
188+
private function getParentProductsCollection(Collection $collection): ?Collection
189+
{
190+
$parentProducts = $this->productCollectionFactory->create();
191+
$linkField = $this->metadataPool->getMetadata(\Magento\Catalog\Api\Data\ProductInterface::class)
192+
->getLinkField();
193+
$connection = $this->resource->getConnection();
194+
$productIds = $connection->fetchCol(
195+
$connection
196+
->select()
197+
->from(['e' => $collection->getTable('catalog_product_entity')], ['link_table.parent_id'])
198+
->joinInner(
199+
['link_table' => $collection->getTable('catalog_product_super_link')],
200+
'link_table.product_id = e.' . $linkField,
201+
[]
202+
)
203+
->where('link_table.product_id IN (?)', $collection->getAllIds())
204+
);
205+
if ($productIds) {
206+
$parentProducts->addIdFilter($productIds);
207+
return $parentProducts;
208+
}
209+
210+
return null;
211+
}
212+
162213
/**
163214
* Retrieve count of all enabled products
164215
*
165216
* @param string $conditions
166217
* @return int number of enabled products
218+
* @throws LocalizedException
219+
* @throws \Exception
167220
*/
168221
private function getEnabledCount(string $conditions): int
169222
{
170223
$collection = $this->getProductCollection($conditions, true);
171224
$collection->addAttributeToFilter('status', Status::STATUS_ENABLED);
172-
return $collection->getSize();
225+
$count = $collection->getSize();
226+
if ($collection->getSize() && $parentProducts = $this->getParentProductsCollection($collection)) {
227+
$parentProducts->addAttributeToFilter('status', Status::STATUS_ENABLED);
228+
$count += $parentProducts->getSize();
229+
}
230+
231+
return $count;
173232
}
174233

175234
/**
176235
* Retrieve count of all disabled products
177236
*
178237
* @param string $conditions
179238
* @return int number of disabled products
239+
* @throws \Exception
180240
*/
181241
private function getDisabledCount(string $conditions): int
182242
{
183243
$collection = $this->getProductCollection($conditions, false);
184244
$collection->addAttributeToFilter('status', Status::STATUS_DISABLED);
185-
return $collection->getSize();
245+
$count = $collection->getSize();
246+
if ($count && $parentProducts = $this->getParentProductsCollection($collection)) {
247+
$parentProducts->addAttributeToFilter('status', Status::STATUS_DISABLED);
248+
$count += $parentProducts->getSize();
249+
}
250+
251+
return $count;
186252
}
187253

188254
/**
189255
* Retrieve count of all not visible individually products
190256
*
191257
* @param string $conditions
192258
* @return int number of products not visible individually
259+
* @throws \Exception
193260
*/
194261
private function getNotVisibleCount(string $conditions): int
195262
{
@@ -202,7 +269,20 @@ private function getNotVisibleCount(string $conditions): int
202269
Visibility::VISIBILITY_IN_SEARCH
203270
]
204271
);
205-
return $collection->getSize();
272+
$count = $collection->getSize();
273+
if ($count && $parentProducts = $this->getParentProductsCollection($collection)) {
274+
$parentProducts->addAttributeToFilter('status', Status::STATUS_ENABLED);
275+
$parentProducts->addAttributeToFilter(
276+
'visibility',
277+
[
278+
Visibility::VISIBILITY_NOT_VISIBLE,
279+
Visibility::VISIBILITY_IN_SEARCH
280+
]
281+
);
282+
$count += $parentProducts->getSize();
283+
}
284+
285+
return $count;
206286
}
207287

208288
/**

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderProductsCommonTest/AdminPageBuilderProductsConfigurationValidateProductTotalsTest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@
159159
<argument name="property" value="PageBuilderProductsSortByNewestTop"/>
160160
</actionGroup>
161161
<actionGroup ref="validateProductTotals" stepKey="validateTotalProductsOnEditPanel5">
162-
<argument name="productsTotals" value="of 1 total"/>
162+
<argument name="productsTotals" value="of 7 total"/>
163163
</actionGroup>
164164
<actionGroup ref="saveEditPanelSettings" stepKey="saveEditPanel5"/>
165165
<actionGroup ref="validateProductCountInProducts" stepKey="validateTotalProductsOnStage5">
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
AdminMediaGalleryFolderData
2+
ImageMetadata
3+
AdminOpenStandaloneMediaGalleryActionGroup
4+
AdminMediaGalleryFolderSelectActionGroup
5+
AdminMediaGalleryOpenNewFolderFormActionGroup
6+
AdminMediaGalleryCreateNewFolderActionGroup
7+
AdminEnhancedMediaGalleryUploadImageActionGroup
8+
AdminMediaGalleryFolderDeleteActionGroup
9+
AdminMediaGalleryClickImageInGridActionGroup
10+
AdminMediaGalleryClickAddSelectedActionGroup
11+
AdminEnhancedMediaGalleryViewImageDetails
12+
AssertAdminEnhancedMediaGalleryUsedInSectionDisplayedActionGroup
13+
CliMediaGalleryEnhancedEnableActionGroup
14+
BaseConfigurableProduct
15+
visualSwatchAttribute
16+
AddVisualSwatchToProductWithStorefrontConfigActionGroup
17+
AdminEnhancedMediaGalleryMassActionSection

0 commit comments

Comments
 (0)