From f0388cb1a75aacd698c711b2ea6b9241361eb115 Mon Sep 17 00:00:00 2001
From: Julian Maurice <julian.maurice@biblibre.com>
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
---
 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 1c5ae28..3b66f3e 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;
@@ -570,18 +570,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.
@@ -632,7 +620,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
@@ -709,13 +697,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 1dc6f72..c6bb104 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
@@ -2088,6 +2092,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 <http://koha-community.org/>
-- 
1.7.2.5