(bug #4319) allow reserves on waiting items
authorNahuel ANGELINETTI <nahuel.angelinetti@biblibre.com>
Tue, 16 Mar 2010 16:11:10 +0000 (17:11 +0100)
committerHenri-Damien LAURENT <henridamien.laurent@biblibre.com>
Wed, 17 Mar 2010 16:07:49 +0000 (17:07 +0100)
This add a function to check the reserve status, and add a check in IsAvailableForItemLevelRequest() to allow request on items that are waiting

C4/Reserves.pm

index 75ea16d..7e42ceb 100644 (file)
@@ -101,7 +101,8 @@ BEGIN {
         &GetReserveCount
         &GetReserveFee
                &GetReserveInfo
-    
+        &GetReserveStatus
+        
         &GetOtherReserves
         
         &ModReserveFill
@@ -755,6 +756,18 @@ sub GetReservesForBranch {
     return (@transreserv);
 }
 
+sub GetReserveStatus {
+    my ($itemnumber) = @_;
+    
+    my $dbh = C4::Context->dbh;
+    
+    my $itemstatus = $dbh->prepare("SELECT found FROM reserves WHERE itemnumber = ?");
+    
+    $itemstatus->execute($itemnumber);
+    my ($found) = $itemstatus->fetchrow_array;
+    return $found;
+}
+
 =item CheckReserves
 
   ($status, $reserve) = &CheckReserves($itemnumber);
@@ -1349,10 +1362,11 @@ sub IsAvailableForItemLevelRequest {
                                $item->{wthdrawn} or
                                $notforloan_per_itemtype;
 
+    
     if (C4::Context->preference('AllowOnShelfHolds')) {
         return $available_per_item;
     } else {
-        return ($available_per_item and $item->{onloan}); 
+        return ($available_per_item and ($item->{onloan} or GetReserveStatus($itemnumber) eq "W")); 
     }
 }