From 564fbc08dd284415a65fa58d8ab33bed42d6f3d8 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 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 --- reserve/request.pl | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/reserve/request.pl b/reserve/request.pl index dffe1da436..f6b83deb3b 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -385,8 +385,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; @@ -396,7 +396,6 @@ foreach my $biblionumber (@biblionumbers) { $iteminfos_of->{$itemnumber} = $item; } - ## Should be same as biblionumber my @biblioitemnumbers = keys %itemnumbers_of_biblioitem; my $biblioiteminfos_of = { @@ -444,7 +443,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.11.0