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

Negativer Kurs beim Abrufen von DKB #64

Closed
sicherha opened this issue Aug 18, 2017 · 2 comments
Closed

Negativer Kurs beim Abrufen von DKB #64

sicherha opened this issue Aug 18, 2017 · 2 comments

Comments

@sicherha
Copy link
Contributor

Ich habe ein Depot bei der DKB mit genau einer Kauforder. Sagen wir mal, die Order umfasst 42 Anteile mit Kurs 123,456 €.

Beim Abrufen bekomme ich eine Exception um die Ohren geworfen: "Der Kurs muss immer positiv sein."

Wenn ich mich mit jdb reinhänge, sehe ich Folgendes:

bg-task:Worker[1] print getAnzahl()
 getAnzahl() = "42"
bg-task:Worker[1] print getKurs()
 getKurs() = "-123.4560000000000123456789"

Die Anzahl passt also, aber der Kurs ist genau umgedreht!

@sicherha
Copy link
Contributor Author

Hier ein Stack-Trace und die Ausgabe des Ergebnisses des HBCI-Abrufs:

bg-task:Worker[1] where
  [1] de.open4me.depot.datenobj.server.UmsatzImpl.store (UmsatzImpl.java:234)
  [2] de.open4me.depot.abruf.utils.Utils.addUmsatz (Utils.java:162)
  [3] de.open4me.depot.hbcijobs.HBCIDepotUmsatzJob.parseDepotUmsatz (HBCIDepotUmsatzJob.java:154)
  [4] de.open4me.depot.hbcijobs.HBCIDepotUmsatzJob.markExecuted (HBCIDepotUmsatzJob.java:102)
  [5] de.willuhn.jameica.hbci.server.hbci.AbstractHBCIJob.markExecutedInternal (AbstractHBCIJob.java:326)
  [6] de.willuhn.jameica.hbci.server.hbci.AbstractHBCIJob.handleResult (AbstractHBCIJob.java:267)
  [7] de.willuhn.jameica.hbci.synchronize.hbci.HBCISynchronizeBackend$HBCIJobGroup.sync (HBCISynchronizeBackend.java:339)
  [8] de.willuhn.jameica.hbci.synchronize.AbstractSynchronizeBackend$Worker.run (AbstractSynchronizeBackend.java:396)
  [9] de.willuhn.jameica.gui.GUI$7.run (GUI.java:1,057)
bg-task:Worker[1] up 5
bg-task:Worker[6] print result
 result = "Entry #0:
timestamp: Fri Aug 18 09:10:11 CEST 2017
depot: Wertpapier-Depot HANS DAMPF 123456789 BLZ 12030000 (Deutsche Kreditbank Berlin) [DE] (EUR)
====> Instrument 0:
isin: XX1234567890
wkn: XYZ123
name: WERTVOLLE WERTPAPIERE AUS WERTVOLLEM PAPIER 
startSaldo: 42  Stück
endSaldo: null
preis: 123.456 EUR 
preisdatum: Tue Aug 01 00:00:00 CEST 2017
--> Transaction 0:
kundenreferenz: NONREF
anzahl: 42  Stück
betrag: -5185.15 EUR
stueckzinsen: null
stueckzins_tage: 0
transaction_indicator: 1: Settlement/Clearing
richtung: 2: Erhalt
bezahlung: 2: frei
ccp_eligibility: false
datum: Tue Aug 01 00:00:00 CEST 2017
datum_valuta: Fri Aug 18 00:00:00 CEST 2017
storno: false
gegenpartei: null
freitext_details: Kauf
000001234567890








<--
<====


rest:"

Der Kurs wird in de.open4me.depot.hbcijobs.HBCIDepotUmsatzJob.parseDepotUmsatz (Frame 3) folgendermaßen berechnet: einzelbetrag = gesamtbetrag / t.anzahl.getValue().doubleValue();
Da gesamtbetrag eine negative Zahl ist, ist das Ergebnis ein negativer einzelbetrag.

Dieser negative Betrag kommt offenbar schon per HBCI so rein!

Die simpelste Lösung wäre, dass man das Minuszeichen ignoriert und einfach mit dem Absolutwert weiterrechnet. Ein Kauf oder Verkauf mit negativem Betrag sollte ja in der Realität nie auftreten können, oder?

@sicherha
Copy link
Contributor Author

Der obige Commit löst mein Problem.

Dass hier mit Geldbeträgen in Fließkommadarstellung hantiert wird, macht mir zwar ein bisschen Angst - aber das ist ja hoffentlich nur für Anzeigezwecke.

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