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 66
77namespace Magento \Sales \Plugin \Model \ResourceModel \Order ;
88
9+ use DateTime ;
10+ use DateTimeInterface ;
911use Magento \Framework \DB \Select ;
1012use Magento \Framework \Stdlib \DateTime \TimezoneInterface ;
1113use 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}
Original file line number Diff line number Diff line change 1111use Magento \Framework \Stdlib \DateTime \TimezoneInterface ;
1212use Magento \Framework \View \Element \UiComponent \DataProvider \SearchResult ;
1313use Magento \Sales \Model \ResourceModel \Order \Creditmemo ;
14+ use Magento \Sales \Model \ResourceModel \Order \Grid \Collection as OrderCollection ;
1415use Magento \Sales \Model \ResourceModel \Order \Invoice ;
1516use Magento \Sales \Model \ResourceModel \Order \Shipment ;
1617use 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 }
You can’t perform that action at this time.
0 commit comments