From 4f6d8e83b3801da3eed75e6b462278d342bbde1d Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Wed, 19 Jul 2017 08:06:56 -0700 Subject: [PATCH] Bug 18958 - If patron has multiple record level holds on one record transferring first hold causes next hold to become item level Imagine you have a record with 3 items, each item is held by LibraryA, LibraryB and LibraryC respectively. Now, a patron places to record level holds for pickup at LibraryD. When any of the items are checked in, that item is trapped to fill the first hold, but a side affect is that the next open hold because item level for the item that was just checked in! This is clearly incorrect and prevents the patron from placing more record level holds on the record. Test Plan: 1. Create and use a patron that can place multiple record level holds per record 2. Create a record with X items, each at a different library 3. Place X 'Next available' holds on the record for the patron using the 'Holds to place' box 4. Rebuild the holds queue 5. Check in LibraryA's copy as LibraryA and confirm the hold 6. Revisit request.pl for the record, notice the next hold in line is now item-specific 7. Attempt to place another hold for your patron, notice that it requires an item-specific hold 8. Apply this patch 9. Repeat steps 1-4 10. Revisit request.pl for the record, notice the next hold in line has *not* become item-specific Signed-off-by: Kyle M Hall Signed-off-by: Jason Robb Signed-off-by: Josef Moravec Bug 18958 [QA Followup] - Bring back data needed for the diffbranch block of the template Signed-off-by: Bonnie Gardner Signed-off-by: Bouzid Fergani --- circ/returns.pl | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/circ/returns.pl b/circ/returns.pl index 657229a..b27c1b4 100755 --- a/circ/returns.pl +++ b/circ/returns.pl @@ -164,25 +164,26 @@ if ( $query->param('reserve_id') ) { } # FIXME else? } else { my $diffBranchSend = ($userenv_branch ne $diffBranchReturned) ? $diffBranchReturned : undef; + # diffBranchSend tells ModReserveAffect whether document is expected in this library or not, # i.e., whether to apply waiting status ModReserveAffect( $itemnumber, $borrowernumber, $diffBranchSend, $reserve_id ); - } -# check if we have other reserves for this document, if we have a return send the message of transfer - my ( $messages, $nextreservinfo ) = GetOtherReserves($itemnumber); - my $patron = Koha::Patrons->find( $nextreservinfo ); - my $name = $patron ? $patron->surname . ", " . $patron->title . " " . $patron->firstname : ''; - if ( $messages->{'transfert'} ) { - $template->param( - itemtitle => $biblio->title, - itemnumber => $item->itemnumber, - itembiblionumber => $biblio->biblionumber, - iteminfo => $biblio->author, - name => $name, - patron => $patron, - diffbranch => 1, - ); + if ( $diffBranchSend ) { + ModItemTransfer( $itemnumber, $userenv_branch, $diffBranchSend ); + + my $patron = Koha::Patrons->find( $borrowernumber ); + my $name = $patron ? $patron->surname . ", " . $patron->title . " " . $patron->firstname : ''; + $template->param( + itemtitle => $biblio->title, + itemnumber => $item->itemnumber, + itembiblionumber => $biblio->biblionumber, + iteminfo => $biblio->author, + name => $name, + patron => $patron, + diffbranch => 1, + ); + } } } -- 2.7.4