@@ -, +, @@ C4::Reserves::RevertWaitingStatus - apply patch - place some holds on the same record - check that the priorities look good - mark one hold as waiting by doing a check-in - revert the waiting status - confirm that the priorities are recalculated correctly --- C4/Reserves.pm | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) --- a/C4/Reserves.pm +++ a/C4/Reserves.pm @@ -1984,31 +1984,21 @@ sub RevertWaitingStatus { my $dbh = C4::Context->dbh; ## Get the waiting reserve we want to revert - my $query = " - SELECT * FROM reserves - WHERE itemnumber = ? - AND found IS NOT NULL - "; - my $sth = $dbh->prepare( $query ); - $sth->execute( $itemnumber ); - my $reserve = $sth->fetchrow_hashref(); - - my $hold = Koha::Holds->find( $reserve->{reserve_id} ); # TODO Remove the next raw SQL statements and use this instead + my $hold = Koha::Holds->search( + { + itemnumber => $itemnumber, + found => { not => undef }, + } + )->next; ## Increment the priority of all other non-waiting ## reserves for this bib record - $query = " - UPDATE reserves - SET - priority = priority + 1 - WHERE - biblionumber = ? - AND - priority > 0 - "; - $sth = $dbh->prepare( $query ); - $sth->execute( $reserve->{'biblionumber'} ); + my $holds = Koha::Holds->search({ biblionumber => $hold->biblionumber, priority => { '>' => 0 } }); + while ( my $h = $holds->next ) { + $h->priority( $h->priority + 1 )->store; + } + ## Fix up the currently waiting reserve $hold->set( { priority => 1, @@ -2018,7 +2008,7 @@ sub RevertWaitingStatus { } )->store(); - _FixPriority( { biblionumber => $reserve->{biblionumber} } ); + _FixPriority( { biblionumber => $hold->biblionumber } ); return $hold; } --