Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 8bb3b201

Von Moritz Bunkus vor mehr als 1 Jahr hinzugefügt

  • ID 8bb3b201b2a80784f0a503ab9f4af7d91aafcc5b
  • Vorgänger b6fada0c

MT940: konfigurierbare Leerzeichen in Unterfeldern des Verwendunszwecks

Unterschiede anzeigen:

SL/MT940.pm
22 22
}
23 23

  
24 24
sub _join_entries_sepa {
25
  my ($parts) = @_;
25
  my ($parts, $separator) = @_;
26 26

  
27 27
  my $line = '';
28 28

  
29 29
  foreach my $field (grep { $_ } map  { $parts->{$_} } (20..29)) {
30 30
    if (($line ne '') && ($field =~ m{^[A-Z]+\+})) {
31 31
      $line .= ' ';
32

  
33
    } elsif ($line ne '') {
34
      $line .= $separator;
32 35
    }
36

  
33 37
    $line .= $field;
34 38
  }
35 39

  
......
37 41
}
38 42

  
39 43
sub _join_entries_austria {
40
  my ($parts) = @_;
44
  my ($parts, $separator) = @_;
41 45

  
42
  return _join_entries($parts, 20, 23, ' ');
46
  return join ' ',
47
    grep { $_ }
48
    (_join_entries($parts, 20, 21, $separator),
49
     _join_entries($parts, 22, 23, $separator));
43 50
}
44 51

  
45 52
sub parse {
......
80 87
    }
81 88
  }
82 89

  
90
  my $sub_field_separator = $params{space_in_reference} ? ' ' : '';
91

  
83 92
  foreach my $line (@lines) {
84 93
    # AT MT940 has the format  :25://AT20151/00797453990/EUR
85 94
    # DE MT940 has the format  :25:BLZ/Konto
......
140 149
        my $is_sepa    = !$is_austria && ($code =~ m{^1});
141 150
        my %parts      = map { ((substr($_, 0, 2) // '0') * 1 => substr($_, 2)) } split quotemeta($separator), $rest;
142 151

  
143
        $transaction{purpose}               = $is_sepa    ? _join_entries_sepa(\%parts)
144
                                            : $is_austria ? _join_entries(\%parts, 20, 23, ' ')
145
                                            :               _join_entries(\%parts, 20, 29);
152
        $transaction{purpose}               = $is_sepa    ? _join_entries_sepa(\%parts, $sub_field_separator)
153
                                            : $is_austria ? _join_entries_austria(\%parts, $sub_field_separator)
154
                                            :               _join_entries(\%parts, 20, 29, $sub_field_separator);
146 155
        $transaction{remote_name}           = _join_entries(\%parts, 32, 33);
147 156
        $transaction{remote_bank_code}      = $parts{30};
148 157
        $transaction{remote_account_number} = $parts{31};

Auch abrufbar als: Unified diff