… verschoben, damit der Code nicht doppelt in OE.pm und oe.pl ist und auch von
woanders verwendet werden kann.
return $self->truncate(to => 'month')->add(months => 1)->subtract(days => 1);
}
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;
+}
+
Sets the object to the last day of object's month at midnight. Returns
the object itself.
Sets the object to the last day of object's month at midnight. Returns
the object itself.
+=item C<next_workday %params>
+
+Sets the object to the next workday. The recognized parameter is:
+
+=over 2
+
+=item * C<extra_days> - optional: If C<extra_days> 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.
+
$form->{useasnew} = 1 if $is_collective_order == 1;
if (!$form->{id}) {
$form->{useasnew} = 1 if $is_collective_order == 1;
if (!$form->{id}) {
- my $extra_days = $form->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval : 1;
- my $next_workday = DateTime->today_local->add(days => $extra_days);
- my $day_of_week = $next_workday->day_of_week;
-
- $next_workday->add(days => (8 - $day_of_week)) if $day_of_week >= 6;
-
+ my $extra_days = $form->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval : 1;
+ $form->{reqdate} = DateTime->today_local->next_workday(extra_days => $extra_days)->to_kivitendo;
$form->{transdate} = DateTime->today_local->to_kivitendo;
$form->{transdate} = DateTime->today_local->to_kivitendo;
- $form->{reqdate} = $next_workday->to_kivitendo;
if ( $form->{reqdate} && $form->{id} ) {
my $saved_order = OE->retrieve_simple(id => $form->{id});
if ( $saved_order && $saved_order->{reqdate} eq $form->{reqdate} && $saved_order->{transdate} eq $form->{transdate} ) {
if ( $form->{reqdate} && $form->{id} ) {
my $saved_order = OE->retrieve_simple(id => $form->{id});
if ( $saved_order && $saved_order->{reqdate} eq $form->{reqdate} && $saved_order->{transdate} eq $form->{transdate} ) {
- my $extra_days = $form->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval : 1;
- my $next_workday = DateTime->today_local->add(days => $extra_days);
- my $day_of_week = $next_workday->day_of_week;
-
- $next_workday->add(days => (8 - $day_of_week)) if $day_of_week >= 6;
-
+ my $extra_days = $form->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval : 1;
+ $form->{reqdate} = DateTime->today_local->next_workday(extra_days => $extra_days)->to_kivitendo;
$form->{transdate} = DateTime->today_local->to_kivitendo;
$form->{transdate} = DateTime->today_local->to_kivitendo;
- $form->{reqdate} = $next_workday->to_kivitendo;