From a77f144c47bca0dcea0eb8e1ef86c5175836a5f0 Mon Sep 17 00:00:00 2001 From: Christopher Brannon Date: Tue, 4 Dec 2018 16:38:34 +0000 Subject: [PATCH] Bug 21944: Reroute waiting hold from wrong branch To Test: 1) Place a hold on an item. 2) Check in the item to trigger the hold. Item is now listed as waiting. 3) Set branch to a different library. 4) Check in the item to trigger the hold. Notice that nothing but a local use is recorded. 5) Apply the patch. 6) Repeat steps 1-4. Notice that the hold is triggered around routed to its original pickup location. A transfer is set and the hold status is changed from waiting to correctly showing the item as in transit. --- C4/Circulation.pm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index fa082104a1..0228ff9bda 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2027,10 +2027,17 @@ sub AddReturn { } # find reserves..... - # if we don't have a reserve with the status W, we launch the Checkreserves routine + # launch the Checkreserves routine to find any holds my ($resfound, $resrec); my $lookahead= C4::Context->preference('ConfirmFutureHolds'); #number of days to look for future holds ($resfound, $resrec, undef) = C4::Reserves::CheckReserves( $item->{'itemnumber'}, undef, $lookahead ) unless ( $item->{'withdrawn'} ); + # if a hold is found and is waiting at another branch, change the priority back to 1 and trigger the hold (this will trigger a transfer and update the hold status properly) + if ( $resfound eq "Waiting" and $branch ne $resrec->{branchcode} ) { + C4::Reserves::RevertWaitingStatus( { itemnumber => $itemnumber } ); + #If the hold is reverted we need to refetch for the return values + ($resfound, $resrec, undef) = C4::Reserves::CheckReserves( $item->{'itemnumber'}, undef, $lookahead ) unless ( $item->{'withdrawn'} ); + } + ($resfound, $resrec, undef) = C4::Reserves::CheckReserves( $item->{'itemnumber'}, undef, $lookahead ) unless ( $item->{'withdrawn'} ); if ($resfound) { $resrec->{'ResFound'} = $resfound; $messages->{'ResFound'} = $resrec; -- 2.11.0