From 0987165d6aab0951259b2101c2133ae4c221357b Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Tue, 9 Feb 2016 11:16:55 +0100 Subject: [PATCH] Bug 15764: Fix timestamp sent by KOCT KOCT plugin send UTC timestamp, it should be converted to local timezone Test plan: 1. Install latest version of KOCT and configure it https://addons.mozilla.org/fr/firefox/addon/koct/ https://wiki.koha-community.org/wiki/Offline_circulation_firefox_plugin 2. Use it to do a checkout and a checkin. See that timestamps are UTC. 3. Click on "Commit to Koha" under "Log" tab 4. Wait for all operations to be processed 5. In Koha, go to Circulation > Offline circulation and check the timestamps were correctly converted to the Koha server's timezone 6. Process the pending operations and see that timestamps are still correct 7. Repeat step 2 8. Now click on "Apply directly" 9. Check the timestamps are correct in Koha NOTE: I could not get "Commit to Koha" to work for me, but I did confirm this corrected behaviour with "Apply directly". Signed-off-by: Mark Tompsett Signed-off-by: Owen Leonard Using the "commit to Koha" option works fine for me. Signed-off-by: Kyle M Hall This patch only affects service.pl, which is not used in any way by the uploader for desktop client files. No changes to the desktop offline circ will be needed. Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com --- offline_circ/service.pl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/offline_circ/service.pl b/offline_circ/service.pl index e8acb9054f..a23e2b8199 100755 --- a/offline_circ/service.pl +++ b/offline_circ/service.pl @@ -24,6 +24,8 @@ use warnings; use CGI qw ( -utf8 ); use C4::Auth; use C4::Circulation; +use Koha::DateUtils; +use DateTime::TimeZone; my $cgi = CGI->new; @@ -47,6 +49,11 @@ if ($status eq 'ok') { # if authentication is ok $cardnumber =~ s/^\s+//; $cardnumber =~ s/\s+$//; + # KOCT send UTC timestamp, it should be converted to local timezone + my $dt = dt_from_string($timestamp, 'iso', DateTime::TimeZone->new(name => 'UTC')); + $dt->set_time_zone(C4::Context->tz); + $timestamp = $dt->ymd('-') . ' ' . $dt->hms(':'); + if ( $cgi->param('pending') eq 'true' ) { # if the 'pending' flag is true, we store the operation in the db instead of directly processing them $result = AddOfflineOperation( $userid, -- 2.39.5