Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 50e99be3

Von Moritz Bunkus vor etwa 4 Jahren hinzugefügt

  • ID 50e99be3f71714e54a62c431b644aeeab3773517
  • Vorgänger 671a5253
  • Nachfolger 7520cd58

MT940: Zeile 61: Felder »Buchungsdatum« und »Währungsart« sind optional

Unterschiede anzeigen:

SL/MT940.pm
use Data::Dumper;
use DateTime;
use SL::DB::Default;
use Encode;
use File::Slurp qw(read_file);
......
my ($local_bank_code, $local_account_number, %transaction, @transactions, @lines);
my $line_number = 0;
my $default_currency = substr(SL::DB::Default->get_default_currency, -1, 1);
my $store_transaction = sub {
if (%transaction) {
......
$local_bank_code = $1;
$local_account_number = $2;
} elsif ($line->[0] =~ m{^:61: (\d{2}) (\d{2}) (\d{2}) (\d{2}) (\d{2}) (C|D|RC|RD) (.) (\d+) (?:, (\d*))? N (.{3}) (.*)}x) {
# 1 2 3 4 5 6 7 8 9 10 11
} elsif ($line->[0] =~ m{^:61: (\d{2}) (\d{2}) (\d{2}) (\d{4})? (C|D|RC|RD) ([a-zA-Z]?) (\d+) (?:, (\d*))? N (.{3}) (.*)}x) {
# 1 2 3 4 5 6 7 8 9 10
# :61:2008060806CR952,N051NONREF
$store_transaction->();
......
my $valuta_year = $1 * 1 + 2000;
my $valuta_month = $2;
my $valuta_day = $3;
my $trans_month = $4;
my $trans_day = $5;
my $debit_credit = $6;
my $currency = $7;
my $amount1 = $8;
my $amount2 = $9 || 0;
my $transaction_code = $10;
my $reference = $11;
my $trans_month = $4 ? substr($4, 0, 2) : $valuta_month;
my $trans_day = $4 ? substr($4, 2, 2) : $valuta_day;
my $debit_credit = $5;
my $currency = $6 || $default_currency;
my $amount1 = $7;
my $amount2 = $8 || 0;
my $transaction_code = $9;
my $reference = $10;
my $valuta_date = DateTime->new_local(year => $valuta_year, month => $valuta_month, day => $valuta_day);
my $trans_date = DateTime->new_local(year => $valuta_year, month => $trans_month, day => $trans_day);

Auch abrufbar als: Unified diff