Project

General

Profile

Fehler #322

AP->post_payment macht acc_trans.cleared kaputt

Added by Jan Büren almost 4 years ago. Updated over 3 years ago.

Status:
Neu
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
11/15/2017
Due date:
% Done:

0%

Estimated time:

Description

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.

History

#1

Updated by Jan Büren over 3 years ago

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.

Also available in: Atom PDF