reconciliation_links automatisch mit Abhängigkeiten löschen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 26 Sep 2016 08:46:10 +0000 (10:46 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 26 Sep 2016 09:18:55 +0000 (11:18 +0200)
commit39278d1afe3bba08addcb80af6beee580b55d7e9
tree6a5f4ad00ef6b051d4e1fd4bf642586b61f3aafc
parentd9ab23fa13ade3503b0a95cdafaa4bc755d94dba
reconciliation_links automatisch mit Abhängigkeiten löschen

Wenn man einen Eintrag aus acc_trans löschen möchte (z.B. beim Löschen
einer gebuchten Einkaufs- oder Verkaufsrechnung, zu der bereits
Zahlungen verbucht wurden, für die wiederum ein Bankabgleich
stattgefunden hat), so wird bisher nur der Eintrag aus ar/ap
entfernt. Datenbanktrigger entfernen dann die Einträge aus »acc_trans« —
doch diese sind in dem Moment noch über »reconciliation_links«
referenziert.

Die »reconciliation_links« verknüpft allerdings ausschließlich die
Einträge aus »acc_trans« bzw. »bank_transactions« ohne weitere
Nebenwirkungen. Daher genügt es, wenn die Einträge über ein »ON DELETE
CASCADE« auf ihren Fremschlüssel mit gelöscht werden.

Diese Änderung betrifft auch #193 (»Kontenabgleich mit Bank« verhindert
nachträgliches Hinzufügen von Zahlungen). Durch die Änderung passiert
jetzt beim nachträglichen Buchen von Zahlungen Folgendes:

• Einträge aus »acc_trans« werden gelöscht
• Einträge aus »reconciliation_links« fliegen durch »ON DELETE CASCADE«
  automatisch mit raus
• Einträge in »acc_trans« werden wieder neu eingefügt, nicht aber
  Einträge in »reconciliation_links«

Sprich diese Änderung versteckt den Bug, dass das nachträgliche
Verändern von Zahlungen bereits abgeglichene Zahlungen falsch
behandelt. Das muss weiterhin gefixt werden, das Fehlverhalten ist
schlicht nicht mehr so offensichtlich.
sql/Pg-upgrade2/auto_delete_reconciliation_links_on_acc_trans_deletion.pl [new file with mode: 0644]