From 8258ebe2fbf41ce3c80db08bd0b37b789af01ce0 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 --- reserve/request.pl | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/reserve/request.pl b/reserve/request.pl index ca1c808b05..8ce6951de9 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -404,8 +404,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; @@ -415,7 +415,6 @@ foreach my $biblionumber (@biblionumbers) { $iteminfos_of->{$itemnumber} = $item; } - ## Should be same as biblionumber my @biblioitemnumbers = keys %itemnumbers_of_biblioitem; my $biblioiteminfos_of = { @@ -463,7 +462,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.20.1