Revision 324726ac
Von Jan Büren vor fast 6 Jahren hinzugefügt
SL/DATEV.pm | ||
---|---|---|
35 | 35 |
use SL::DATEV::CSV; |
36 | 36 |
use SL::DB; |
37 | 37 |
use SL::HTML::Util (); |
38 |
use SL::Iconv; |
|
38 | 39 |
use SL::Locale::String qw(t8); |
39 | 40 |
|
40 | 41 |
use Data::Dumper; |
... | ... | |
393 | 394 |
eol => "\r\n", |
394 | 395 |
}) or die "Cannot use CSV: ".Text::CSV_XS->error_diag(); |
395 | 396 |
|
396 |
my $csv_file = IO::File->new($self->export_path . '/' . $filename, '>:encoding(cp1252)') or die "Can't open: $!"; |
|
397 |
# get encoding from defaults - use cp1252 if DATEV strict export is used |
|
398 |
my $enc = ($::instance_conf->get_datev_export_format eq 'cp1252') ? 'cp1252' : 'utf-8'; |
|
399 |
my $csv_file = IO::File->new($self->export_path . '/' . $filename, ">:encoding($enc)") or die "Can't open: $!"; |
|
400 |
|
|
397 | 401 |
$csv->print($csv_file, $_) for @{ $datev_csv->header }; |
398 | 402 |
$csv->print($csv_file, $_) for @{ $datev_csv->lines }; |
399 | 403 |
$csv_file->close; |
400 | 404 |
$self->{warnings} = $datev_csv->warnings; |
401 | 405 |
|
406 |
# convert utf-8 to cp1252//translit if set |
|
407 |
if ($::instance_conf->get_datev_export_format eq 'cp1252-translit') { |
|
408 |
|
|
409 |
my $filename_translit = "EXTF_DATEV_kivitendo_translit" . $self->from->ymd() . '-' . $self->to->ymd() . ".csv"; |
|
410 |
open my $fh_in, '<:encoding(UTF-8)', $self->export_path . '/' . $filename or die "could not open $filename for reading: $!"; |
|
411 |
open my $fh_out, '>', $self->export_path . '/' . $filename_translit or die "could not open $filename_translit for writing: $!"; |
|
412 |
|
|
413 |
my $converter = SL::Iconv->new("utf-8", "cp1252//translit"); |
|
414 |
|
|
415 |
print $fh_out $converter->convert($_) while <$fh_in>; |
|
416 |
close $fh_in; |
|
417 |
close $fh_out; |
|
418 |
|
|
419 |
unlink $self->export_path . '/' . $filename or warn "Could not unlink $filename: $!"; |
|
420 |
$filename = $filename_translit; |
|
421 |
} |
|
422 |
|
|
402 | 423 |
return { download_token => $self->download_token, filenames => $filename }; |
403 | 424 |
|
404 | 425 |
} elsif ($self->exporttype == DATEV_ET_STAMM) { |
Auch abrufbar als: Unified diff
Fixt #348 DatevExport kommt mit bestimmten Zeichen im Buchungstext nicht klar
In der Mandantenkonfiguration befindet sich jetzt eine Einstellung,
welche die Kodierung des DATEV-Exports steuert. DATEV erwartet CP1252.
kivitendo kann diese Kodierung so vom kivitendo Nutzer einfordern, alternativ nicht
vorhandenen Zeichen versuchen zu ersetzen oder die DATEV-Erwartung ignorieren
und UTF-8 liefern. Voreingestellt ist CP1252 mit Ersetzungen