sepa_export_items automatisch mit Rechnungen löschen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 26 Sep 2016 09:14:49 +0000 (11:14 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 26 Sep 2016 09:18:59 +0000 (11:18 +0200)
Wenn man eine Rechnung löschen möchte, die bereits in einen SEPA-Export
verwendet wurde, so erhält man eine Fehlermeldung. Also den
dazugehörigen Eintrag aus »sepa_export_items« automatisch über ein »ON
DELETE CASCADE« auf den Fremdschlüsseln löschen lassen.

sql/Pg-upgrade2/auto_delete_sepa_export_items_on_ap_ar_deletion.pl [new file with mode: 0644]

diff --git a/sql/Pg-upgrade2/auto_delete_sepa_export_items_on_ap_ar_deletion.pl b/sql/Pg-upgrade2/auto_delete_sepa_export_items_on_ap_ar_deletion.pl
new file mode 100644 (file)
index 0000000..f7bad04
--- /dev/null
@@ -0,0 +1,26 @@
+# @tag: auto_delete_sepa_export_items_on_ap_ar_deletion
+# @description: Automatisch Einträge aus reconciliation_links entfernen, wenn referenzierte Einträge gelöscht werden
+# @depends: sepa_in
+package SL::DBUpgrade2::auto_delete_sepa_export_items_on_ap_ar_deletion;
+
+use utf8;
+use strict;
+
+use parent qw(SL::DBUpgrade2::Base);
+
+sub run {
+  my ($self) = @_;
+
+  $self->drop_constraints(table => $_) for qw(sepa_export_items);
+
+  my @queries = (
+    q|ALTER TABLE sepa_export_items ADD CONSTRAINT sepa_export_items_ar_id_fkey FOREIGN KEY (ar_id) REFERENCES ar (id) ON DELETE CASCADE|,
+    q|ALTER TABLE sepa_export_items ADD CONSTRAINT sepa_export_items_ap_id_fkey FOREIGN KEY (ap_id) REFERENCES ap (id) ON DELETE CASCADE|,
+  );
+
+  $self->db_query($_) for @queries;
+
+  return 1;
+}
+
+1;