File tree Expand file tree Collapse file tree 2 files changed +34
-2
lines changed
app/code/Magento/Sales/Plugin/Model/ResourceModel/Order
dev/tests/integration/testsuite/Magento/Sales/Plugin/Model/ResourceModel/Order Expand file tree Collapse file tree 2 files changed +34
-2
lines changed Original file line number Diff line number Diff line change 6
6
7
7
namespace Magento \Sales \Plugin \Model \ResourceModel \Order ;
8
8
9
+ use DateTime ;
10
+ use DateTimeInterface ;
9
11
use Magento \Framework \DB \Select ;
10
12
use Magento \Framework \Stdlib \DateTime \TimezoneInterface ;
11
13
use Magento \Framework \View \Element \UiComponent \DataProvider \SearchResult ;
@@ -44,11 +46,16 @@ public function aroundAddFieldToFilter(
44
46
$ field ,
45
47
$ condition = null
46
48
) {
47
-
48
49
if ($ field === 'created_at ' || $ field === 'order_created_at ' ) {
49
50
if (is_array ($ condition )) {
50
51
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
+ }
52
59
}
53
60
}
54
61
@@ -61,4 +68,23 @@ public function aroundAddFieldToFilter(
61
68
62
69
return $ proceed ($ field , $ condition );
63
70
}
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
+ }
64
90
}
Original file line number Diff line number Diff line change 11
11
use Magento \Framework \Stdlib \DateTime \TimezoneInterface ;
12
12
use Magento \Framework \View \Element \UiComponent \DataProvider \SearchResult ;
13
13
use Magento \Sales \Model \ResourceModel \Order \Creditmemo ;
14
+ use Magento \Sales \Model \ResourceModel \Order \Grid \Collection as OrderCollection ;
14
15
use Magento \Sales \Model \ResourceModel \Order \Invoice ;
15
16
use Magento \Sales \Model \ResourceModel \Order \Shipment ;
16
17
use Magento \TestFramework \Helper \Bootstrap ;
@@ -130,6 +131,11 @@ public function getCollectionFiltersDataProvider(): array
130
131
'mainTable ' => 'sales_creditmemo_grid ' ,
131
132
'resourceModel ' => Creditmemo::class,
132
133
'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 ' ,
133
139
]
134
140
];
135
141
}
You can’t perform that action at this time.
0 commit comments