Revision c968d1f7
Von Bernd Bleßmann vor fast 4 Jahren hinzugefügt
SL/BackgroundJob/ConvertTimeRecordings.pm | ||
---|---|---|
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(),
|
SL/DB/DeliveryOrder.pm | ||
---|---|---|
# - 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;
|
||
... | ... | |
}
|
||
|
||
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
|
Auch abrufbar als: Unified diff
Zeiterfassung: Parameter f. Konvertierung in params übergeben