From f18454bf975f9b7096ee150ba159f6d5cb669b18 Mon Sep 17 00:00:00 2001 From: Nicolas Florentin Date: Thu, 23 Nov 2023 11:27:58 +0100 Subject: [PATCH 1/4] force to send a date yyyy-mm-dd and not a time ot avoids time zone pb --- app/frontend/src/javascript/controllers/admin/invoices.js | 3 ++- app/services/invoices_service.rb | 7 +++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/frontend/src/javascript/controllers/admin/invoices.js b/app/frontend/src/javascript/controllers/admin/invoices.js index b3e436405..68f0fa146 100644 --- a/app/frontend/src/javascript/controllers/admin/invoices.js +++ b/app/frontend/src/javascript/controllers/admin/invoices.js @@ -824,11 +824,12 @@ Application.Controllers.controller('InvoicesController', ['$scope', '$state', 'I * @param [concat] {boolean} if true, the result will be append to $scope.invoices instead of being affected */ const invoiceSearch = function (concat) { + const date = $scope.searchInvoice.date ? $scope.searchInvoice.date.toISOString().slice(0, 10) : null; Invoice.list({ query: { number: $scope.searchInvoice.reference, customer: $scope.searchInvoice.name, - date: $scope.searchInvoice.date, + date, order_by: $scope.orderInvoice, page: $scope.page, size: INVOICES_PER_PAGE diff --git a/app/services/invoices_service.rb b/app/services/invoices_service.rb index ac63809e6..0d0f42346 100644 --- a/app/services/invoices_service.rb +++ b/app/services/invoices_service.rb @@ -29,10 +29,9 @@ class InvoicesService ) end unless filters[:date].nil? - invoices = invoices.where( - "date_trunc('day', invoices.created_at) = :search", - search: "%#{Time.iso8601(filters[:date]).in_time_zone.to_date}%" - ) + start_at = Date.parse(filters[:date]).in_time_zone + end_at = start_at.end_of_day + invoices = invoices.where(created_at: (start_at..end_at)) end invoices From 7c4a6781d6430b16ca5df91a12e95452ad00192a Mon Sep 17 00:00:00 2001 From: Nicolas Florentin Date: Thu, 23 Nov 2023 11:28:28 +0100 Subject: [PATCH 2/4] refacto project service, do the same but it is clear that service is receiving a date and not a time --- app/services/project_service.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/services/project_service.rb b/app/services/project_service.rb index 1c3e6628f..d35a44456 100644 --- a/app/services/project_service.rb +++ b/app/services/project_service.rb @@ -32,8 +32,8 @@ class ProjectService end end - created_from = Time.zone.parse(query_params['from_date']).beginning_of_day if query_params['from_date'].present? - created_to = Time.zone.parse(query_params['to_date']).end_of_day if query_params['to_date'].present? + created_from = Date.parse(query_params['from_date']).in_time_zone.beginning_of_day if query_params['from_date'].present? + created_to = Date.parse(query_params['to_date']).in_time_zone.end_of_day if query_params['to_date'].present? if created_from || created_to records = records.where(created_at: created_from..created_to) end From e16cd061f2713c0342d81132138065f3042240c4 Mon Sep 17 00:00:00 2001 From: Nicolas Florentin Date: Thu, 23 Nov 2023 11:29:08 +0100 Subject: [PATCH 3/4] sends a date as yyyy-mm-dd --- app/frontend/src/javascript/components/form/form-input.tsx | 5 ++--- app/services/orders/order_service.rb | 2 +- app/services/payment_schedule_service.rb | 7 +++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/app/frontend/src/javascript/components/form/form-input.tsx b/app/frontend/src/javascript/components/form/form-input.tsx index 5a1aed014..493a11904 100644 --- a/app/frontend/src/javascript/components/form/form-input.tsx +++ b/app/frontend/src/javascript/components/form/form-input.tsx @@ -67,11 +67,10 @@ export const FormInput = ({ id, re return num; } if (type === 'date') { - const date: Date = new Date(value + 'T00:00:00'); - if (Number.isNaN(date) && nullable) { + if (Number.isNaN(value) && nullable) { return null; } - return date; + return value; } setCharacterCount(value?.length || 0); return value; diff --git a/app/services/orders/order_service.rb b/app/services/orders/order_service.rb index 1d25857c9..926bf0202 100644 --- a/app/services/orders/order_service.rb +++ b/app/services/orders/order_service.rb @@ -127,7 +127,7 @@ class Orders::OrderService def filter_by_period(orders, filters) return orders unless filters[:period_from].present? && filters[:period_to].present? - orders.where(created_at: Time.zone.parse(filters[:period_from])..Time.zone.parse(filters[:period_to]).end_of_day) + orders.where(created_at: Date.parse(filters[:period_from]).in_time_zone..Date.parse(filters[:period_to]).in_time_zone.end_of_day) end def orders_ordering(orders, filters) diff --git a/app/services/payment_schedule_service.rb b/app/services/payment_schedule_service.rb index 7c5a1f47c..ff42945f5 100644 --- a/app/services/payment_schedule_service.rb +++ b/app/services/payment_schedule_service.rb @@ -146,10 +146,9 @@ class PaymentScheduleService ) end unless filters[:date].nil? - ps = ps.where( - "date_trunc('day', payment_schedules.created_at) = :search OR date_trunc('day', payment_schedule_items.due_date) = :search", - search: "%#{Time.zone.iso8601(filters[:date]).to_date}%" - ) + start_at = Date.parse(filters[:date]).in_time_zone + end_at = start_at.end_of_day + ps = ps.where("(payment_schedules.created_at BETWEEN :start_at AND :end_at) OR (payment_schedule_items.due_date BETWEEN :start_at AND :end_at)", start_at: start_at, end_at: end_at).references(:payment_schedule_items) end ps From be1f0cc8831224a08f96dfa86899e84f4eb62442 Mon Sep 17 00:00:00 2001 From: Nicolas Florentin Date: Thu, 23 Nov 2023 15:37:09 +0100 Subject: [PATCH 4/4] (fix) event.pre_registration_end_date (was set to beginning_of_day instead of end_of_day) --- CHANGELOG.md | 3 ++- app/services/event_service.rb | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e29b8762..0a9805c68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ ## v6.3.4 2023 November 23 - fix a bug: wrong amount when pay a reservation with payment schedule -- fix regresion on PaymentScheduleItemWorker from v6.3.2 +- fix a bug: regresion on PaymentScheduleItemWorker from v6.3.2 +- fix a bug: event.pre_registration_end_date (was set to beginning_of_day instead of end_of_day) ## v6.3.3 2023 November 14 diff --git a/app/services/event_service.rb b/app/services/event_service.rb index ec4d0d3bf..dd24fbc3a 100644 --- a/app/services/event_service.rb +++ b/app/services/event_service.rb @@ -28,6 +28,7 @@ class EventService price_cat[:amount] = to_centimes(price_cat[:amount]) end end + params[:pre_registration_end_date] = Date.parse(params[:pre_registration_end_date]).end_of_day if params[:pre_registration_end_date] # return the resulting params object params end