Project

General

Profile

Feature #223

Stabile Reihenfolge bei Buchungen / ausfiltern von vorgemerkten Buchungen bei "export"

Added by alexm 3 months ago. Updated about 2 months ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
09/08/2020
Due date:
% Done:

0%

Betriebssystem:
Linux
AqBanking-Version:
6.0.1
Anwendung:
aqbanking-cli
Version der Anwendung:

Description

Beim Weiterentwickeln von mbank, einem PHP tool welches AqBanking-CLI nutzt um Buchungen in einer SQL Tabelle zu schreiben, sind wir auf folgendes Problem gestoßen:

Hintergrund: Leider scheinen die Bankbuchungen ja keine Primärschlüssel zu haben um diese eindeutig zu unterscheiden.
Die Software mbank macht hier die Annahme, dass die Buchungen von der Bank immer in der gleichen Reihenfolge kommen und nummeriert diese dann basierend auf dem Datum durch um einen Primärschlüssel zu bilden.

Siehe hier für Interessierte: https://github.com/Mestrona/mbank/blob/84178dc18a37a64351f44c935cfb168dd95315e9/app/Account.php#L123

Nun scheint das nicht immer zu funktionieren - wir vermuten auf Grund von ungebuchten Buchungen (sind uns aber auch nicht sicher)

Laut Handbuch gibt es bei "aqbanking-cli listrans" den Switch "-S accepted,rejected" um nur gebuchte und zurückgewiesene Buchungen zu aufzulisten.

Wir würden hoffen, dass diese dann in der Reihenfolge stabil sind und das zuweisen eines Primärschlüssels wieder funktioniert.

Siehe auch https://github.com/Mestrona/mbank/issues/3

Nun drei konkrete Fragen:

1. Wir nutzen "aqbanking-cli export", statt listrans - wie kann hier auf accepted,rejected gefiltert werden? Einen entsprechenden Parameter scheint es hier nicht zu geben.
2. Hat jemand Erfahrungswerte ob die Annahme oben korrekt ist, dass Banken die Transaktionen in einer festen Reihenfolge zurückliefern, zumindest wenn man nur die gebuchten betrachtet.
3. Oder gibt es eine andere Möglichkeit die Transaktionen eindeutig zu identifizieren und nicht doppelt zu speichern?

History

#1 Updated by alexm 3 months ago

  • Description updated (diff)

#2 Updated by ipwizard 3 months ago

Selbst wenn zu 2) Erfahrungswerte vorliegen, würde ich nicht darauf bauen, dass dem auch in Zukunft so ist. Deshalb haben wir in KMyMoney zu 3) das so gelöst, dass wir einen Hash über die Daten (Buchungsdatum, Zahler, Verwendungszweck, Betrag, ...) bilden und diesen als Primärschlüssel verwenden. Auf diesem Hash beruht die Erkennung von Duplikaten. Das klappt seit Jahren prima und macht gelegentlich nur Probleme, wenn die Bank der Meinung ist, das Format der dem Hash zu Grunde liegenden Daten zu ändern und man Transaktionen erneut erhält. Das muss man dann mal manuell aufräumen.

Sollte der Hash zweimal in einer Abfrage vorkommen, dann ist am gleichen Tag vom gleichen Zahler die gleiche Buchung auch zweimal ausgeführt worden und die Reihenfolge damit eh egal. In dem Fall hängen wir übrigens einfach eine laufende Nummer an den Hash.

#3 Updated by martin 3 months ago

Moin,

also wenn Du Umsaetze von der Bank abrufst, dann solltest Du bei listtrans nach dem transactionType filtern (siehe Ausgabe von aqbanking-cli listtrans --help).

Hintergrund ist, dass aqbanking ab Version 6 nur noch eine einzelne Liste mit Umsaetze, gebuchten Umsaetzen, Ueberweisunge und Lastschriften verwendet, weil das die Arbeit mit Im-/Exportern erheblich vereinfacht. Du musst dann aber halt nach den entsprechenden Infos filtern lassen.

Fuer normale Umsaetze waere der entsprechende Typ statement, fuer vorgemerkte Umsaetze waere das notedStatement etc.

Also z.B. so:

  aqbanking-cli listtrans -c DATEI.CTX -tt statement

Aehnliches gilt auch fuer das Kommando "export".

Gruss
Martin

#4 Updated by alexm 3 months ago

Okay, danke euch beiden, das ist sehr hilfreich.

Verständnisfrage an Martin, die mir aus dem Handbuch nicht klar wird.

Es gibt ja die Types

statement, notedStatement, transfer, debitNote,
standingOrder, internalTransfer

Wenn man alle tatsächlichen Buchungen auf dem Konto will, müsste man dann nicht nach allem außer notedStatement Filtern?
Wenn ja, kann man die Types irgendwie als Liste angeben / Kommagetrennt o.ä. angeben oder kann man den Filter negieren?

Viele Grüße,

Alex

#5 Updated by alexm 3 months ago

ich gehe aktuell davon aus, dass man bei Giro Konten nur "statement" braucht.

Das Ticket kann also geschlossen werden.

Danke nochmals :)

#6 Updated by martin about 2 months ago

  • Status changed from New to Closed

Also available in: Atom PDF