X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FCsvImport%2FBaseMulti.pm;h=7650938e0b3596213c31a1d9c6d1af1480c56b4b;hb=7ed4b336b89b861479a1fc2670b9456334b0d1be;hp=d5010a26e845a04d6d12b01ec18c981886f57b33;hpb=01a4e61cd737bfd84e45169c78ee2071bd6b3acc;p=kivitendo-erp.git diff --git a/SL/Controller/CsvImport/BaseMulti.pm b/SL/Controller/CsvImport/BaseMulti.pm index d5010a26e..7650938e0 100644 --- a/SL/Controller/CsvImport/BaseMulti.pm +++ b/SL/Controller/CsvImport/BaseMulti.pm @@ -16,7 +16,7 @@ use Rose::Object::MakeMethods::Generic sub run { my ($self, %params) = @_; - $self->test_run($params{test_run}); + $self->test_run($params{test}); $self->controller->track_progress(phase => 'parsing csv', progress => 0); @@ -151,7 +151,7 @@ sub init_cvar_columns_by { my $ri = $p->{row_ident}; $ccb->{row_ident}->{$ri} = [ map { "cvar_" . $_->name } (@{ $self->cvar_configs_by->{row_ident}->{$ri} }) ]; } - + return $ccb; } @@ -250,6 +250,32 @@ sub add_cvar_columns_to_displayable_columns { @{ $self->cvar_configs_by->{row_ident}->{$row_ident} }); } +sub field_lengths { + my ($self) = @_; + + my %field_lengths_by_ri = (); + + foreach my $p (@{ $self->profile }) { + my %field_lengths = map { $_->name => $_->length } grep { $_->type eq 'varchar' } @{ $p->{class}->meta->columns }; + $field_lengths_by_ri{ $p->{row_ident} } = \%field_lengths; + } + + return %field_lengths_by_ri; +} + +sub fix_field_lengths { + my ($self) = @_; + + my %field_lengths_by_ri = $self->field_lengths; + foreach my $entry (@{ $self->controller->data }) { + next unless @{ $entry->{errors} }; + my %field_lengths = %{ $field_lengths_by_ri{ $entry->{raw_data}->{datatype} } }; + map { $entry->{object}->$_(substr($entry->{object}->$_, 0, $field_lengths{$_})) if $entry->{object}->$_ } keys %field_lengths; + } + + return; +} + sub is_multiplexed { 1 } 1;