Zeiterfassung: Parameter f. Konvertierung in params übergeben
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 18 Jan 2021 14:29:38 +0000 (15:29 +0100)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Wed, 5 May 2021 15:25:03 +0000 (17:25 +0200)
SL/BackgroundJob/ConvertTimeRecordings.pm
SL/DB/DeliveryOrder.pm

index e65fb49..dbbf12c 100644 (file)
@@ -79,25 +79,20 @@ sub run {
                                                                                  or => [booked => 0, booked => undef],
                                                                                  %customer_where],
                                                                 with_objects => ['customer']);
+
   # no time recordings at all ? -> better exit here before iterating a empty hash
   # return undef or message unless ref $time_recordings->[0] eq SL::DB::Manager::TimeRecording;
+
   my %time_recordings_by_customer_id;
-  # push @{ $time_recordings_by_customer_id{$_->customer_id} }, $_ for @$time_recordings;
-  # loop over all entries and add default or user defined params:
-
-  for my $source_entry (@$time_recordings) {
-    # set user defaults for processing
-    $source_entry->{$_} = $self->$_ for qw(rounding link_project);
-    foreach (qw(project_id parts_id)) {
-      $source_entry->{$_} = $self->{$_} if length ($self->{$_});
-    }
-    push @{ $time_recordings_by_customer_id{$source_entry->customer_id} }, $source_entry;
-  }
+  push @{ $time_recordings_by_customer_id{$_->customer_id} }, $_ for @$time_recordings;
+
+  my %convert_params = map { $_ => $data->{$_} } qw(rounding link_project part_id project_id);
+
   my @donumbers;
   foreach my $customer_id (keys %time_recordings_by_customer_id) {
     my $do;
     if (!eval {
-      $do = SL::DB::DeliveryOrder->new_from_time_recordings($time_recordings_by_customer_id{$customer_id});
+      $do = SL::DB::DeliveryOrder->new_from_time_recordings($time_recordings_by_customer_id{$customer_id}, %convert_params);
       1;
     }) {
       $::lxdebug->message(LXDebug->WARN(),
index 3f2cd3e..8c5efab 100644 (file)
@@ -207,9 +207,9 @@ sub new_from_time_recordings {
   #  - merge same descriptions (todo)
   #
 
-  ### config
-  my $default_partnummer = 6;
-  my $default_part_id    = SL::DB::Manager::Part->find_by(partnumber => $default_partnummer)->id;
+  my $default_part_id = $params{default_part_id}    ? $params{default_part_id}
+                      : $params{default_partnumber} ? SL::DB::Manager::Part->find_by(partnumber => $params{default_partnumber})->id
+                      : undef;
 
   # check parts and collect entries
   my %part_by_part_id;
@@ -227,7 +227,7 @@ sub new_from_time_recordings {
     }
 
     my $date = $source->start_time->to_kivitendo;
-    $entries->{$part_id}->{$date}->{duration} += $source->{rounding}
+    $entries->{$part_id}->{$date}->{duration} += $params{rounding}
                                                ? nhimult(0.25, ($source->duration_in_hours))
                                                : _round_total($source->duration_in_hours);
     # add content if not already in description