Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Datensätze mit Sparte Leben werden nicht korrekt geparst #61

Closed
markusneidhart opened this issue Aug 23, 2021 · 6 comments
Closed

Datensätze mit Sparte Leben werden nicht korrekt geparst #61

markusneidhart opened this issue Aug 23, 2021 · 6 comments

Comments

@markusneidhart
Copy link
Contributor

markusneidhart commented Aug 23, 2021

Guten Tag,

mir ist bei folgender Datenkonstellation ein Problem beim Parsing aufgefallen:

Wenn ein GDV-Datensatz für Sparte Leben mit Wagnisart "1" oder "3" geliefert wird, und dabei aber nur die Teilsätze 1, 2, und 6 (Bezugsrechte) in genau dieser Reihenfolge geliefert werden, so macht das Parsing nicht ganz was es soll:

Der Teildatensatz 6 (Bezugsrechte) landet fälschlicherweise im 3. Teildatensatz und wird dadurch auf falsch geparst, da die Felder dann natürlich nicht mehr übereinstimmen.

Ich denke, das hängt wohl mit der Logik zusammen, wie die Teilsätze identifiziert werden:

  • Satz 0220.010.13.1 sieht 3 Teilsätze vor.
  • Die ersten beiden Teilsätze funktionieren korrekt.
  • Wenn dann die Zeile mit richtigem Teildatensatz 6 geparst werden soll, wird geprüft, ob die ersten 7 Felder identisch sind (ist der Fall), anschliessend wird geprüft, ob die Satznummer höher ist als die letzte (6 > 2), was auch der Fall ist. Dadurch wird Teildatensatz 6 als 3. Teildatensatz genommen, was aber falsch ist.

Ich könnte mir vorstellen, dass dieses oder ein ähnliches Problem auch bei anderen Wagnisarten/Sparten ein Problem darstellen könnte (habe ich aber nicht verifiziert, resp. noch keine Daten dazu gefunden).

Mögliche Lösung:

  • Wäre es möglich oder sinnvoll, bei der Prüfung einer Zeile als nächster Teildatensatz nicht nur zu prüfen, ob die Satznummer grösser ist als der letzte gefundene Teilsatz, sondern auch, ob die Nummer denn grösser ist als die Anzahl der erlaubten Teilsätze? Im oberen Beispiel wäre 6 ja sowieso grösser als 3, daher könnte das gar nicht infrage kommen als Teilsatz.
  • Alternativ könnte man wohl auch prüfen, ob die Signatur zu einem anderen Satz passt (0200.010.13.6 hat ja per se eine eigene Satzbeschreibung und käme daher ebenfalls nicht infrage als 3. Teilsatz von 0200.010.13.1).

Beste Grüsse,

Markus

@oboehm
Copy link
Owner

oboehm commented Aug 23, 2021

Hallo Markus,

danke für die Analyse. Ich werde dann mal versuchen, einen Datensatz zu erzeugen, um das Fehlverhalten beim Import zu reproduzieren (oder hast du mir zufällig einen Test-Datensatz, den du weitergeben kannst?).

Wenn ich dich richtig verstanden habe, müsste der fehlerhaften Import mit folgender Konstellation auftreten:

  1. Satz 0220.010.13.1 mit Teildatensatz 1 + 2
  2. danach Satz 0220.010.13.6

mfg,
oli b.

@markusneidhart
Copy link
Contributor Author

markusneidhart commented Aug 24, 2021

Hallo Oli,

ich habe Dir einen Testdatensatz aus einer richtigen Datei gebaut, mit dem Du das erkennen solltest. Siehe Anlage
testcase_0220_010_13.txt. File-Encoding ist CP850/IBM850.

Ja, genau, das ist korrekt so, wie Du es beschrieben hast. Grüsse,

Markus

@oboehm
Copy link
Owner

oboehm commented Aug 24, 2021

Hallo Markus,
danke für den Testdatensatz. Eine Frage noch - welche Version verwendest du, v4 oder v5 (mit v5 besteht das Problem auch)?

@markusneidhart
Copy link
Contributor Author

Hallo Oli,

ich verwende 5.0.0, da zumindest besteht das Problem (mit v4 hab ichs nicht versucht).

@oboehm
Copy link
Owner

oboehm commented Aug 29, 2021

So, jetzt wird zusätzlich noch die Satznummer herangezogen, ob es vielleicht noch weitere Datensätze des gleichen Typs gibt. Leider waren die Änderungen etwas umfangreicher, so dass es jetzt eine v5.1.0 geworden ist, die soeben ins zentrale Maven-Repo hochgeladen wurde.
Ich denke, morgen dürfte diese Version dann allgemein verfügbar sein. Bitte mal ausprobieren, ob's damit funktioniert.

@markusneidhart
Copy link
Contributor Author

Hallo Oli,

danke, ich habs im Projekt gleich mal getestet, und es funktioniert gut so mit Version 5.1.0. Ich erlaube mir, das Issue zu schliessen. Besten Dank für den Fix. Grüsse,

Markus

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants