From e67fbd1c7cef262e6d1395735c09e93632f5af1e Mon Sep 17 00:00:00 2001 From: Alex Arnaud Date: Fri, 2 Mar 2012 16:21:07 +0100 Subject: [PATCH] Bug 6086 - adding a dynamic filter to pending holds Signed-off-by: Owen Leonard --- circ/pendingreserves.pl | 160 +++--------- .../prog/en/modules/circ/pendingreserves.tt | 238 +++++++----------- 2 files changed, 130 insertions(+), 268 deletions(-) diff --git a/circ/pendingreserves.pl b/circ/pendingreserves.pl index d723bc25bf..52a045044c 100755 --- a/circ/pendingreserves.pl +++ b/circ/pendingreserves.pl @@ -34,11 +34,9 @@ use C4::Debug; use Date::Calc qw/Today Add_Delta_YMD/; my $input = new CGI; -my $order = $input->param('order'); my $startdate=$input->param('from'); my $enddate=$input->param('to'); my $run_report=$input->param('run_report'); -my $report_page=$input->param('report_page'); my $theme = $input->param('theme'); # only used if allowthemeoverride is set @@ -69,29 +67,28 @@ my $author; my ( $year, $month, $day ) = Today(); my $todaysdate = sprintf("%-04.4d-%-02.2d-%02.2d", $year, $month, $day); my $yesterdaysdate = sprintf("%-04.4d-%-02.2d-%02.2d", Add_Delta_YMD($year, $month, $day, 0, 0, -1)); -#changed from delivered range of 10 years-yesterday to 2 days ago-today +# changed from delivered range of 10 years-yesterday to 2 days ago-today # Find two days ago for the default shelf pull start and end dates my $pastdate = sprintf("%-04.4d-%-02.2d-%02.2d", Add_Delta_YMD($year, $month, $day, 0, 0, -2)); -# Predefine the start and end dates if they are not already defined +# Predefine the start and end dates if they are not already defined $startdate =~ s/^\s+//; $startdate =~ s/\s+$//; $enddate =~ s/^\s+//; $enddate =~ s/\s+$//; -# Check if null, should string match, if so set start and end date to yesterday +# Check if null, should string match, if so set start and end date to yesterday if (!defined($startdate) or $startdate eq "") { - $startdate = format_date($pastdate); + $startdate = format_date($pastdate); } if (!defined($enddate) or $enddate eq "") { - $enddate = format_date($todaysdate); + $enddate = format_date($todaysdate); } my @reservedata; -my ($prev_results, $next_results, $next_or_previous) = (0,0,0); if ( $run_report ) { my $dbh = C4::Context->dbh; - my ($sqlorderby, $sqldatewhere, $sqllimitoffset) = ("","",""); + my $sqldatewhere = ""; $debug and warn format_date_in_iso($startdate) . "\n" . format_date_in_iso($enddate); my @query_params = (); if ($startdate) { @@ -103,27 +100,6 @@ if ( $run_report ) { push @query_params, format_date_in_iso($enddate); } - $sqllimitoffset = " LIMIT 251"; - if ($report_page) { - $sqllimitoffset .= " OFFSET=?"; - push @query_params, ($report_page * 250); - } - - if ($order eq "biblio") { - $sqlorderby = " ORDER BY biblio.title "; - } elsif ($order eq "itype") { - $sqlorderby = " ORDER BY l_itype, location, l_itemcallnumber "; - } elsif ($order eq "location") { - $sqlorderby = " ORDER BY location, l_itemcallnumber, holdingbranch "; - } elsif ($order eq "date") { - $sqlorderby = " ORDER BY l_reservedate, location, l_itemcallnumber "; - } elsif ($order eq "library") { - $sqlorderby = " ORDER BY holdingbranch, l_itemcallnumber, location "; - } elsif ($order eq "call") { - $sqlorderby = " ORDER BY l_itemcallnumber, holdingbranch, location "; - } else { - $sqlorderby = " ORDER BY biblio.title "; - } my $strsth = "SELECT min(reservedate) as l_reservedate, reserves.borrowernumber as borrowernumber, @@ -176,110 +152,44 @@ if ( $run_report ) { $strsth .= " AND items.holdingbranch=? "; push @query_params, C4::Context->userenv->{'branch'}; } - $strsth .= " GROUP BY reserves.biblionumber " . $sqlorderby; + $strsth .= " GROUP BY reserves.biblionumber ORDER BY biblio.title "; my $sth = $dbh->prepare($strsth); $sth->execute(@query_params); - my $previous; - my $this; while ( my $data = $sth->fetchrow_hashref ) { - $this=$data->{biblionumber}.":".$data->{borrowernumber}; - my @itemlist; push( @reservedata, { - reservedate => format_date( $data->{l_reservedate} ), - priority => $data->{priority}, - name => $data->{l_patron}, - title => $data->{title}, - author => $data->{author}, - borrowernumber => $data->{borrowernumber}, - itemnum => $data->{itemnumber}, - phone => $data->{phone}, - email => $data->{email}, - biblionumber => $data->{biblionumber}, - statusw => ( $data->{found} eq "W" ), - statusf => ( $data->{found} eq "F" ), - holdingbranch => $data->{l_holdingbranch}, - branch => $data->{l_branch}, - itemcallnumber => $data->{l_itemcallnumber}, - enumchron => $data->{l_enumchron}, - copyno => $data->{l_copynumber}, - notes => $data->{notes}, - notificationdate => $data->{notificationdate}, - reminderdate => $data->{reminderdate}, - count => $data->{icount}, - rcount => $data->{rcount}, - pullcount => $data->{icount} <= $data->{rcount} ? $data->{icount} : $data->{rcount}, - itype => $data->{l_itype}, - location => $data->{l_location} + reservedate => format_date( $data->{l_reservedate} ), + priority => $data->{priority}, + name => $data->{l_patron}, + title => $data->{title}, + author => $data->{author}, + borrowernumber => $data->{borrowernumber}, + itemnum => $data->{itemnumber}, + phone => $data->{phone}, + email => $data->{email}, + biblionumber => $data->{biblionumber}, + statusw => ( $data->{found} eq "W" ), + statusf => ( $data->{found} eq "F" ), + holdingbranch => $data->{l_holdingbranch}, + branch => $data->{l_branch}, + itemcallnumber => $data->{l_itemcallnumber}, + enumchron => $data->{l_enumchron}, + copyno => $data->{l_copynumber}, + notes => $data->{notes}, + notificationdate => $data->{notificationdate}, + reminderdate => $data->{reminderdate}, + count => $data->{icount}, + rcount => $data->{rcount}, + pullcount => $data->{icount} <= $data->{rcount} ? $data->{icount} : $data->{rcount}, + itype => $data->{l_itype}, + location => $data->{l_location} } ); - $previous=$this; } - $sth->finish; - - # Next Page? - if ($report_page > 0) { - $prev_results = $report_page - 1; - } - if ( scalar(@reservedata) > 250 ) { - $next_results = $report_page + 1; - pop(@reservedata); # .. we retrieved 251 results - } - if ($prev_results || $next_results) { - $next_or_previous = 1; - } - - # *** I doubt any of this is needed now with the above fixes *** -d.u. - - #$strsth=~ s/AND reserves.itemnumber is NULL/AND reserves.itemnumber is NOT NULL/; - #$strsth=~ s/LEFT JOIN items ON items.biblionumber=reserves.biblionumber/LEFT JOIN items ON items.biblionumber=reserves.itemnumber/; - #$sth = $dbh->prepare($strsth); - #if (C4::Context->preference('IndependantBranches')){ - # $sth->execute(C4::Context->userenv->{'branch'}); - #} - #else { - # $sth->execute(); - #} - #while ( my $data = $sth->fetchrow_hashref ) { - # $this=$data->{biblionumber}.":".$data->{borrowernumber}; - # my @itemlist; - # push( - # @reservedata, - # { - # reservedate => format_date( $data->{l_reservedate} ), - # priority => $data->{priority}, - # name => $data->{l_patron}, - # title => $data->{title}, - # author => $data->{author}, - # borrowernumber => $data->{borrowernumber}, - # itemnum => $data->{itemnumber}, - # phone => $data->{phone}, - # email => $data->{email}, - # biblionumber => $data->{biblionumber}, - # statusw => ( $data->{found} eq "W" ), - # statusf => ( $data->{found} eq "F" ), - # holdingbranch => $data->{l_holdingbranch}, - # branch => $data->{l_branch}, - # itemcallnumber => $data->{l_itemcallnumber}, - # notes => $data->{notes}, - # notificationdate => $data->{notificationdate}, - # reminderdate => $data->{reminderdate}, - # count => $data->{icount}, - # rcount => $data->{rcount}, - # pullcount => $data->{icount} <= $data->{rcount} ? $data->{icount} : $data->{rcount}, - # itype => $data->{l_itype}, - # location => $data->{l_location}, - # thisitemonly => 1, - # - # } - # ); - # $previous=$this; - #} - #$sth->finish; } $template->param( @@ -287,14 +197,10 @@ $template->param( from => $startdate, to => $enddate, run_report => $run_report, - report_page => $report_page, - prev_results => $prev_results, - next_results => $next_results, - next_or_previous => $next_or_previous, reserveloop => \@reservedata, "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1, DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), - dateformat => C4::Context->preference("dateformat"), + dateformat => C4::Context->preference("dateformat"), ); output_html_with_http_headers $input, $cookie, $template->output; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt index c965e5c0d6..3aeb592238 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt @@ -7,25 +7,42 @@ - - + + + + @@ -49,131 +66,70 @@ $.tablesorter.addParser({
[% IF ( reserveloop ) %] - - - - - - - - - - - - - - - - - [% IF ( next_or_previous ) %] - - - - - - [% END %] - [% FOREACH reserveloo IN reserveloop %] - - [% IF ( reserveloo.borrowernumber ) %] - - - - - [% ELSE %] - - - [% END %] - - - - - - - - - [% END %] - [% IF ( next_or_previous ) %] - - - - - - [% END %] - + + + + + + + + + + + + + + + + + [% FOREACH reserveloo IN reserveloop %] + + [% IF ( reserveloo.borrowernumber ) %] + + + + + [% ELSE %] + + + + + [% END %] + + + + + + + + + [% END %] + + + + + + + + + + + + + + + +
- Pull This Many Items - - Items Available - - Patrons with Holds - Title - Sort - - Libraries - Sort - - Available Call Numbers - Sort - - Available Copy No - - Available Enumeration - - Available Itypes - Sort - - Available Locations - Sort - Earliest Hold Date - Sort -
- [% IF ( prev_results ) %] -
- - - - -
- [% END %] -
- [% IF ( next_results ) %] -
- - - - -
- [% END %] -

