X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/0f0cb3b708f9078b774a07cecd996e5bdc5fac63..a0d9f09a2e63f0be9eda333ab7fa78679ea55759:/SL/Helper/Csv/Dispatcher.pm diff --git a/SL/Helper/Csv/Dispatcher.pm b/SL/Helper/Csv/Dispatcher.pm index 3a725b5a0..a0f59fc81 100644 --- a/SL/Helper/Csv/Dispatcher.pm +++ b/SL/Helper/Csv/Dispatcher.pm @@ -113,6 +113,7 @@ sub parse_profile { my $i = 0; foreach my $header (@{ $h_aref }) { my $spec = $self->_parse_profile(profile => $csv_profile->[$i]->{profile}, + mapping => $csv_profile->[$i]->{mapping}, class => $csv_profile->[$i]->{class}, header => $header); push @specs, $spec; @@ -132,20 +133,21 @@ sub _parse_profile { my $profile = $params{profile}; my $class = $params{class}; my $header = $params{header}; + my $mapping = $params{mapping}; my @specs; for my $col (@$header) { next unless $col; - if ($self->_csv->strict_profile) { - if (exists $profile->{$col}) { - push @specs, $self->make_spec($col, $profile->{$col}, $class); - } else { - $self->unknown_column($col, undef); - } + if (exists $mapping->{$col} && $profile->{$mapping->{$col}}) { + push @specs, $self->make_spec($col, $profile->{$mapping->{$col}}, $class); + } elsif (exists $mapping->{$col}) { + push @specs, $self->make_spec($col, $mapping->{$col}, $class); + } elsif (exists $profile->{$col}) { + push @specs, $self->make_spec($col, $profile->{$col}, $class); } else { - if (exists $profile->{$col}) { - push @specs, $self->make_spec($col, $profile->{$col}, $class); + if ($self->_csv->strict_profile) { + $self->unknown_column($col, undef); } else { push @specs, $self->make_spec($col, $col, $class); } @@ -158,7 +160,7 @@ sub _parse_profile { sub make_spec { my ($self, $col, $path, $cur_class) = @_; - my $spec = { key => $col, steps => [] }; + my $spec = { key => $col, path => $path, steps => [] }; return unless $path;