Bug 11801: In transit hold items incorrectly labels as "Waiting to be pulled" on...
[koha.git] / reserve / request.pl
index 8701586..a86e0e7 100755 (executable)
@@ -196,7 +196,8 @@ foreach my $biblionumber (@biblionumbers) {
     }
 
     # get existing reserves .....
-    my ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber,1);
+    my $reserves = GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
+    my $count = scalar( @$reserves );
     my $totalcount = $count;
     my $holds_count = 0;
     my $alreadyreserved = 0;
@@ -338,7 +339,7 @@ foreach my $biblionumber (@biblionumbers) {
                 $item->{ReservedForSurname}     = $ItemBorrowerReserveInfo->{'surname'};
                 $item->{ReservedForFirstname}     = $ItemBorrowerReserveInfo->{'firstname'};
                 $item->{ExpectedAtLibrary}     = $branches->{$expectedAt}{branchname};
-                $item->{waitingdate} = format_date($wait) if $wait;
+                $item->{waitingdate} = $wait;
             }
 
             # Management of the notforloan document
@@ -446,7 +447,7 @@ foreach my $biblionumber (@biblionumbers) {
 
     # existingreserves building
     my @reserveloop;
-    ( $count, $reserves ) = GetReservesFromBiblionumber($biblionumber,1);
+    $reserves = GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
     foreach my $res ( sort {
             my $a_found = $a->{found} || '';
             my $b_found = $a->{found} || '';
@@ -475,7 +476,12 @@ foreach my $biblionumber (@biblionumbers) {
             $reserve{'itemnumber'}  = $res->{'itemnumber'};
             $reserve{'wbrname'} = $branches->{$res->{'branchcode'}}->{'branchname'};
             if($reserve{'holdingbranch'} eq $reserve{'wbrcode'}){
-                $reserve{'atdestination'} = 1;
+                # Just because the holdingbranch matches the reserve branch doesn't mean the item
+                # has arrived at the destination, check for an open transfer for the item as well
+                my ( $transfertwhen, $transfertfrom, $transferto ) = C4::Circulation::GetTransfers( $res->{itemnumber} );
+                if ( not $transferto or $transferto ne $res->{branchcode} ) {
+                    $reserve{'atdestination'} = 1;
+                }
             }
             # set found to 1 if reserve is waiting for patron pickup
             $reserve{'found'} = 1 if $res->{'found'} eq 'W';