DATEV: `input_check` für UStID an `formatter`+`valid_check` angepasst
authorMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 15 Dec 2017 08:50:44 +0000 (09:50 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 15 Dec 2017 10:55:08 +0000 (11:55 +0100)
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

index bc8f1bd..c06ee70 100644 (file)
@@ -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) = @_;