]> wagnertech.de Git - mfinanz.git/blobdiff - SL/Helper/Csv.pm
_check_multiplexed setzt error im Fehlerfall.
[mfinanz.git] / SL / Helper / Csv.pm
index c5d2f4aee787fa4a8b249baf9c4b9d15e6d7a7a6..85f175889c48d5061f92554a7eced03767db8b00 100644 (file)
@@ -111,13 +111,31 @@ sub _check_multiplexed {
     if (scalar @profile > 1) {
       # Each profile needs a class and a row_ident
       my $info_ok = all { defined $_->{class} && defined $_->{row_ident} } @profile;
+      $self->_push_error([
+        0,
+        "missing class or row_ident in one of the profiles for multiplexed data",
+        0,
+        0]) unless $info_ok;
 
       # If header is given, there need to be a header for each profile
       # and no empty headers.
       if ($info_ok && $self->header) {
         my @header = @{ $self->header };
-        $info_ok = $info_ok && scalar @profile == scalar @header;
-        $info_ok = $info_ok && all { scalar @$_ > 0} @header;
+        my $t_ok = scalar @profile == scalar @header;
+        $self->_push_error([
+          0,
+          "number of headers and number of profiles must be the same for multiplexed data",
+          0,
+          0]) unless $t_ok;
+        $info_ok = $info_ok && $t_ok;
+
+        $t_ok = all { scalar @$_ > 0} @header;
+        $self->_push_error([
+          0,
+          "no empty headers are allowed for multiplexed data",
+          0,
+          0]) unless $t_ok;
+        $info_ok = $info_ok && $t_ok;
       }
       $self->is_multiplexed($info_ok);
       return $info_ok;
@@ -229,7 +247,7 @@ sub _header_by_row {
 
   # initialize lookup hash if not already done
   if ($self->is_multiplexed && ! defined $self->_row_header ) {
-    $self->_row_header({ pairwise { $a->{row_ident} => $b } @{ $self->profile }, @{ $self->header } });
+    $self->_row_header({ pairwise { no warnings 'once'; $a->{row_ident} => $b } @{ $self->profile }, @{ $self->header } });
   }
 
   if ($self->is_multiplexed) {