Erstellt vor 4 Jahren

Zuletzt geändert vor 4 Jahren

#1487 closed Fehler (fixed)

Wechselkurs wird falsch ausgelesen

Erstellt von: info@… Verantwortlicher: p.reetz@…
Priorität: normal Meilenstein:
Komponente: kivitendo ERP Version: 2.6.1
Schweregrad: kritisch Stichworte: Verkauf
Beobachter: s.schoeling@…, info@…

Beschreibung

Wenn man eine Rechnung in einer Fremdwährung eingeben will und für diesen Tag bereits ein Wechselkurs in der Datenbank eingetragen ist, so wird dieser falsch ausgelesen. So wird aus einem Kurs von 0.765 ein Kurs von 76500 gemacht.
Die Ursache liegt darin, dass die Variable $form->{exchangerate} teilweise als formatierter String (0,765) und teilweise als Zahl (0.765) verwendet wird. Es ist mir bisher nicht gelungen, dies konsistent im Quelltext zu verändern ohne dass es an anderer Stelle klemmt.

Anhänge (1)

exchangerate.patch (451 Byte) - hinzugefügt von info@… vor 4 Jahren.
Patch für Wechselrsbug in Verkaufsrechnungen, relativ zu 2.6.1

Alle Anhänge herunterladen als: .zip

Änderungshistorie (4)

comment:1 Geändert vor 4 Jahren durch info@…

  • Beobachter info@… hinzugefügt

Geändert vor 4 Jahren durch info@…

Patch für Wechselrsbug in Verkaufsrechnungen, relativ zu 2.6.1

comment:2 Geändert vor 4 Jahren durch info@…

Es hat sich herausgestellt, dass der Fehler nicht in der Formatierung lag. Das Procedere ist wie folgt:
Bei post_invoice wird geprüft, ob ein Wechselkurseintrag für das fragliche Datum existiert:
Ja -> diese Zahl wird genommen.
Nein -> $form->{exchangerate} wird als lokalisierter Eingabestring interpretiert und in eine Zahl konvertiert.

Fehlerhaft war die Abfrage: Es wurde $form->{transdate} statt $form->{invdate} genommen. $form->{transdate} wird vom Aufrufer (in is.pl) aber vor dem Aufruf nicht gesetzt, weshalb die Abfrage immer den "Nein"-Fall produzierte.

Ein Patch liegt bei.

Weiterungen:

  1. Für Einträge bei den einzelnen Positionen wird ebenfalls transdate_$i verwendet, weswegen in der Datenbank in invoice transdate immer leer bleibt. Ich halte diesen Eintrag aber eh für redundant und habe es nicht weiterverfolgt.
  2. In IR.pm findet sich in post_invoice die gleiche Abfrage. Ich weiß nicht, ob sie dort sinnvoll ist oder ebenfalls falsch

comment:3 Geändert vor 4 Jahren durch s.schoeling@…

  • Lösung auf fixed gesetzt
  • Status von new nach closed, s.schoeling@linet-services.de geändert
Hinweis: Hilfe zur Verwendung von Tickets finden Sie in TracTickets.