From 2ce7bf6ed5c6d74e3635666f93ef9e1f90d091c0 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Fri, 29 Jul 2016 20:41:19 +0000 Subject: [PATCH] Bug 17001: fix due date filter on the overdue report MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit When the TimeFormat system preference is set to "12 hour", setting a filter on the due date can result in: - no overdue loans being reported, even if there are some that meet the criteria OR - overdue loans being omitted from the report if they are due on the "until" date in the filter This patch fixes this by replacing output_pref() with DateTime::Format::MySQL to format the date filter values to pass to the SQL query. To test ------- [1] Run the overdue report (circ/overdue.pl) and set a filter on due date, using values that should bring up one or more overdue loans. [2] Note that zero overdue loans are returned (if using MySQL 5.5, 5.6, or 5.7 or MariaDB 5) or that loans due on the "until" date are omitted (if using MarioDB 10). [3] Apply the patch and repeat step 1. This time, the correct set of overdue loans should be reported. Signed-off-by: Galen Charlton Signed-off-by: Jason Robb Signed-off-by: Katrin Fischer Signed-off-by: Kyle M Hall (cherry picked from commit 761001add1a95d147a23b74e8d817890ffc08ac5) Signed-off-by: Frédéric Demians --- circ/overdue.pl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/circ/overdue.pl b/circ/overdue.pl index 8e060136f1..047e073f8b 100755 --- a/circ/overdue.pl +++ b/circ/overdue.pl @@ -29,6 +29,7 @@ use C4::Debug; use Text::CSV_XS; use Koha::DateUtils; use DateTime; +use DateTime::Format::MySQL; my $input = new CGI; my $order = $input->param('order') || ''; @@ -321,8 +322,8 @@ if ($noreport) { $template->param(sql=>$strsth); my $sth=$dbh->prepare($strsth); $sth->execute( - ($dateduefrom ? output_pref({ dt => $dateduefrom, dateformat => 'iso' }) : ()), - ($datedueto ? output_pref({ dt => $datedueto, dateformat => 'iso' }) : ()), + ($dateduefrom ? DateTime::Format::MySQL->format_datetime($dateduefrom) : ()), + ($datedueto ? DateTime::Format::MySQL->format_datetime($datedueto) : ()), ); my @overduedata; -- 2.39.5