From 4be32a52cae7fbdb06ea0b8c2d3d03f42f90730e Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Fri, 15 Dec 2017 09:50:44 +0100 Subject: [PATCH] =?utf8?q?DATEV:=20`input=5Fcheck`=20f=C3=BCr=20UStID=20an?= =?utf8?q?=20`formatter`+`valid=5Fcheck`=20angepasst?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Die Kombination aus `formatter`+`valid_check` kann UStIDs richtig behandeln, die Leerzeichen enthalten. Daher muss der vorher laufende `input_check` Leerzeichen ebenfalls ignorieren. Weiterhin muss der `input_check` auch das gleiche Format erlauben, das `valid_check` später auch erlaubt — bezogen auf verschiedene Formate in verschiedenen Ländern. So enhält z.B. der `valid_check` eine Ausnahme für die Schweiz, für die nur erforderlich ist, dass die UStID mit `CH` beginnt. Der `input_check` hingegen hat weiterhin darauf bestanden, dass dahinter zwischen fünf und 13 Wortzeichen kommen. --- SL/DATEV/CSV.pm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/SL/DATEV/CSV.pm b/SL/DATEV/CSV.pm index bc8f1bd01..c06ee7040 100644 --- a/SL/DATEV/CSV.pm +++ b/SL/DATEV/CSV.pm @@ -228,7 +228,12 @@ my @kivitendo_to_datev = ( max_length => 15, type => 'Text', default => '', - input_check => sub { my ($check) = @_; return ($check eq '' || $check =~ m/[A-Z]{2}\w{5,13}/) }, + input_check => sub { + my ($ustid) = @_; + return 1 if ('' eq $ustid); + $ustid =~ s{\s+}{}g; + return ($ustid =~ m/^CH|^[A-Z]{2}\w{5,13}$/); + }, formatter => sub { my ($input) = @_; $input =~ s/\s//g; return $input }, valid_check => sub { my ($ustid) = @_; -- 2.20.1