Skip to content

Commit 3d17a12

Browse files
lakshmanadevarul
authored andcommitted
ACP2E-1197: Order grid date filter issue in customer edit section
1 parent 195efad commit 3d17a12

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

app/code/Magento/Sales/Plugin/Model/ResourceModel/Order/OrderGridCollectionFilter.php

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
namespace Magento\Sales\Plugin\Model\ResourceModel\Order;
88

9+
use DateTime;
10+
use DateTimeInterface;
911
use Magento\Framework\DB\Select;
1012
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
1113
use Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult;
@@ -44,11 +46,16 @@ public function aroundAddFieldToFilter(
4446
$field,
4547
$condition = null
4648
) {
47-
4849
if ($field === 'created_at' || $field === 'order_created_at') {
4950
if (is_array($condition)) {
5051
foreach ($condition as $key => $value) {
51-
$condition[$key] = $this->timeZone->convertConfigTimeToUtc($value);
52+
if ($value instanceof DateTimeInterface
53+
&& $value->getTimezone()->getName() !== $this->timeZone->getConfigTimezone()) {
54+
$value->setTimezone(new \DateTimeZone($this->timeZone->getConfigTimezone()));
55+
}
56+
if ($this->isValidDate($value)) {
57+
$condition[$key] = $this->timeZone->convertConfigTimeToUtc($value);
58+
}
5259
}
5360
}
5461

@@ -61,4 +68,23 @@ public function aroundAddFieldToFilter(
6168

6269
return $proceed($field, $condition);
6370
}
71+
72+
/**
73+
* Validate date string
74+
*
75+
* @param string|DateTimeInterface $datetime
76+
* @return bool
77+
*/
78+
private function isValidDate($datetime): bool
79+
{
80+
try {
81+
$dt = is_string($datetime) ? new DateTime($datetime) : $datetime;
82+
if ($dt instanceof DateTimeInterface) {
83+
return true;
84+
}
85+
} catch (\Exception $e) {
86+
return false;
87+
}
88+
return false;
89+
}
6490
}

dev/tests/integration/testsuite/Magento/Sales/Plugin/Model/ResourceModel/Order/OrderGridCollectionFilterTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
1212
use Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult;
1313
use Magento\Sales\Model\ResourceModel\Order\Creditmemo;
14+
use Magento\Sales\Model\ResourceModel\Order\Grid\Collection as OrderCollection;
1415
use Magento\Sales\Model\ResourceModel\Order\Invoice;
1516
use Magento\Sales\Model\ResourceModel\Order\Shipment;
1617
use Magento\TestFramework\Helper\Bootstrap;
@@ -130,6 +131,11 @@ public function getCollectionFiltersDataProvider(): array
130131
'mainTable' => 'sales_creditmemo_grid',
131132
'resourceModel' => Creditmemo::class,
132133
'field' => 'order_created_at',
134+
],
135+
'customer_orders_grid_collection_for_order_created_at' => [
136+
'mainTable' => 'sales_order_grid',
137+
'resourceModel' => OrderCollection::class,
138+
'field' => 'created_at',
133139
]
134140
];
135141
}

0 commit comments

Comments
 (0)