Project

General

Profile

Bug #82

Swift Fehler

Added by whamann about 2 months ago. Updated 10 days ago.

Status:
Resolved
Priority:
High
Category:
AqBanking
Start date:
09/28/2019
Due date:
Betriebssystem:
Linux
AqBanking-Version:
5.99.43
Anwendung:
aqbanking-cli
Version der Anwendung:

Description

sichtbares Ergebnis: die ctx Datei enthält nach dem Umsatzabruf am Ende ein paar Einträge, die zeitlich überhaupt nicht passen.
Bei Loglevel Info sieht man, dass nach den Swift Dokumenten 1 2 3 ... am Ende nochmal ein Dokument 1 importiert wird
Ich habe dann versucht, die MT940 Teile aus dem Log zu einem Dokument zusammenzusetzen und dann mit
aqbanking-cli import --importer=swift --profile=swift-mt940
auszuwerten. Ergebnis: in der Version 5 fehlerfrei, und auch auf den ersten Blick in der richtigen Reihenfolge; in der neuen Version Abbruch.
Ich habe dann versucht, den Fehler einzugrenzen; das (erste?) Problem ist in der kleineren Datei enthalten und könnte ein einzelnes Minuszeichen am Ende eines :86: Eintrags sein

History

#1 Updated by martin about 2 months ago

  • File deleted (spk.txt)

#2 Updated by martin about 2 months ago

  • File deleted (spk-part.txt)

#3 Updated by martin about 2 months ago

  • Status changed from New to In Progress
  • Priority changed from Normal to High

Moin,

ich habe die Daten mal heruntergeladen und hier sicherheitshalber geloescht.

Eigentlich ist nur schwer vorstellbar, wie das erste Dokument noch einmal eingelesen werden soll... Dazu muesste ja zurueckgespult werden... Ich schaue mir das mal an.

Gruss
Martin

#4 Updated by whamann about 2 months ago

Hallo Martin,

ichhabe mir inzwischen mal den MT940 in der HBCI Spec durchgelesen... Ein Abschluss mit - kann eigentlich nur am Ende (also nach :62x:) stehen, also wäre das Minuszeichen eine Fortsetzungszeile. Auf der anderen Seite darf am Anfang der Zeile kein Minuszeichen oder Doppelpunkt als Teil eines Feldinhalts stehen; das macht die Spasskasse also nicht ganz richtig.
Und niemand hat sich Gedanken über einen Escape Mechanismus gemacht - was soll die Bank tun, wenn der schlaue Auftraggeber einen Verwendungszweck angibt, in dem z.B. ein :61: eingestreut ist.

Viele Grüsse
Wolfgang

#5 Updated by martin about 2 months ago

Moin,

die Originaldaten sind ja okay, dass die ausgeschnittenen Daten bei Dir nicht funktionieren, ignoriere ich erst mal, denn bei mir kann ich spk-part.txt auch einlesen ohne Absturz.

Die Dateimenge ist einfach zu gross, um hier jetzt durch jede Transaktion zu gehen. Was Du aber mal machen koenntest: Rufe die Daten noch einmal genauso ab, wie Du das beim letzten Mal gemacht hast, setze aber vorher die Umgebungsvariable "set AQHBCI_LOGBOOKED 1"

Das sollte Dir waehrend des Umsatzabrufes die Datei "/tmp/booked.mt" erzeugen. Das sind die Daten, die AqBanking parsen will. Diese Daten muessten wir uns dann mal ansehen.

Ich kann mir naemlich nicht so recht vorstellen, dass der Parser irgendwas doppelt einliest, weil er dazu wie gesagt zurueckspulen muesste, und ich wuesste nicht, wo das passieren soll. Also muessen wir erst mal die Ausgangsdaten pruefen.

Daten bitte nur an mich direkt mailen, nicht hier posten.

Gruss
Martin

#6 Updated by martin about 2 months ago

Okay, danke, ich bin da dran.

Gruss
Martin

#7 Updated by martin about 2 months ago

  • Category set to AqBanking

#8 Updated by whamann 11 days ago

  • AqBanking-Version set to 5.99.43
  • Betriebssystem Linux added
  • Anwendung aqbanking-cli added

Hallo Martin,

mit diesem Patch funktioniert es wieder....

--- src/libs/plugins/parsers/swift/swift.c.orig 2019-11-07 14:10:09.358778648 0100
+
+ src/libs/plugins/parsers/swift/swift.c 2019-11-09 08:52:32.360919059 +0100
@ -508,7 +508,10 @
}

/* check whether the line starts with a ":" or "-" /
- if (buffer[0]=='-' && buffer[1]==0) {
+ // die Spasskasse hat in ihren eigenen Nachrichten (Spesenabrechnung) ein - am Zeilenende,
+ // das ggf umgebrochen wird.
+ if ((GWEN_Buffer_GetUsedBytes(lbuf)<4 || strncasecmp(GWEN_Buffer_GetStart(lbuf), ":86:", 4) !=0) &&
+ buffer[0]=='-' && buffer[1]==0) {
/
it does, so the buffer contains the next line, go handle the * previous line */
DBG_DEBUG(AQBANKING_LOGDOMAIN, "End of doc reached");

Viele Grüsse
Wolfgang Hamann

#9 Updated by martin 10 days ago

  • Status changed from In Progress to Resolved

Danke, ist im GIT.

Gruss
Martin

Also available in: Atom PDF