Projekt

Allgemein

Profil

Fehler #244

Kontoauszug verbuchen mit Fremdwährung

Von Jan Büren vor fast 7 Jahren hinzugefügt. Vor fast 7 Jahren aktualisiert.

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

0%

Geschätzter Aufwand:

Beschreibung

Eine von beiden Aussagen ist wahr:

i)
Falls man den Zahlungseingang einer Eingangsrechnung per Kontoauszug verbuchen verbucht, wird alles sauber ausgeführt (Wechselkurs berechnen falls vorhanden, usw), allerdings wird paid im Nebenbuch nicht richtig gesetzt

ii)
Falls man bei einer Einkaufsrechnung mit Fremdwährung noch 1 Cent Wechselkursdifferenz manuell im Beleg bucht, wird im Nebenbuch die Summe von paid nicht Wechselkurs bereinigt und ap.paid != sum(acc_trans.paid)

Es sieht stark nach dem ii) Fall aus, da an der Oberfläche des Belegs folgende Ausgabe passiert:

Datum     Beleg           Betrag         Wechselkurs.     Konto
13.02.2017               2.210,57         1,18     1200
09.05.2017                   0,01         1,18     1590--Durchlaufende Posten

               Summe     2.210,58
           Fehlbetrag     -334,83

Dateien

Payment.pm.patch (3,68 KB) Payment.pm.patch Jan Büren, 15.05.2017 16:51

Historie

#1

Von Jan Büren vor fast 7 Jahren aktualisiert

Der Fehler ist woanders im System.

Ich hab folgende Banktransaktion:


 -361.78000 |     -361.78000 |           304,50KURS       0,8500841,00% AUSLANDSUMS.     3,58UMSATZ VOM 16.02.2017VISTACARD

Es wurden 304,50 in der Fremdwährung bezahlt. In Euro erhalte ich hier mit 1% Auslandsumsatz-Aufschlag einen Wert von 361,78

Meine Einkaufsrechnung hierzu ist mit dem Kehrwert erfasst worden:


select transdate,buy,sell from exchangerate where id = 13;
 transdate  | buy |  sell   
------------+-----+---------
 2017-02-20 |     | 1.14992

Demnach bucht kivitendo jetzt in der Hauswährung, Rechnungsbetrag * Kehrwert Wechselkurs und ich erhalte:

Verbindlichkeiten aus Lief.u.Leist.         344,98

Beim Kontoauszug verbuchen, erhalte ich die richtigen Werte an der Oberfläche, da der Rechnungsbetrag ja schon in der Hauswährung berechnet wurde:

€-Bankbewegung   Rechnungsbetrag EK-Rechnung
-361,78     344,98

Das Rechnungsdatum der Einkaufsrechnung und das Datum der Bankbewegung sind identisch. Demnach ist nicht mit Wechselkursdifferenzen zu rechnen.

Kontoauszug verbuchen meldet zurück:

Rechnung 12453 wurde um 16,80 überzahlt.

Das sieht gut aus, allerdings wurde eine weitere Bankbewegung mit 54,24 hinzugebucht und das Sammelkonto entsprechend erhöht.

Der Code sieht so aus, als ob er die Wechselkursdifferenz berücksichtigt und falls diese nicht abweicht, passiert auch nichts weiter.

In einem ersten Patch hab ich die Währungsbehandlung etwas anders gestaltet.

Meiner Meinung nach, müssten diese Bedingungen zusammengefasst werden:

       if ( $self->currency_id != $::instance_conf->get_currency_id ) {
         if ($self->exchangerate and $self->exchangerate != 1 and $self->exchangerate != $exchangerate) {

und die Berechnung von paid_amount * exchangerate weiter vorne:

      # bank account and AR/AP
      $paid_amount += $pay_amount * $exchangerate;
sollte besser später gemacht werden, bwz. schöner lesbarer wäre eine Auslagerung a la $self->_handle_exchangerate damit wird es direkt klarer, was passieren soll.

Auch abrufbar als: Atom PDF