Revision 8bb3b201
Von Moritz Bunkus vor etwa 2 Jahren hinzugefügt
- ID 8bb3b201b2a80784f0a503ab9f4af7d91aafcc5b
- Vorgänger b6fada0c
SL/MT940.pm | ||
---|---|---|
}
|
||
|
||
sub _join_entries_sepa {
|
||
my ($parts) = @_;
|
||
my ($parts, $separator) = @_;
|
||
|
||
my $line = '';
|
||
|
||
foreach my $field (grep { $_ } map { $parts->{$_} } (20..29)) {
|
||
if (($line ne '') && ($field =~ m{^[A-Z]+\+})) {
|
||
$line .= ' ';
|
||
|
||
} elsif ($line ne '') {
|
||
$line .= $separator;
|
||
}
|
||
|
||
$line .= $field;
|
||
}
|
||
|
||
... | ... | |
}
|
||
|
||
sub _join_entries_austria {
|
||
my ($parts) = @_;
|
||
my ($parts, $separator) = @_;
|
||
|
||
return _join_entries($parts, 20, 23, ' ');
|
||
return join ' ',
|
||
grep { $_ }
|
||
(_join_entries($parts, 20, 21, $separator),
|
||
_join_entries($parts, 22, 23, $separator));
|
||
}
|
||
|
||
sub parse {
|
||
... | ... | |
}
|
||
}
|
||
|
||
my $sub_field_separator = $params{space_in_reference} ? ' ' : '';
|
||
|
||
foreach my $line (@lines) {
|
||
# AT MT940 has the format :25://AT20151/00797453990/EUR
|
||
# DE MT940 has the format :25:BLZ/Konto
|
||
... | ... | |
my $is_sepa = !$is_austria && ($code =~ m{^1});
|
||
my %parts = map { ((substr($_, 0, 2) // '0') * 1 => substr($_, 2)) } split quotemeta($separator), $rest;
|
||
|
||
$transaction{purpose} = $is_sepa ? _join_entries_sepa(\%parts)
|
||
: $is_austria ? _join_entries(\%parts, 20, 23, ' ')
|
||
: _join_entries(\%parts, 20, 29);
|
||
$transaction{purpose} = $is_sepa ? _join_entries_sepa(\%parts, $sub_field_separator)
|
||
: $is_austria ? _join_entries_austria(\%parts, $sub_field_separator)
|
||
: _join_entries(\%parts, 20, 29, $sub_field_separator);
|
||
$transaction{remote_name} = _join_entries(\%parts, 32, 33);
|
||
$transaction{remote_bank_code} = $parts{30};
|
||
$transaction{remote_account_number} = $parts{31};
|
Auch abrufbar als: Unified diff
MT940: konfigurierbare Leerzeichen in Unterfeldern des Verwendunszwecks