Skip to content

Commit 8c99643

Browse files
cparticaAnna Bukatar
authored andcommitted
MAGETWO-49212: [GITHUB] Magento\Sales\Model\OrderRepository::getList() is incomplete #3018
- fixing OR logic when using filter_groups and multiple filters
1 parent bb8fd35 commit 8c99643

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

app/code/Magento/Sales/Model/OrderRepository.php

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,7 @@ public function getList(\Magento\Framework\Api\SearchCriteria $searchCriteria)
100100
/** @var \Magento\Sales\Api\Data\OrderSearchResultInterface $searchResult */
101101
$searchResult = $this->searchResultFactory->create();
102102
foreach ($searchCriteria->getFilterGroups() as $filterGroup) {
103-
foreach ($filterGroup->getFilters() as $filter) {
104-
$condition = $filter->getConditionType() ? $filter->getConditionType() : 'eq';
105-
$searchResult->addFieldToFilter($filter->getField(), [$condition => $filter->getValue()]);
106-
}
103+
$this->addFilterGroupToCollection($filterGroup, $searchResult);
107104
}
108105

109106
$sortOrders = $searchCriteria->getSortOrders();
@@ -216,4 +213,28 @@ private function getShippingAssignmentBuilderDependency()
216213
}
217214
return $this->shippingAssignmentBuilder;
218215
}
216+
217+
/**
218+
* Helper function that adds a FilterGroup to the collection.
219+
*
220+
* @param \Magento\Framework\Api\Search\FilterGroup $filterGroup
221+
* @param \Magento\Sales\Api\Data\OrderSearchResultInterface $searchResult
222+
* @return void
223+
* @throws \Magento\Framework\Exception\InputException
224+
*/
225+
protected function addFilterGroupToCollection(
226+
\Magento\Framework\Api\Search\FilterGroup $filterGroup,
227+
\Magento\Sales\Api\Data\OrderSearchResultInterface $searchResult
228+
) {
229+
$fields = [];
230+
$conditions = [];
231+
foreach ($filterGroup->getFilters() as $filter) {
232+
$condition = $filter->getConditionType() ? $filter->getConditionType() : 'eq';
233+
$conditions[] = [$condition => $filter->getValue()];
234+
$fields[] = $filter->getField();
235+
}
236+
if ($fields) {
237+
$searchResult->addFieldToFilter($fields, $conditions);
238+
}
239+
}
219240
}

0 commit comments

Comments
 (0)