@@ -, +, @@ holds_queue --- C4/Reserves.pm | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) --- a/C4/Reserves.pm +++ a/C4/Reserves.pm @@ -1223,6 +1223,9 @@ sub ModReserveAffect { $hold->itemnumber($itemnumber); + my @reserve_ids; + push @reserve_ids, $hold->reserve_id; + if ($transferToDo) { $hold->set_transfer(); } elsif (C4::Context->preference('HoldsNeedProcessingSIP') @@ -1239,6 +1242,7 @@ sub ModReserveAffect { # if this hold was part of a group, cancel other holds in the group my @holds = Koha::Holds->search({ hold_group_id => $hold->hold_group_id }); foreach my $h ( @holds ) { + push @reserve_ids, $h->reserve_id; $h->cancel unless $h->reserve_id == $hold->reserve_id; } } @@ -1250,18 +1254,20 @@ sub ModReserveAffect { CartToShelf( $itemnumber ); } - my $std = $dbh->prepare(q{ - DELETE q, t - FROM tmp_holdsqueue q - INNER JOIN hold_fill_targets t - ON q.borrowernumber = t.borrowernumber - AND q.biblionumber = t.biblionumber - AND q.itemnumber = t.itemnumber - AND q.item_level_request = t.item_level_request - AND q.holdingbranch = t.source_branchcode - WHERE t.reserve_id = ? - }); - $std->execute($hold->reserve_id); + foreach my $id ( @reserve_ids ) { + my $std = $dbh->prepare(q{ + DELETE q, t + FROM tmp_holdsqueue q + INNER JOIN hold_fill_targets t + ON q.borrowernumber = t.borrowernumber + AND q.biblionumber = t.biblionumber + AND q.itemnumber = t.itemnumber + AND q.item_level_request = t.item_level_request + AND q.holdingbranch = t.source_branchcode + WHERE t.reserve_id = ? + }); + $std->execute($id); + } logaction( 'HOLDS', 'MODIFY', $hold->reserve_id, $hold ) if C4::Context->preference('HoldsLog'); --