phpFinTS icon indicating copy to clipboard operation
phpFinTS copied to clipboard

Überlanger V-Zweck?

Open kvogelsa opened this issue 5 years ago • 10 comments

Hallo nochmal. Ich habe ein seltsames Problem. Die KSK Köln liefert neuerdings mitunter ellenlange V-Zwecke., zum Beispiel beim Monatsabschluss.

Im Online-Banking wird das als eine Buchung dargestellt.

Wenn ich die Kontoauszüge aber mit $getStatement = GetStatementOfAccount::create($this->getSepaAccount(), $from, $ $this->_FinTsClass->execute($getStatement); und schlussendlich mit $transactions = $statement->getTransactions(); abrufe, wird der V-Zweck "umgebrochen". Heißt: getMainDescription(), getDescription1() und getDescription2 hören in der Transaction mit dem langen V-Zweck einfach auf und es wird eine zweite Transaction erzeugt mit Amount = 0.00, der die Fortsetzung des V-Zweck enthält.

Hat das seinen Grund in FinTS oder in phpFinTS? Und kann ich das abfangen?

Danke!

kvogelsa avatar Apr 06 '20 13:04 kvogelsa

Kannst du evtl. die MT490 Rohdaten des Abrufs zur Verfügung stellen?

Also $statement->getRawMT940()

ampaze avatar Apr 06 '20 16:04 ampaze

Die persönliche Daten habe ich mit $-Zeichen ersetzt. Womöglich habe ich auch ein paar Meta-Daten erwischt. Aber die Struktur dürfte klar sein. Auch in den Rohdaten scheinen die 0,00 EUR Einträge vorhanden zu sein.

:20:STARTUMSE

:25:37050299/0000$$$$$$

:28C:00000/001

:60F:D200227EUR$$$$$$$

:61:2002280228DR$$$$$$N023NONREF

:86:805?00ABSCHLUSS?106666?20Abrechnung 27.02.2020?21Information 

zur Abrechnung?22Kontostand am 27.02.2020?$$$$$-?24 ------

--------?25Abrechnungszeitraum vom 01.?2602.2020 bis 27.02.2020?2

7$$$$$$-?28Berichtigung der Abrechnung?29 Vorpe

riode?60$$$$$ bis?

6227.02.2020

:61:2002280228DR0,00N023NONREF

:86:805?00ABSCHLUSS?106666?20$$$$$$$Berichtigung der Abrechnung?26 Vorperiode?27$$$$$

:61:2002280228DR0,00N023NONREF

:86:805?00ABSCHLUSS?106666?20Entgelte vom 31.01.2020 bis?21 27.02

.2020 $$$-?22Kontof�hrung $$$$$ Geldautomat $

:61:2002280228DR0,00N023NONREF

:86:805?00ABSCHLUSS?106666?20Gutschrift $$$$$ -------

-------?22Abrechnung 27.02.2020 vor?23Steuer $$$$-?24Umsatzsteu

er 19% auf $$$$?25- USt. $$$-?26 --------------?27Abrechnung 

27.02.2020 $$$?280-?29Kontostand/Rechnungsabschlu?60ss am 27.02

.2020 $$$$$$$?61-

:61:2002280228DR0,00N023NONREF

:86:805?00ABSCHLUSS?$$$$$?20Rechnungsnummer. $$$$$

kvogelsa avatar Apr 07 '20 07:04 kvogelsa

Wenn ich das durch den Parser laufen lasse, werden mir 5 Transaktionen angezeigt. Wie viele sollten es deiner Meinung nach sein?

Die erste hat zumindest in der von dir geposteten Darstellung genau 6 Zeilen hinter :86: bevor sie abbricht. Und hier steht, dass mehr nicht geht. Möglicherweise trickst die Bank deshalb?

Was bedeuten diese ?26?

Unabhängig von diesem Bug: Im geparsten SVWZ steht sowas wie "Abrechnung 27.02.2020 vorSteuer". Da fehlt eine Leerstelle. Mir ist das schon öfter aufgefallen, dass manchmal der Whitespace kaputt ist. Ist das ein generelles Problem mit MT940, oder ist unser Parser kaputt?

Philipp91 avatar Apr 10 '20 19:04 Philipp91

Die erste hat zumindest in der von dir geposteten Darstellung genau 6 Zeilen hinter :86: bevor sie abbricht. Und hier steht, dass mehr nicht geht. Möglicherweise trickst die Bank deshalb?

Jetzt wo du es sagst, das wird es sein. Da es 0er Buchungen eigentlich nicht geben kann, und es im Kontoauszugdruck dann einigermaßen richtig aussieht. Also man könnte es rein theoretisch einbauen, dass 0 Euro Buchungen der vorherigen Buchung zugeschlagen werden.

Was bedeuten diese ?26?

26 ist die sechste Zeile á 27 Zeichen des Verwendungszwecks. Siehe https://www.kontopruef.de/mt940s.shtml

Im geparsten SVWZ steht sowas wie "Abrechnung 27.02.2020 vorSteuer". Da fehlt eine Leerstelle. Mir ist das schon öfter aufgefallen, dass manchmal der Whitespace kaputt ist. Ist das ein generelles Problem mit MT940, oder ist unser Parser kaputt?

Es ist nicht definiert und auch nicht feststellbar ob nach einer voll gefüllten Zeile ein Leerzeichen kommt oder nicht. Also hat man entweder mal ein Leerzeichen zuwenig oder mal eins zuviel mitten in einem Wort. Das Problem wird verschlimmert, wenn die Verwendungszweck von der Initiierenden Bank auf Art und Weise X auf die Zeilen aufgeteilt wird und von der Empfängerbank auf Art und Weise Y. Mit anderen Wort MT490 war nie dafür gedacht wie es hier verwendet wird.

Das sieht man auch daran, dass es selbst im XML CAMT Format zu solchen Fällen kommt, es also schon bei der Bank so ankommt.

ampaze avatar Apr 11 '20 09:04 ampaze

Da es 0er Buchungen eigentlich nicht geben kann, und es im Kontoauszugdruck dann einigermaßen richtig aussieht. Also man könnte es rein theoretisch einbauen, dass 0 Euro Buchungen der vorherigen Buchung zugeschlagen werden.

Zumindest bei meinen Banken gibt es 0-Euro-Buchungen, die für sich alleine stehen. Ich bekomme regelmäßig stolze 0,00€ als Zinsen überwiesen (denn auf den meisten Girokonten gibt es ja mittlerweile nur noch 0% Zinsen). Auch das ist dann so ein "Abschluss" wie im Beispiel oben.

Philipp91 avatar Apr 11 '20 09:04 Philipp91

Da es 0er Buchungen eigentlich nicht geben kann, und es im Kontoauszugdruck dann einigermaßen richtig aussieht. Also man könnte es rein theoretisch einbauen, dass 0 Euro Buchungen der vorherigen Buchung zugeschlagen werden.

Zumindest bei meinen Banken gibt es 0-Euro-Buchungen, die für sich alleine stehen. Ich bekomme regelmäßig stolze 0,00€ als Zinsen überwiesen (denn auf den meisten Girokonten gibt es ja mittlerweile nur noch 0% Zinsen). Auch das ist dann so ein "Abschluss" wie im Beispiel oben.

Stimmt wohl 😁

@kvogelsa Vlt kann die KSK ja XML Umsatzabruf?

ampaze avatar Apr 11 '20 09:04 ampaze

Danke für Eure Kommentare. Ich werde den XML Abruf mal testen.

Wäre der XML-Abruf generell vorzuziehen? Und: Deiner Frage entnehme ich, dass nicht jede Bank ihn unterstützt, richtig?

kvogelsa avatar Apr 14 '20 11:04 kvogelsa

Wäre der XML-Abruf generell vorzuziehen? Und: Deiner Frage entnehme ich, dass nicht jede Bank ihn unterstützt, richtig?

Aus meiner Sicht auf jeden Fall vorzuziehen, da die Daten dort strukturiert übermittelt werden und nicht in den Verwendungszweck reingeprügelt werden wie bei MT490.

Unterstützen leider nicht alle Banken. 😞

ampaze avatar Apr 14 '20 12:04 ampaze

Ich habe gerade den XML-Abruf versucht. (einfach statt "\Fhp\Action\GetStatementOfAccount" "\Fhp\Action\GetStatementOfAccountXML" verwendet).

Das brachte mir ein

"status": 500,
"detail": "Invalid response from server"

ein. Kann ich daraus schließen, dass die KSK XML nicht unterstützt?

kvogelsa avatar Apr 15 '20 15:04 kvogelsa

Wenn die Bank es grundsätzlich nicht unterstützt, dann sollte kommen:

The bank (or the given account/user combination) does not allow this type of request.

Status 500 klingt nach Internal Server Error bei der Bank? Kannst du die Raw Response von der Bank angucken?

ampaze avatar Apr 15 '20 19:04 ampaze