From f9d325f9dae044cebbec0fedb05a6ed610ddaba5 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Tue, 6 Aug 2013 17:08:28 -0300 Subject: [PATCH] Bug 10663: Holds never block renewals Based on Katrin's patch, this one fixes GetReserveStatus to look for biblio-level holds when an itemtype is passed and no item-level hold is set. Please test using Katrin's test plan. Regards To+ Sponsored-by: Universidad Nacional de Cordoba --- C4/Reserves.pm | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 1f89127..81f1941 100644 --- a/C4/Reserves.pm +++ b/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 } -- 1.8.1.2