From 499c6e63f9cc058656317928207fbc4070c79182 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Wed, 14 Apr 2021 18:19:40 +0000 Subject: [PATCH] Bug 28057: Use the biblioitem's biblionumber for checking availability MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The loop here gets items from the record, plus analytic items. Because of this we need to check more than 1 record - we decide to do this via biblioitems. We need to preserve that, but when checking ItemsAnyAvailableAndNotRestricted we cannot assume that the biblionumber and biblioitemnumber are the same (they should be but this may not be the best of all possible worlds) I simply switch the call here To test: 1 - Apply patch 2 - Test placing holds on single bibs and multiple bibs 3 - Confirm it works as expected Signed-off-by: Petro Vashchuk Signed-off-by: Joonas Kylmälä Signed-off-by: Jonathan Druart Signed-off-by: Kyle M Hall (cherry picked from commit 8258ebe2fbf41ce3c80db08bd0b37b789af01ce0) Signed-off-by: Fridolin Somers (cherry picked from commit f570bae9f1a97c2b8ba1d4ec04f0f9e17a5b7599) Signed-off-by: Victor Grousset/tuxayo --- reserve/request.pl | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/reserve/request.pl b/reserve/request.pl index d43e93acc2..90f1a92418 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -396,8 +396,8 @@ foreach my $biblionumber (@biblionumbers) { $biblioloopiter{noitems} = 1; } - ## Here we go backwards again to create hash of biblioitemnumber to itemnumbers, - ## when by definition all of the itemnumber have the same biblioitemnumber + ## Here we go backwards again to create hash of biblioitemnumber to itemnumbers + ## this is important when we have analytic items which may be on another record my ( $iteminfos_of ); while ( my $item = $items->next ) { $item = $item->unblessed; @@ -407,7 +407,6 @@ foreach my $biblionumber (@biblionumbers) { $iteminfos_of->{$itemnumber} = $item; } - ## Should be same as biblionumber my @biblioitemnumbers = keys %itemnumbers_of_biblioitem; my $biblioiteminfos_of = { @@ -455,7 +454,7 @@ foreach my $biblionumber (@biblionumbers) { # (before this loop was inside that sub loop so it was O(n^2) ) my $items_any_available; - $items_any_available = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblioitemnumber, patron => $patron }) + $items_any_available = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblioitem->{biblionumber}, patron => $patron }) if $patron; foreach my $itemnumber ( @{ $itemnumbers_of_biblioitem{$biblioitemnumber} } ) { -- 2.39.5