Unterstützung #302
Von Jan Büren vor etwa 7 Jahren aktualisiert
Ich hab immer wieder mal doppelte Einträge in der Tabelle bank_transactions.
Hintergrund ist die Prüfung auf Verwendungszweck (purpose), die prüft 1:1 auf den exakten Inhalt des Verwendungszwecks.
Leider sind die umgebenden Parameter nicht so eindeutig und es kommt immer wieder mal vor, dass das HBCI-Programm und/oder aqbanking mal ein Leerzeichen mehr oder weniger beim Konvertieren spendiert:
<pre>
# purpose may slightly differ, depending on not yet known parameter (aqbanking?, version upgrade hbci program?)
# mainly whitespace are added or deleted, compare:
# BIC:COBADEFFXXXIBAN:DE66200400000131029100Datum: 08.05.17 Zeit: 11:20UFT4004
# BIC:COBADEFFXXXIBAN:DE66200400000131029100Datum: 08.05.17 Zeit: 11:20UFT 4004
</pre>
Ich hab jetzt die Prüfung auf den Verwendungszweck beim Import separat gesetzt und ignoriere Whitespaces komplett:
SL/Controller/CsvImport/BankTransaction.pm
<pre>
foreach my $bt (@{ SL::DB::Manager::BankTransaction->get_all(query =>[ remote_account_number => $object->remote_account_number, transdate => $object->transdate, amount => $object->amount] ) }) {
# we have a match on date, account_number AND amount. Probably already imported
my $import_purpose = $object->purpose;
my $bt_purpose = $bt->purpose;
$import_purpose =~ s/ //g;
$bt_purpose =~ s/ //g;
if ($import_purpose eq $bt_purpose) {
push(@{$entry->{errors}}, $::locale->text('Skipping due to existing bank transaction in database'));
}
}
</pre>
Hat jmd. vielleicht eine andere Idee?
}
</pre>
Hintergrund ist die Prüfung auf Verwendungszweck (purpose), die prüft 1:1 auf den exakten Inhalt des Verwendungszwecks.
Leider sind die umgebenden Parameter nicht so eindeutig und es kommt immer wieder mal vor, dass das HBCI-Programm und/oder aqbanking mal ein Leerzeichen mehr oder weniger beim Konvertieren spendiert:
<pre>
# purpose may slightly differ, depending on not yet known parameter (aqbanking?, version upgrade hbci program?)
# mainly whitespace are added or deleted, compare:
# BIC:COBADEFFXXXIBAN:DE66200400000131029100Datum: 08.05.17 Zeit: 11:20UFT4004
# BIC:COBADEFFXXXIBAN:DE66200400000131029100Datum: 08.05.17 Zeit: 11:20UFT 4004
</pre>
Ich hab jetzt die Prüfung auf den Verwendungszweck beim Import separat gesetzt und ignoriere Whitespaces komplett:
SL/Controller/CsvImport/BankTransaction.pm
<pre>
foreach my $bt (@{ SL::DB::Manager::BankTransaction->get_all(query =>[ remote_account_number => $object->remote_account_number, transdate => $object->transdate, amount => $object->amount] ) }) {
# we have a match on date, account_number AND amount. Probably already imported
my $import_purpose = $object->purpose;
my $bt_purpose = $bt->purpose;
$import_purpose =~ s/ //g;
$bt_purpose =~ s/ //g;
if ($import_purpose eq $bt_purpose) {
push(@{$entry->{errors}}, $::locale->text('Skipping due to existing bank transaction in database'));
}
}
</pre>
Hat jmd. vielleicht eine andere Idee?
}
</pre>