@@ -, +, @@ --- opac/opac-reserve.pl | 81 ++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 41 deletions(-) --- a/opac/opac-reserve.pl +++ a/opac/opac-reserve.pl @@ -131,43 +131,7 @@ $template->param( branch => $branch ); # # -# Build hashes of the requested biblio(item)s and items. -# -# - -my %biblioDataHash; # Hash of biblionumber to biblio/biblioitems record. -foreach my $biblioNumber (@biblionumbers) { - - my $biblioData = GetBiblioData($biblioNumber); - $biblioDataHash{$biblioNumber} = $biblioData; - - my @itemInfos = GetItemsInfo($biblioNumber); - - my $marcrecord= GetMarcBiblio({ biblionumber => $biblioNumber }); - - # flag indicating existence of at least one item linked via a host record - # adding items linked via host biblios - my @hostitemInfos = GetHostItemsInfo($marcrecord); - if (@hostitemInfos){ - push (@itemInfos,@hostitemInfos); - } - - $biblioData->{itemInfos} = \@itemInfos; - - # Compute the priority rank. - my $biblio = Koha::Biblios->find( $biblioNumber ); - next unless $biblio; - - $biblioData->{object} = $biblio; - my $reservecount = $biblio->holds->search({ found => [ {"!=" => "W"},undef] })->count; - $biblioData->{reservecount} = $reservecount; - $biblioData->{rank} = $reservecount + 1; -} - -# -# -# If this is the second time through this script, it -# means we are carrying out the hold request, possibly +# Here we are carrying out the hold request, possibly # with a specific item for each biblionumber. # # @@ -239,8 +203,6 @@ if ( $query->param('place_reserve') ) { $biblioNum = $item->biblionumber; } - my $biblioData = $biblioDataHash{$biblioNum}; - # Check for user supplied reserve date my $startdate; if ( C4::Context->preference('AllowHoldDateInFuture') @@ -251,7 +213,9 @@ if ( $query->param('place_reserve') ) { my $patron_expiration_date = $query->param("expiration_date_$biblioNum"); - my $rank = $biblioData->{rank}; + my $biblio = Koha::Biblios->find($biblioNum); + my $rank = $biblio->holds->search({ found => [ {"!=" => "W"},undef] })->count + 1; + if ( $item ) { $canreserve = 1 if CanItemBeReserved( $patron, $item, $branch )->{status} eq 'OK'; } @@ -292,7 +256,7 @@ if ( $query->param('place_reserve') ) { reservation_date => $startdate, expiration_date => $patron_expiration_date, notes => $notes, - title => $biblioData->{title}, + title => $biblio->title, itemnumber => $itemNum, found => undef, itemtype => $itemtype, @@ -307,6 +271,41 @@ if ( $query->param('place_reserve') ) { exit; } +# +# +# Build hashes of the requested biblio(item)s and items. +# +# + +my %biblioDataHash; # Hash of biblionumber to biblio/biblioitems record. +foreach my $biblioNumber (@biblionumbers) { + + my $biblioData = GetBiblioData($biblioNumber); + $biblioDataHash{$biblioNumber} = $biblioData; + + my @itemInfos = GetItemsInfo($biblioNumber); + + my $marcrecord= GetMarcBiblio({ biblionumber => $biblioNumber }); + + # flag indicating existence of at least one item linked via a host record + # adding items linked via host biblios + my @hostitemInfos = GetHostItemsInfo($marcrecord); + if (@hostitemInfos){ + push (@itemInfos,@hostitemInfos); + } + + $biblioData->{itemInfos} = \@itemInfos; + + # Compute the priority rank. + my $biblio = Koha::Biblios->find( $biblioNumber ); + next unless $biblio; + + $biblioData->{object} = $biblio; + my $reservecount = $biblio->holds->search({ found => [ {"!=" => "W"},undef] })->count; + $biblioData->{reservecount} = $reservecount; + $biblioData->{rank} = $reservecount + 1; +} + # # # Here we check that the borrower can actually make reserves Stage 1. --