+ # check user input param names
+ foreach my $param (keys %$data) {
+ die "Not a valid parameter: $param" unless exists $valid_params{$param};
+ }
+
+ # set defaults
+ $self->params(
+ { map { ($_ => $data->{$_} // $valid_params{$_}) } keys %valid_params }
+ );
+
+
+ # convert date from string to object
+ my $from_date;
+ my $to_date;
+ $from_date = DateTime->from_kivitendo($self->params->{from_date});
+ $to_date = DateTime->from_kivitendo($self->params->{to_date});
+ # DateTime->from_kivitendo returns undef if the string cannot be parsed. Therefore test the result.
+ die 'Cannot convert date from string "' . $self->params->{from_date} . '"' if !$from_date;
+ die 'Cannot convert date to string "' . $self->params->{to_date} . '"' if !$to_date;
+
+ $to_date->add(days => 1); # to get all from the to_date, because of the time part (15.12.2020 23.59 > 15.12.2020)
+
+ $self->params->{from_date} = $from_date;
+ $self->params->{to_date} = $to_date;
+
+
+ # check if customernumbers are valid
+ die 'Customer numbers must be given in an array' if 'ARRAY' ne ref $self->params->{customernumbers};
+
+ my $customers = [];
+ if (scalar @{ $self->params->{customernumbers} }) {
+ $customers = SL::DB::Manager::Customer->get_all(where => [ customernumber => $self->params->{customernumbers},
+ or => [obsolete => undef, obsolete => 0] ]);
+ }
+ die 'Not all customer numbers are valid' if scalar @$customers != scalar @{ $self->params->{customernumbers} };