Projekt

Allgemein

Profil

Fehler #322

AP->post_payment macht acc_trans.cleared kaputt

Von Jan Büren vor mehr als 6 Jahren hinzugefügt. Vor fast 6 Jahren aktualisiert.

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

0%

Geschätzter Aufwand:

Beschreibung

Bereits abgeglichene Zahlungen werden mit der unsauberen Implementierung von post_payment geschreddert.

Hintergrund: Es werden alle Zahlungen geladen und wieder neu reingeschrieben, obwohl man nur eine Zahlung hinzufügt.

Es gibt hier nur einen guten Fix, die acc_trans_ids für Zahlungen auch persistent zu machen, das verhindert auch weitere Ungenauigkeiten.

Historie

#1

Von Jan Büren vor fast 6 Jahren aktualisiert

Mit #08e42c5d48a0c2b2 ist ja die Richtung schon mal gut.

Die Sollbruchstelle ist jetzt aber reconcilation_links, da diese Verknüpfung kaputt gehen sollte:

Sauberer Datenbestand:

=# SELECT acc_trans_id, cleared, amount, c.accno,c.description FROM acc_trans left join chart c on (c.id = acc_trans.chart_id) where trans_id = 10854;
 acc_trans_id | cleared |   amount   | accno |                  description                  
--------------+---------+------------+-------+-----------------------------------------------
        50872 | f       | -133.71000 | 3300  | Verbindlichkeiten aus Lief.u.Leist.
        50732 | f       |  133.71000 | 3300  | Verbindlichkeiten aus Lief.u.Leist.
        50730 | f       | -112.36000 | 6740  | Ausgangsfracht
        50731 | f       |  -21.35000 | 1406  | Abziehbare Vorsteuer 19 %
        50871 | t       |  133.71000 | 1801  | Girokonto Stadtsparkasse
(5 Zeilen)
# select * from reconciliation_links where acc_trans_id = 50871;
   id   | bank_transaction_id | acc_trans_id | rec_group 
--------+---------------------+--------------+-----------
 981326 |                1071 |        50871 |       900

Danach sieht man:


=# select * from reconciliation_links where acc_trans_id = 50871;
 id | bank_transaction_id | acc_trans_id | rec_group 
----+---------------------+--------------+-----------
(0 Zeilen)

mani_test=# SELECT acc_trans_id, cleared, amount, c.accno,c.description FROM acc_trans left join chart c on (c.id = acc_trans.chart_id) where trans_id = 10854;
 acc_trans_id | cleared |   amount   | accno |                  description                  
--------------+---------+------------+-------+-----------------------------------------------
        50732 | f       |  133.71000 | 3300  | Verbindlichkeiten aus Lief.u.Leist.
        51899 | t       | -133.71000 | 3300  | Verbindlichkeiten aus Lief.u.Leist.
        50730 | f       | -112.36000 | 6740  | Ausgangsfracht
        50731 | f       |  -21.35000 | 1406  | Abziehbare Vorsteuer 19 %
        51900 | t       |  133.71000 | 1801  | Girokonto Stadtsparkasse

Der Trigger hat die reconciliaton_links zerstört, ohne aber das cleared in bank_transactions auf 'f' zu setzen.
Damit ist die Bankbewegung in der Liste der abgeglichen Bankbewegung nicht mehr vorhanden (sieht also auf den ersten Blick gut aus).
Aber alle Anwender, die die Salden Ihrer Konten als QS mit Kontenabgleich mit Bank vergleichen, suchen sich jetzt einen Wolf, warum 133,71 € nicht abgeglichen sind ;-(

Zusätzlich wird das Sammelkonto auf cleared ='t' gesetzt.
Ich bin mir unsicher, wie die ursprüngliche Implementierung aussah, aber Kontenabgleich mit Bank benötigt das so nicht.

Eine einfache Lösung hab ich hierfür nicht.

Meine erste Idee bei delete_payments einfach gewisse acc_trans_id nicht zu löschen, falls diese identisch sind, scheitert daran dass das Gegenkonto dann falsch berechnet wird.

Die alte acc_trans_id wieder reinschreiben (was sowieso sinnvoll wäre), hilft nicht gegen den darunter liegenden Trigger.

Auch abrufbar als: Atom PDF