X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FHelper%2FDateTime.pm;h=831e3018550c2a274fcf0da1ebdec84265e8fcfc;hb=4825c38f5775010136ae10a147dbb9bdc1194f16;hp=138a8f3f4b232f37c4d7d79f14a17c621739b225;hpb=7964f8edfbc8b94076fff349d155c1fb00077c66;p=kivitendo-erp.git diff --git a/SL/Helper/DateTime.pm b/SL/Helper/DateTime.pm index 138a8f3f4..831e30185 100644 --- a/SL/Helper/DateTime.pm +++ b/SL/Helper/DateTime.pm @@ -77,6 +77,23 @@ sub subtract_businessdays { $self->add_business_duration(%params); } +sub end_of_month { + my ($self) = @_; + return $self->truncate(to => 'month')->add(months => 1)->subtract(days => 1); +} + +sub next_workday { + my ($self, %params) = @_; + + my $extra_days = $params{extra_days} // 1; + $self->add(days => $extra_days); + + my $day_of_week = $self->day_of_week; + $self->add(days => (8 - $day_of_week)) if $day_of_week >= 6; + + return $self; +} + 1; __END__ @@ -121,6 +138,26 @@ component (as opposed to L). The legacy name C is still supported. +=item C + +Sets the object to the last day of object's month at midnight. Returns +the object itself. + +=item C + +Sets the object to the next workday. The recognized parameter is: + +=over 2 + +=item * C - optional: If C is given, then +that amount of days is added to the objects date and if the resulting +date is not a workday, the object is set to the next workday. +Defaults to 1. + +=back + +Returns the object itself. + =back =head1 AUTHOR