From e5989e8fcc7c948c30b544604ba10a0e62ce5f32 Mon Sep 17 00:00:00 2001 From: Aleisha Amohia Date: Tue, 13 Jun 2023 17:06:18 +1200 Subject: [PATCH] Bug 33992: Only consider the date when labelling a waiting recall as problematic This patches makes sure Koha ignores the hours/minutes/seconds when comparing a recall waiting date to decide if it has been waiting too long for pickup. To test: 1. Enable UseRecalls syspref and set the relevant circulation and fines rules to configure recalls 2. Set the RecallsMaxPickUpDelay to 1 day 3. Check out Item A to Patron A 4. Log into the OPAC as Patron B 5. Search for Item A and place a recall 6. Log back into the staff interface and check in Item A 7. Confirm the recall as waiting for Patron B 8. Go to Circulation -> Recalls awaiting pickup 9. Confirm your recall exists under the 'Recalls waiting' tab 10. Log into the database and get the time for now sudo koha-mysql INSTANCE select now(); 11. Change the waiting_date in the database for this recall to yesterday so we would expect to see it under the 'Recalls waiting over 1 days' tab. Base the hours on the now() timestamp from the step before, add a few hours to this. For example, if the above SQl query returns "2023-06-13 10:54:21", change waiting_date to be slightly less than 1 day/24 hours before this now() timestamp, but still what we would consider 'yesterday' select * from recalls; # to get the recall_id update recalls set waiting_date = "2023-06-12 14:54:21" where recall_id = X; 12. Refresh the Circulation -> Recalls awaiting pickup page. The recall will not show up under the 'Recalls waiting over 1 days' tab, even though we expect it to. 13. Apply the patch, restart services, refresh the page 14. Confirm the recall now shows under the 'Recalls waiting over 1 days' tab as expected. Sponsored-by: Auckland University of Technology --- recalls/recalls_waiting.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recalls/recalls_waiting.pl b/recalls/recalls_waiting.pl index 4ded9584e89..5e10af483ef 100755 --- a/recalls/recalls_waiting.pl +++ b/recalls/recalls_waiting.pl @@ -55,10 +55,10 @@ if ( $op eq 'list' ) { my $borrower = Koha::Patrons->find( $loggedinuser ); my @over; my $maxdelay = C4::Context->preference('RecallsMaxPickUpDelay') || 7; - my $today = dt_from_string(); + my $today = dt_from_string()->truncate( to => 'day' ); foreach my $r ( @recalls ){ - my $lastwaitingday = dt_from_string( $r->waiting_date )->add( days => $maxdelay ); - if ( $today > $lastwaitingday ){ + my $lastwaitingday = dt_from_string( $r->waiting_date )->add( days => $maxdelay )->truncate( to => 'day' ); + if ( $today >= $lastwaitingday ){ push @over, $r; } } -- 2.30.2