WebshopApi: falsche sql update Abhängigkeit
[kivitendo-erp.git] / SL / DATEV.pm
index 6f222b5..9418c48 100644 (file)
@@ -36,7 +36,6 @@ use SL::DATEV::CSV;
 use SL::DB;
 use SL::HTML::Util ();
 use SL::Locale::String qw(t8);
-use SL::Iconv qw(convert);
 
 use Data::Dumper;
 use DateTime;
@@ -216,6 +215,16 @@ sub trans_id {
   return $self->{trans_id};
 }
 
+sub warnings {
+  my $self = shift;
+
+  if (@_) {
+    $self->{warnings} = [@_];
+  } else {
+   return $self->{warnings};
+  }
+}
+
 sub accnofrom {
  my $self = shift;
 
@@ -1366,13 +1375,10 @@ sub csv_buchungsexport {
   push @array_of_datev, \@csv_headers;
   push @array_of_datev, [ map { $_->{csv_header_name} } @csv_columns ];
 
+  my @warnings;
   foreach my $row ( @datev_lines ) {
     my @current_datev_row;
 
-    # format transformation
-    foreach (qw(belegfeld1 kost1 kost2)) {
-      $row->{$_} = SL::Iconv::convert("UTF-8", "CP1252", $row->{$_}) if $row->{$_};
-    }
     # shorten strings
     if ($row->{belegfeld1}) {
       $row->{buchungsbes} = $row->{belegfeld1} if $row->{belegfeld1};
@@ -1394,15 +1400,17 @@ sub csv_buchungsexport {
         die "Incorrect lenght of field" if length($row->{ $column->{kivi_datev_name} }) > $column->{max_length};
       }
       if (exists $column->{valid_check} && $column->{kivi_datev_name} ne 'not yet implemented') {
-        # more checks
-        die "Not a valid value: '$row->{ $column->{kivi_datev_name} }'" .
-            " for '$column->{kivi_datev_name}' with amount '$row->{umsatz}'"
-              unless ($column->{valid_check}->($row->{ $column->{kivi_datev_name} }));
+        # more checks, listed as user warnings
+        push @warnings, t8("Wrong field value '#1' for field '#2' for the transaction" .
+                            " with amount '#3'",$row->{ $column->{kivi_datev_name} },
+                            $column->{kivi_datev_name},$row->{umsatz})
+          unless ($column->{valid_check}->($row->{ $column->{kivi_datev_name} }));
       }
       push @current_datev_row, $row->{ $column->{kivi_datev_name} };
     }
     push @array_of_datev, \@current_datev_row;
   }
+  $self->warnings(@warnings) if @warnings;
   return \@array_of_datev;
 }
 
@@ -1416,7 +1424,6 @@ sub _csv_buchungsexport_to_file {
   my $filename = "EXTF_DATEV_kivitendo" . $self->from->ymd() . '-' . $self->to->ymd() . ".csv";
   my @data = \$params{data};
 
-  # EXTF_Buchungsstapel.csv: ISO-8859 text, with very long lines, with CRLF line terminators
   my $csv = Text::CSV_XS->new({
               binary       => 1,
               sep_char     => ";",
@@ -1429,7 +1436,7 @@ sub _csv_buchungsexport_to_file {
     $csv->quote_empty(1);
   }
 
-  my $csv_file = IO::File->new($self->export_path . '/' . $filename, '>:encoding(iso-8859-1)') or die "Can't open: $!";
+  my $csv_file = IO::File->new($self->export_path . '/' . $filename, '>:encoding(cp1252)') or die "Can't open: $!";
   $csv->print($csv_file, $_) for @{ $params{data} };
   $csv_file->close;