use SL::DB;
use SL::HTML::Util ();
use SL::Locale::String qw(t8);
-use SL::Iconv qw(convert);
use Data::Dumper;
use DateTime;
return $self->{trans_id};
}
+sub warnings {
+ my $self = shift;
+
+ if (@_) {
+ $self->{warnings} = [@_];
+ } else {
+ return $self->{warnings};
+ }
+}
+
sub accnofrom {
my $self = shift;
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};
foreach my $column (@csv_columns) {
if (exists $column->{max_length} && $column->{kivi_datev_name} ne 'not yet implemented') {
# check max length
- die "Incorrect lenght of field" if length($row->{ $column->{kivi_datev_name} }) > $column->{max_length};
+ die "Incorrect length 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;
}
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 => ";",
$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;