]> wagnertech.de Git - kivitendo-erp.git/commitdiff
Berechnung des nächsten Arbeitstages aus oe.pl und OE.pm in DateTime-Helper …
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Fri, 6 Nov 2015 10:40:32 +0000 (11:40 +0100)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Fri, 6 Nov 2015 10:40:32 +0000 (11:40 +0100)
… verschoben, damit der Code nicht doppelt in OE.pm und oe.pl ist und auch von
woanders verwendet werden kann.

SL/Helper/DateTime.pm
SL/OE.pm
bin/mozilla/oe.pl

index 547c4b94b7d279054cd11d06632b764fe0412f5a..831e3018550c2a274fcf0da1ebdec84265e8fcfc 100644 (file)
@@ -82,6 +82,18 @@ sub end_of_month {
   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;
+}
+
 1;
 
 __END__
 1;
 
 __END__
@@ -131,6 +143,21 @@ The legacy name C<from_lxoffice> is still supported.
 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.
+
 =back
 
 =head1 AUTHOR
 =back
 
 =head1 AUTHOR
index 36cbcd1b7b59304df1de0fa3f85b24d3c06ac2e9..3bb645882cbb17c6b4536ea6a508ec7f69dae921 100644 (file)
--- a/SL/OE.pm
+++ b/SL/OE.pm
@@ -876,14 +876,9 @@ sub retrieve {
   $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;
   }
 
   # get default accounts
   }
 
   # get default accounts
index ea2cffadf766443ffdb35d75610b41ff30bd5635..7b33183097311819cfeaf575388e230b0c29ecaa 100644 (file)
@@ -1667,14 +1667,9 @@ sub save_as_new {
   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;
     }
   }
 
     }
   }