|
Lines 217-230
sub addDays {
Link Here
|
| 217 |
if ( $self->is_holiday($base_date) ) { |
217 |
if ( $self->is_holiday($base_date) ) { |
| 218 |
my $dow = $base_date->day_of_week; |
218 |
my $dow = $base_date->day_of_week; |
| 219 |
my $days = $days_duration->in_units('days'); |
219 |
my $days = $days_duration->in_units('days'); |
| 220 |
my $push_amt = ( |
220 |
# Is it a period based on weeks |
| 221 |
# We're using Dayweek useDaysMode option |
221 |
my $push_amt = $days_duration % 7 == 0 ? |
| 222 |
$self->{days_mode} eq 'Dayweek' && |
222 |
$self->get_push_amt($base_date) : 1; |
| 223 |
# It's period based on weeks |
|
|
| 224 |
$days % 7 == 0 && |
| 225 |
# It's not a permanently closed day |
| 226 |
!$self->{weekly_closed_days}->[$dow] == 1 |
| 227 |
) ? 7 : 1; |
| 228 |
if ( $days_duration->is_negative() ) { |
223 |
if ( $days_duration->is_negative() ) { |
| 229 |
$base_date = $self->prev_open_days($base_date, $push_amt); |
224 |
$base_date = $self->prev_open_days($base_date, $push_amt); |
| 230 |
} else { |
225 |
} else { |
|
Lines 237-242
sub addDays {
Link Here
|
| 237 |
return $base_date; |
232 |
return $base_date; |
| 238 |
} |
233 |
} |
| 239 |
|
234 |
|
|
|
235 |
sub get_push_amt { |
| 236 |
my ( $self, $base_date) = @_; |
| 237 |
|
| 238 |
my $dow = $base_date->day_of_week; |
| 239 |
return ( |
| 240 |
# We're using Dayweek useDaysMode option |
| 241 |
$self->{days_mode} eq 'Dayweek' && |
| 242 |
# It's not a permanently closed day |
| 243 |
!$self->{weekly_closed_days}->[$dow] == 1 |
| 244 |
) ? 7 : 1; |
| 245 |
} |
| 246 |
|
| 240 |
sub is_holiday { |
247 |
sub is_holiday { |
| 241 |
my ( $self, $dt ) = @_; |
248 |
my ( $self, $dt ) = @_; |
| 242 |
|
249 |
|
|
Lines 285-291
sub next_open_days {
Link Here
|
| 285 |
|
292 |
|
| 286 |
$base_date->add(days => $to_add); |
293 |
$base_date->add(days => $to_add); |
| 287 |
while ($self->is_holiday($base_date)) { |
294 |
while ($self->is_holiday($base_date)) { |
| 288 |
$base_date->add(days => $to_add); |
295 |
my $add_next = $self->get_push_amt($base_date); |
|
|
296 |
$base_date->add(days => $add_next); |
| 289 |
} |
297 |
} |
| 290 |
return $base_date; |
298 |
return $base_date; |
| 291 |
} |
299 |
} |
|
Lines 301-307
sub prev_open_days {
Link Here
|
| 301 |
$base_date->add(days => $to_sub); |
309 |
$base_date->add(days => $to_sub); |
| 302 |
|
310 |
|
| 303 |
while ($self->is_holiday($base_date)) { |
311 |
while ($self->is_holiday($base_date)) { |
| 304 |
$base_date->add(days => $to_sub); |
312 |
my $sub_next = $self->get_push_amt($base_date); |
|
|
313 |
$base_date->add(days => $sub_next); |
| 305 |
} |
314 |
} |
| 306 |
|
315 |
|
| 307 |
return $base_date; |
316 |
return $base_date; |
| 308 |
- |
|
|