From f1b3f46de518779c23d18af9e03b9fc5f3170add Mon Sep 17 00:00:00 2001 From: Adrien Saurat Date: Mon, 7 May 2012 16:11:11 +0200 Subject: [PATCH] Bug 8045: fixes "date due" when checking in Added cloning of object parameters in "days_between" method. Signed-off-by: Nicole C. Engard Checked in items that were overdue, due in the future and not checked out and all showed the right info in the check in table. Signed-off-by: Paul Poulain --- Koha/Calendar.pm | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Koha/Calendar.pm b/Koha/Calendar.pm index 75c5c9ebb1..f63e7eb891 100644 --- a/Koha/Calendar.pm +++ b/Koha/Calendar.pm @@ -169,13 +169,16 @@ sub days_between { my $start_dt = shift; my $end_dt = shift; + my $datestart_temp = $start_dt->clone(); + my $dateend_temp = $end_dt->clone(); + # start and end should not be closed days - my $duration = $end_dt->delta_days($start_dt); - $start_dt->truncate( to => 'days' ); - $end_dt->truncate( to => 'days' ); - while ( DateTime->compare( $start_dt, $end_dt ) == -1 ) { - $start_dt->add( days => 1 ); - if ( $self->is_holiday($start_dt) ) { + my $duration = $dateend_temp->delta_days($datestart_temp); + $datestart_temp->truncate( to => 'days' ); + $dateend_temp->truncate( to => 'days' ); + while ( DateTime->compare( $datestart_temp, $dateend_temp ) == -1 ) { + $datestart_temp->add( days => 1 ); + if ( $self->is_holiday($datestart_temp) ) { $duration->subtract( days => 1 ); } }