X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=SL%2FDATEV.pm;h=9418c483970ab13993bffb6b9a633766ed17c059;hb=e18af94c0dc72def3629a352dbf048baa0dfd72d;hp=6f222b566f287dd693add11e078a136ade5e76d8;hpb=ef5b4b39f9ddcf2da56dc0e781f1c0c57c7e9744;p=kivitendo-erp.git diff --git a/SL/DATEV.pm b/SL/DATEV.pm index 6f222b566..9418c4839 100644 --- a/SL/DATEV.pm +++ b/SL/DATEV.pm @@ -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;