[% reserveloo.pullcount %]

[% reserveloo.count %][% reserveloo.rcount %] -

- [% INCLUDE 'biblio-default-view.inc' biblionumber = reserveloo.biblionumber %] - [% reserveloo.title |html %] [% reserveloo.subtitle %] - -

-
-   - "

[% reserveloo.holdingbranch %]

[% reserveloo.itemcallnumber %]

[% reserveloo.copyno %]

[% reserveloo.enumchron %]

[% reserveloo.itype %]

[% reserveloo.location %]

-

[% reserveloo.reservedate %]

-

in [% reserveloo.branch %]

- [% IF ( reserveloo.statusw ) %]

Waiting

[% END %][% IF ( reserveloo.statusf ) %]

Fullfilled

[% END %] -
- [% IF ( prev_results ) %] -
- - - - -
- [% END %] -
- [% IF ( next_results ) %] -
- - - - -
- [% END %] -
Pull This Many ItemsItems AvailablePatrons with HoldsTitleLibrariesAvailable Call NumbersAvailable Copy NoAvailable EnumerationAvailable ItypesAvailable LocationsEarliest Hold Date

[% reserveloo.pullcount %]

[% reserveloo.count %][% reserveloo.rcount %] +

+ [% INCLUDE 'biblio-default-view.inc' biblionumber = reserveloo.biblionumber %] + [% reserveloo.title |html %] [% reserveloo.subtitle %] + +

+
""""[% reserveloo.holdingbranch %]

[% reserveloo.itemcallnumber %]

[% reserveloo.copyno %]

[% reserveloo.enumchron %]

[% reserveloo.itype %][% reserveloo.location %] +

[% reserveloo.reservedate %]

+

in [% reserveloo.branch %]

+ [% IF ( reserveloo.statusw ) %]

Waiting

[% END %][% IF ( reserveloo.statusf ) %]

Fullfilled

[% END %] +
[% ELSE %] No items found. -- 2.39.5