From 9c1a85755b1f215961dc387c8306a2369f83057f Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Wed, 25 May 2022 13:23:26 +0000 Subject: [PATCH] Bug 30847: Cleanup calculation of holds and rank Currently we loop over all the holds on the record to get a count of the reserves not waiting and a rank for the upcoming hold We can simply count the number of nont waiting holds and add 1 Note: Before this patch the count of holds included the new hold we were going to place which meant rank and count were the same. I believe countaing existing holds and our upcoming rank is the correct behavior To test: 1 - Set OPACShowHoldQueueDetails system preference to 'Show holds and their priorty level' 2 - Place a few holds on a bib on the staff side 3 - Mark 1 waiting 4 - Attempt to place hold on the bib on the opac 5 - Note 'Your priority' and 'Number of holds' are the same number 6 - Place another hold, confirm both increase 7 - Set another hold waiting, confirm both decrease 8 - Apply patch 9 - Confirm 'Your priority' is now 1 greater than Number of holds 10 - Place a hold, set a hold waiting, confirm numbers adjust as appropriate --- opac/opac-reserve.pl | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/opac/opac-reserve.pl b/opac/opac-reserve.pl index b8ffca4e44..4e35ea853a 100755 --- a/opac/opac-reserve.pl +++ b/opac/opac-reserve.pl @@ -169,18 +169,9 @@ foreach my $biblioNumber (@biblionumbers) { next unless $biblio; $biblioData->{object} = $biblio; - my $holds = $biblio->holds; - my $rank = $holds->count; - $biblioData->{reservecount} = 1; # new reserve - while ( my $hold = $holds->next ) { - if ( $hold->is_waiting ) { - $rank--; - } - else { - $biblioData->{reservecount}++; - } - } - $biblioData->{rank} = $rank + 1; + my $reservecount = $biblio->holds->search({ found => [ {"!=" => "W"},undef] })->count; + $biblioData->{reservecount} = $reservecount; + $biblioData->{rank} = $reservecount + 1; } # -- 2.30.2