projects
/
kivitendo-erp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
epic-ts
[kivitendo-erp.git]
/
SL
/
MT940.pm
diff --git
a/SL/MT940.pm
b/SL/MT940.pm
index
2fbbad6
..
2a97e5e
100644
(file)
--- a/
SL/MT940.pm
+++ b/
SL/MT940.pm
@@
-24,7
+24,7
@@
sub _join_entries {
}
sub parse {
}
sub parse {
- my ($class, $file_name) = @_;
+ my ($class, $file_name
, %params
) = @_;
my ($local_bank_code, $local_account_number, %transaction, @transactions, @lines);
my $line_number = 0;
my ($local_bank_code, $local_account_number, %transaction, @transactions, @lines);
my $line_number = 0;
@@
-37,15
+37,25
@@
sub parse {
}
};
}
};
+ my ($active_field);
foreach my $line (read_file($file_name)) {
chomp $line;
foreach my $line (read_file($file_name)) {
chomp $line;
- $line = Encode::decode('UTF-8', $line);
+ $line = Encode::decode(
$params{charset} //
'UTF-8', $line);
$line =~ s{\r+}{};
$line_number++;
$line =~ s{\r+}{};
$line_number++;
+ my $current_field;
+ if ($line =~ m{^:(\d+[a-z]*):}i) {
+ $current_field = $1;
+ $active_field = $1;
+ }
+
if (@lines && ($line =~ m{^\%})) {
$lines[-1]->[0] .= substr($line, 1);
if (@lines && ($line =~ m{^\%})) {
$lines[-1]->[0] .= substr($line, 1);
+ } elsif (@lines && ($active_field eq '86') && !$current_field) {
+ $lines[-1]->[0] .= $line;
+
} else {
push @lines, [ $line, $line_number ];
}
} else {
push @lines, [ $line, $line_number ];
}