Revision 8bb3b201
Von Moritz Bunkus vor mehr als 1 Jahr hinzugefügt
- ID 8bb3b201b2a80784f0a503ab9f4af7d91aafcc5b
- Vorgänger b6fada0c
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
MT940: konfigurierbare Leerzeichen in Unterfeldern des Verwendunszwecks