From 8347df159ba7c5157e95c5c94b7a13c8abf85882 Mon Sep 17 00:00:00 2001 From: Josef Moravec Date: Thu, 5 Oct 2017 20:37:25 +0000 Subject: [PATCH] Bug 19260: Holds marked as problems being seen as expired ones and deleted wrongly Test plan: 0) Apply just the first patch - the one with test 1) Run t/db_dependent/Reserves.t - test for CancelExpiredReserves should fail 2) Apply the second patch 3) t/db_dependent/Reserves.t should pass now Followed test plan, patch worked as described. Passes QA test tool Signed-off-by: Alex Buckley Signed-off-by: Marcel de Rooy Signed-off-by: Fridolin Somers --- C4/Reserves.pm | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 9ea91790ac..be144d2ea7 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -879,21 +879,25 @@ sub CancelExpiredReserves { my $today = dt_from_string(); my $cancel_on_holidays = C4::Context->preference('ExpireReservesOnHolidays'); + my $expireWaiting = C4::Context->preference('ExpireReservesMaxPickUpDelay'); my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare( " - SELECT * FROM reserves WHERE DATE(expirationdate) < DATE( CURDATE() ) - AND expirationdate IS NOT NULL - " ); - $sth->execute(); - while ( my $res = $sth->fetchrow_hashref() ) { - my $calendar = Koha::Calendar->new( branchcode => $res->{'branchcode'} ); - my $cancel_params = { reserve_id => $res->{'reserve_id'} }; + my $dtf = Koha::Database->new->schema->storage->datetime_parser; + + my $params = { expirationdate => { '<', $dtf->format_date($today) } }; + + $params->{found} = undef unless $expireWaiting; + + # FIXME To move to Koha::Holds->search_expired (?) + my $holds = Koha::Holds->search( $params ); + while ( my $hold = $holds->next ) { + my $calendar = Koha::Calendar->new( branchcode => $hold->branchcode ); next if !$cancel_on_holidays && $calendar->is_holiday( $today ); - if ( $res->{found} eq 'W' ) { + my $cancel_params = { reserve_id => $hold->reserve_id }; + if ( $hold->found eq 'W' ) { $cancel_params->{charge_cancel_fee} = 1; } -- 2.39.5