From 7ed4ae7978f38f5bf0be8044e084a8a3c550d64c Mon Sep 17 00:00:00 2001 From: Adrien Saurat Date: Mon, 7 May 2012 16:11:11 +0200 Subject: [PATCH] [SIGNED-OFF] 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. --- Koha/Calendar.pm | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Koha/Calendar.pm b/Koha/Calendar.pm index 75c5c9e..f63e7eb 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 ); } } -- 1.7.2.3