@@ -, +, @@ --- C4/Reserves.pm | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) --- a/C4/Reserves.pm +++ a/C4/Reserves.pm @@ -773,23 +773,50 @@ sub GetReserveStatus { my $dbh = C4::Context->dbh; my ($sth, $found, $priority); - if ( $itemnumber ) { - $sth = $dbh->prepare("SELECT found, priority FROM reserves WHERE itemnumber = ? order by priority LIMIT 1"); + + if ( defined $itemnumber ) { + # Search for item-level reserves + + $sth = $dbh->prepare(" + SELECT found, priority + FROM reserves + WHERE itemnumber = ? + ORDER BY priority + LIMIT 1" + ); $sth->execute($itemnumber); ($found, $priority) = $sth->fetchrow_array; + + if ( not defined $found and + not defined $priority ) { + # No item-level reserves, give biblio-level a try + $biblionumber = GetBiblionumberFromItemnumber( $itemnumber ); + } } - if ( $biblionumber and not defined $found and not defined $priority ) { - $sth = $dbh->prepare("SELECT found, priority FROM reserves WHERE biblionumber = ? order by priority LIMIT 1"); + if ( defined $biblionumber ) { + # Search for biblio-level reserves + + $sth = $dbh->prepare(" + SELECT found, priority + FROM reserves + WHERE biblionumber = ? + ORDER BY priority + LIMIT 1" + ); $sth->execute($biblionumber); ($found, $priority) = $sth->fetchrow_array; } - if(defined $found) { + if ( defined $found ) { return 'Waiting' if $found eq 'W' and $priority == 0; return 'Finished' if $found eq 'F'; + } + + if ( defined $priority ) { return 'Reserved' if $priority > 0; } + return ''; #empty string here will remove need for checking undef, or less log lines } --