From 6f6c31c8080e2537fe531ae51ba7ec00644df2cb Mon Sep 17 00:00:00 2001 From: Olli-Antti Kivilahti Date: Wed, 23 Jul 2014 08:41:47 +0300 Subject: [PATCH] Bug 12630 - Prioritizing "Hold starts on date" -holds causes all other holds to be prioritized as well! ------------------------- -- REPLICATE LIKE THIS -- ------------------------- 0. Enable AllowHoldDateInFuture-system preference! 1. Select a biblio with some holds. 2. Place a hold with the "Hold starts on date"-attribute set to future. 3. More the specific hold up on the priority queue. 4. Add another normal hold, observe how it is prioritized with the "Hold starts on date"-hold, leaving old holds to the prioritization queue tail. Unfair eh? --- C4/Reserves.pm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index eb1ae2b..ac4ab8f 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -163,7 +163,7 @@ sub AddReserve { } if ( C4::Context->preference( 'AllowHoldDateInFuture' ) ) { # Make room in reserves for this before those of a later reserve date - $priority = _ShiftPriorityByDateAndPriority( $biblionumber, $resdate, $priority ); + $priority = _ShiftPriorityByDateAndPriority( $biblionumber, $priority ); } my $waitingdate; @@ -1982,12 +1982,12 @@ the sub accounts for that too. =cut sub _ShiftPriorityByDateAndPriority { - my ( $biblio, $resdate, $new_priority ) = @_; + my ( $biblio, $new_priority ) = @_; my $dbh = C4::Context->dbh; - my $query = "SELECT priority FROM reserves WHERE biblionumber = ? AND ( reservedate > ? OR priority > ? ) ORDER BY priority ASC LIMIT 1"; + my $query = "SELECT priority FROM reserves WHERE biblionumber = ? AND priority > ? ORDER BY priority ASC LIMIT 1"; my $sth = $dbh->prepare( $query ); - $sth->execute( $biblio, $resdate, $new_priority ); + $sth->execute( $biblio, $new_priority ); my $min_priority = $sth->fetchrow; # if no such matches are found, $new_priority remains as original value $new_priority = $min_priority if ( $min_priority ); -- 1.8.1.2