From 5e82bab5f40487251f7e49122f272b99acb89808 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 6 Jun 2019 15:14:28 -0500 Subject: [PATCH] Bug 23070: Use Koha::Hold in C4::Reserves::RevertWaitingStatus We are using raw SQL statements, we should use Koha::Hold instead. This patch does not seem optimal, we would like to increment priority in only 1 statement and without the need to fetch and loop all holds. --- C4/Reserves.pm | 45 ++++++++++++--------------------------------- 1 file changed, 12 insertions(+), 33 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 097a5c09d6..b1960a97fe 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -1886,49 +1886,28 @@ 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 - $query = " - UPDATE reserves - SET - priority = 1, - found = NULL, - waitingdate = NULL - WHERE - reserve_id = ? - "; - $sth = $dbh->prepare( $query ); - $sth->execute( $reserve->{'reserve_id'} ); + $hold->set( { priority => 1, found => undef, waitingdate => undef } )->store; unless ( $hold->item_level_hold ) { $hold->itemnumber(undef)->store; } - _FixPriority( { biblionumber => $reserve->{biblionumber} } ); + _FixPriority( { biblionumber => $hold->biblionumber } ); } =head2 ReserveSlip -- 2.11.0