Fehler #126
offenbankbuchung rückgängig machen
0%
Beschreibung
Eine Zahlung ist falsch zugeordnet.
Im Schritt 1 hab ich die Verknüpfung im Kontenabgleich aufgehoben.
i.O. -> bank_transactions.cleared = false
Im Schritt 2 möchte ich die Zahlung neu zuordnen.
Ich hab die verknüpfte Zahlung gelöscht (über verknüpfte Belege)
Da ist die erste Unstimmigkeit, die Verknüpfung ist weg, aber die Zahlung noch vorhanden.
Das ist an der Stelle nicht konsistent.
Ferner sehe ich die Banktransaktion nicht in der Auswahlliste der zu noch verbuchenden Transaktion, obwohl die Zuordnung wieder aufgehoben ist.
Sprich die Zahlung scheint verschwunden zu sein - Und der Mitarbeiter wird unischer, weil einmal falsch verknüpfte Zahlungen nicht mehr reparierbar sind.
Wahrscheinlich ist diese Stelle in BankTransaction hierfür verantwortlich:
(where => [ amount => {ne => \'invoice_amount'},
Dann hab ich also drei verschiedene Stellen, die den Zustand bestimmen:
a) reconciliation_links
b) invoice_amount in bank_transactions
c) cleared in bank_transactions
Feld b) überhaupt zu verwenden, finde ich genauso intelligent wie paid in ar / ap.
a) und c) sind schon ausreichend, um den Status des Zahlungszustands idiotensicher zu bestimmen.
Ich kann hiermit auch schon alle Fälle abdecken:
1) Eine Zahlung geht auf eine Rechnung
2) Eine Zahlung geht auf mehrere Rechnungen
3) Eine Rechnung hat mehrere Zahlungen
Ich weiß hierüber auch schon exakt welche Geldmenge welcher Rechnung zugewiesen ist, mit nur
dem gesamt zugewiesenen invoice_amount geht das auf dem ersten Blick nicht.
Mein Vorschlag wäre statt dieser Abfrage:
(where => [ amount => {ne => \'invoice_amount'},
die in etwa so (pseudocode) zu ersetzen:
(where => [ amount => { ne => sum (amount) from acc_trans where acc_trans_id in (select acc_trans_id from reconciliation_links rl where rl.bank_transaction_id = bank_transaction.id }
Vom Datenmodell her, wäre es sinnvoll wenn reconciliation_links nicht einfach gelöscht werden könnten, solange die noch auf acc_trans_ids verweisen.
Damit wäre mein Fehler an der Oberfläche zumindestens erstmal hart ausgeschlossen gewesen.
Die aktuelle Verknüpfung ist wie folgt:
acc_trans <- reconciliation_links -> bank_transaction
D.h. der Link ist der Vater von beiden Einträgen. Aktuell wird der Link aber nicht immer gesetzt (Kontenabgleich im Dialog) und ist ferner eher die schwächste Stelle in dieser Kette, d.h. sie kann simpel über "Verknüpfung entfernen" mittels dem verknüpften Belege-Dialog entfernt werden.
Sinnvollere Väter oder bessere Hühner vor den Eiern ...
Bspw.:
bank_transaction -> reconciliation_links -> acc_trans
Ich kann die Zahlung nicht löschen, bevor ich den Verweis rausgenommen habe, ferner kann ich den Verweis nicht rausnehmen, bevor ich die Transaktion nicht anfasse.
Die Änderung kann in der Tat über Kontenabgleich rückgängig machen in einem Schritt passieren. Am Besten noch mit einem entsprechenden Dialog.