From e60e9bcd22e1f0829ed6e3cc038261f4c2e4c39f Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Tue, 20 Nov 2012 17:09:55 +0100 Subject: [PATCH] Bug 8918: QA fixes - Move C4::ILSDI::_get_reserve_next_rank to C4::Reserves::GetReserveNextRank - Do not calculate rank if ReservesNeedReturns = 0 Signed-off-by: Chris Cormack --- C4/ILSDI/Services.pm | 28 ++++++++++------------------ C4/Reserves.pm | 27 ++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/C4/ILSDI/Services.pm b/C4/ILSDI/Services.pm index 10d5f85..51d807a 100644 --- a/C4/ILSDI/Services.pm +++ b/C4/ILSDI/Services.pm @@ -26,7 +26,7 @@ use C4::Circulation; use C4::Branch; use C4::Accounts; use C4::Biblio; -use C4::Reserves qw(AddReserve CancelReserve GetReservesFromBiblionumber GetReservesFromBorrowernumber CanBookBeReserved CanItemBeReserved); +use C4::Reserves qw(AddReserve CancelReserve GetReservesFromBiblionumber GetReservesFromBorrowernumber CanBookBeReserved CanItemBeReserved GetReserveNextRank); use C4::Context; use C4::AuthoritiesMarc; use C4::ILSDI::Utility; @@ -576,18 +576,6 @@ sub RenewLoan { return $out; } -sub _get_reserve_next_rank { - my ($biblionumber) = @_; - - my ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber,1); - foreach my $res (@$reserves) { - $count-- if (defined $res->{found} and $res->{found} eq 'W'); - } - my $rank = $count + 1; - - return $rank; -} - =head2 HoldTitle Creates, for a borrower, a biblio-level hold reserve. @@ -638,7 +626,7 @@ sub HoldTitle { $branch = $$borrower{branchcode}; } - my $rank = _get_reserve_next_rank($biblionumber); + my $rank = GetReserveNextRank($biblionumber); # Add the reserve # $branch, $borrowernumber, $biblionumber, $constraint, $bibitems, $priority, $notes, $title, $checkitem, $found @@ -715,13 +703,17 @@ sub HoldItem { $branch = $$borrower{branchcode}; } - my $rank = _get_reserve_next_rank($biblionumber); + my $rank; my $found; # Get rank and found - $rank = '0' unless C4::Context->preference('ReservesNeedReturns'); - if ( $item->{'holdingbranch'} eq $branch ) { - $found = 'W' unless C4::Context->preference('ReservesNeedReturns'); + if (C4::Context->preference('ReservesNeedReturns')) { + $rank = GetReserveNextRank($biblionumber); + } else { + $rank = '0'; + if ($item->{'holdingbranch'} eq $branch) { + $found = 'W'; + } } # Add the reserve diff --git a/C4/Reserves.pm b/C4/Reserves.pm index a380bf0..2b7172e 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -130,8 +130,12 @@ BEGIN { &ReserveSlip &ToggleSuspend &SuspendAll + + ); + @EXPORT_OK = qw( + MergeHolds + GetReserveNextRank ); - @EXPORT_OK = qw( MergeHolds ); } =head2 AddReserve @@ -2151,6 +2155,27 @@ sub ReserveSlip { ); } +=head2 GetReserveNextRank + + my $next_rank = GetReserveNextRank($biblionumber); + +Calculate the next available reseve rank for a biblionumber. + +=cut + +sub GetReserveNextRank { + my ($biblionumber) = @_; + + my ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber,1); + foreach my $res (@$reserves) { + $count-- if (defined $res->{found} and $res->{found} eq 'W'); + } + my $rank = $count + 1; + + return $rank; +} + + =head1 AUTHOR Koha Development Team -- 1.7.10.4