Projekt

Allgemein

Profil

Fehler #487

SL::DB::Helper::Payment logisch falscher Wechselkurs

Von Jan Büren vor mehr als 2 Jahren hinzugefügt. Vor etwa 2 Jahren aktualisiert.

Status:
Neu
Priorität:
Normal
Zugewiesen an:
-
Zielversion:
-
Beginn:
30.09.2021
Abgabedatum:
% erledigt:

30%

Geschätzter Aufwand:

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

#1

Von Jan Büren vor etwa 2 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 <>
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.

Auch abrufbar als: Atom PDF