X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=SL%2FController%2FCsvImport%2FBaseMulti.pm;h=973a4ae8e93fe6f8a0673e4c004301585670eace;hb=93cc0157161476f242f3304b1950f80d0ba5ef08;hp=d5010a26e845a04d6d12b01ec18c981886f57b33;hpb=efb9a24f2252104ab4af5c25334119d7c5c70a8c;p=kivitendo-erp.git diff --git a/SL/Controller/CsvImport/BaseMulti.pm b/SL/Controller/CsvImport/BaseMulti.pm index d5010a26e..973a4ae8e 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); @@ -70,7 +70,7 @@ sub run { $self->controller->raw_data_headers($raw_data_headers); $self->controller->info_headers($info_headers); - my @objects = $self->csv->get_objects; + my $objects = $self->csv->get_objects; $self->controller->track_progress(progress => 70); @@ -78,7 +78,7 @@ sub run { $self->controller->track_progress(progress => 80); - $self->controller->data([ pairwise { { object => $a, raw_data => $b, errors => [], information => [], info_data => {} } } @objects, @raw_data ]); + $self->controller->data([ pairwise { { object => $a, raw_data => $b, errors => [], information => [], info_data => {} } } @$objects, @raw_data ]); $self->controller->track_progress(progress => 90); @@ -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;