Bug 5549 : Koha::Calendar allow negative offset to addDate
This commit is contained in:
parent
b7b6a8e388
commit
5b2260ae85
|
|
@ -4,6 +4,7 @@ use warnings;
|
|||
use 5.010;
|
||||
|
||||
use DateTime;
|
||||
use DateTime::Set;
|
||||
use C4::Context;
|
||||
use Carp;
|
||||
use Readonly;
|
||||
|
|
@ -80,13 +81,17 @@ sub addDate {
|
|||
my ( $self, $base_date, $add_duration, $unit ) = @_;
|
||||
my $days_mode = C4::Context->preference('useDaysMode');
|
||||
Readonly::Scalar my $return_by_hour => 10;
|
||||
my $day_dur = DateTime::Duration->new( days => 1);
|
||||
if ($add_duration->is_negative()) {
|
||||
$day_dur->inverse();
|
||||
}
|
||||
if ( $days_mode eq 'Datedue' ) {
|
||||
|
||||
my $dt = $base_date + $add_duration;
|
||||
while ( $self->is_holiday($dt) ) {
|
||||
|
||||
# TODOP if hours set to 10 am
|
||||
$dt->add( days => 1 );
|
||||
$dt->add_duration( $day_dur );
|
||||
if ( $unit eq 'hours' ) {
|
||||
$dt->set_hour($return_by_hour); # Staffs specific
|
||||
}
|
||||
|
|
@ -95,7 +100,7 @@ sub addDate {
|
|||
} elsif ( $days_mode eq 'Calendar' ) {
|
||||
my $days = $add_duration->in_units('days');
|
||||
while ($days) {
|
||||
$base_date->add( days => 1 );
|
||||
$base_date->add_duration( $day_dur );
|
||||
if ( $self->is_holiday($base_date) ) {
|
||||
next;
|
||||
} else {
|
||||
|
|
@ -121,7 +126,7 @@ sub is_holiday {
|
|||
if (@matches) {
|
||||
return 1;
|
||||
}
|
||||
$dt->truncate('days');
|
||||
$dt->truncate(to => 'days');
|
||||
my $day = $dt->day;
|
||||
my $month = $dt->month;
|
||||
for my $dm ( @{ $self->{day_month_closed_days} } ) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue