Fehler #487
SL::DB::Helper::Payment logisch falscher Wechselkurs
30%
Beschreibung
Hallo zusammen,
die Prüfung in Zeile 97 besagt:
if ($params{currency} || $params{currency_id} || $self->currency_id != $::instance_conf->get_currency_id) {
Wir lassen mal die params unberücksichtigt und dann bleibt noch die Überprüfung von $self gegen Standardwährung.
Sieht erstmal gut aus, allerdings ist $self nicht vom Typ Banktransaction, sondern vom Typ Invoice.
Die Banktransaktion von einem Bankkonto sind aber in der Regel in der Standardwährung des Mandanten.
Hier eine Abfrage aus einem Echtsystem mit 5 Girokonten und einen Datenbestand von über 5 Jahren:
# select distinct currency_id from bank_transactions;
currency_id
-------------
1
(1 row)
Also, die Umrechnung von Fremdwährung in Hauswährung macht die Bank schon automatisch und der Payment-Helper braucht das nicht nochmal berechnen, nur weil in der kivi-Rechnung eine Fremdwährung verknüpft ist.
Der Helper kennt das Objekt der Banktransaction gar nicht, insofern kann nur der aufrufende Code die Fremdwährung Entscheidung treffen und die Prüfung dürfte dann an den zwei Stellen nur auf die params prüfen.
Im Reiter Buchungen der entsprechenden Einkaufsrechnung und somit im Buchungsjournal und im DATEV-Export geht dann alles sauber auf:
Datum Buchungskonto Beschreibung Soll Haben 02.08.2021 520000 Wareneinkauf ohne Zuordnung nach Umsatzsteuertatbeständen 9.344,09 02.08.2021 330000 Verbindlichkeiten aus Lief.u.Leist. 9.344,09 24.09.2021 180000 Sparkasse XYZ 9.344,09 24.09.2021 330000 Verbindlichkeiten aus Lief.u.Leist. 9.344,09 Summe: 18.688,18 18.688,18
In der Basismaske stimmt dann im Bereich Zahlungen dann nichts mehr. Wahrscheinlich ist der Helper-Code im Bereich Fremdwährung einfach von pay_invoice aus dem Beleg rüberkopiert worden ohne das Wissen, dass ja noch die Maske im Fall Wechselkurs hin- und herrechnet.
Historie
Von Jan Büren vor fast 3 Jahren aktualisiert
- % erledigt wurde von 0 zu 30 geändert
Das löst noch nicht alles, aber bucht schon mal keine falschen Umrechnungen:
commit 6be10c6a62e8e99aed3a4147ecbb0053faa8fcba (HEAD -> master)
Author: Jan Büren <jan@kivitendo-premium.de>
Date: Thu Feb 17 08:14:55 2022 +0100
Payment-Helper: Fremdwährung nur über param steuern und nicht über den Beleg
Die prinzipielle Stelle für Wechselkurs ist noch im alten Menü Zahlungsverkehr, hier die Analyse von Joachim zur Info:
ich kann nicht recht beurteilen, ob dieser Fix hilft. Es würde dann vielleicht der richtige Betrag beim Kontoauszug gebucht. Aber wie wird dann der ganze Abrechnungsmechanismus getriggert mit "Erträgen aus Währungsumstellungen" usw. Das hat doch alles beim Zahlungsverkehr-> Zahlungsausgang funktioniert. Kann man das nicht klonen.
In jedem Fall muss es doch auch die Möglichkeit geben, einen Tageskurs zum Zahlungszeitraum irgendwo einzugeben.