Skip to content

Commit af38483

Browse files
committed
MC-33499: Grid Filter not working for Scheduled Export when selected any kind of Entity Type
1 parent f8be711 commit af38483

File tree

4 files changed

+33
-13
lines changed

4 files changed

+33
-13
lines changed

app/code/Magento/CatalogImportExport/Model/Export/Product.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1548,10 +1548,12 @@ public function filterAttributeCollection(\Magento\Eav\Model\ResourceModel\Entit
15481548
{
15491549
$validTypes = array_keys($this->_productTypeModels);
15501550
$validTypes = array_combine($validTypes, $validTypes);
1551-
if (!empty($this->_bannedAttributes)) {
1552-
$collection->addFieldToFilter('attribute_code', ['nin' => $this->_bannedAttributes]);
1553-
}
1551+
15541552
foreach (parent::filterAttributeCollection($collection) as $attribute) {
1553+
if (in_array($attribute->getAttributeCode(), $this->_bannedAttributes)) {
1554+
$collection->removeItemByKey($attribute->getId());
1555+
continue;
1556+
}
15551557
$attrApplyTo = $attribute->getApplyTo();
15561558
$attrApplyTo = array_combine($attrApplyTo, $attrApplyTo);
15571559
$attrApplyTo = $attrApplyTo ? array_intersect_key($attrApplyTo, $validTypes) : $validTypes;
@@ -1565,7 +1567,7 @@ public function filterAttributeCollection(\Magento\Eav\Model\ResourceModel\Entit
15651567
}
15661568
} else {
15671569
// remove attributes of not-supported product types
1568-
$collection->addFieldToFilter('attribute_code',['nin' => $attribute->getAttributeCode()]);
1570+
$collection->removeItemByKey($attribute->getId());
15691571
}
15701572
}
15711573
return $collection;

app/code/Magento/ImportExport/Block/Adminhtml/Export/Filter.php

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -430,14 +430,25 @@ public function prepareCollection(\Magento\Framework\Data\Collection $collection
430430
return $this->getCollection();
431431
}
432432

433-
protected function _prepareCollection()
433+
/**
434+
* @inheritDoc
435+
*
436+
* @param \Magento\Backend\Block\Widget\Grid\Column $column
437+
* @return $this
438+
*/
439+
protected function _addColumnFilterToCollection($column)
434440
{
435-
if ($this->getCollection()) {
436-
if ($this->getCollection()->isLoaded()) {
437-
$this->getCollection()->clear();
441+
$collection = $this->getCollection();
442+
$field = $column->getFilterIndex() ?? $column->getIndex();
443+
$condition = $column->getFilter()->getData('value');
444+
if ($field && isset($condition)) {
445+
foreach ($this->getCollection() as $attribute) {
446+
if (stripos($attribute->getData($field), $condition) === false) {
447+
$collection->removeItemByKey($attribute->getId());
448+
}
438449
}
439450
}
440451

441-
return parent::_prepareCollection();
452+
return $this;
442453
}
443454
}

app/code/Magento/ImportExport/Model/Export/AbstractEntity.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -378,8 +378,11 @@ public function getAttributeCollection()
378378
*/
379379
public function filterAttributeCollection(\Magento\Framework\Data\Collection $collection)
380380
{
381-
if (!empty($this->_disabledAttributes)) {
382-
$collection->addFieldToFilter('attribute_code', ['nin' => $this->_disabledAttributes]);
381+
/** @var $attribute \Magento\Eav\Model\Entity\Attribute\AbstractAttribute */
382+
foreach ($collection as $attribute) {
383+
if (in_array($attribute->getAttributeCode(), $this->_disabledAttributes)) {
384+
$collection->removeItemByKey($attribute->getId());
385+
}
383386
}
384387

385388
return $collection;

app/code/Magento/ImportExport/Model/Export/Entity/AbstractEntity.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -389,8 +389,12 @@ abstract public function export();
389389
*/
390390
public function filterAttributeCollection(\Magento\Eav\Model\ResourceModel\Entity\Attribute\Collection $collection)
391391
{
392-
if (!empty($this->_disabledAttrs)) {
393-
$collection->addFieldToFilter('attribute_code', ['nin' => $this->_disabledAttrs]);
392+
$collection->load();
393+
394+
foreach ($collection as $attribute) {
395+
if (in_array($attribute->getAttributeCode(), $this->_disabledAttrs)) {
396+
$collection->removeItemByKey($attribute->getId());
397+
}
394398
}
395399
return $collection;
396400
}

0 commit comments

Comments
 (0)