Mahnungen/DMS Upgrade-Skript, dass die Dokumente zu den Mahnläufen verschiebt.
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Wed, 24 Mar 2021 13:07:22 +0000 (14:07 +0100)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Thu, 25 Mar 2021 10:22:24 +0000 (11:22 +0100)
Vorher waren die Dokumente der gemahnten Rechnung zugordnet, nun werden sie
dem Mahnlauf zugeordnet.

Im Prinzip könnte nun dunning1-3, dunning_invoice und dunning_orig_invoice
als object_type im Filemanagement entfallen, aber es kann sein, dass Dokumente
nicht zugeordnet werden können, da z.B. die Mahnung gelöscht wurde.
Dabei werden Dokumente im Moment nicht mitgelöscht.

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

diff --git a/sql/Pg-upgrade2/file_storage_dunning_documents.sql b/sql/Pg-upgrade2/file_storage_dunning_documents.sql
new file mode 100644 (file)
index 0000000..865ef05
--- /dev/null
@@ -0,0 +1,17 @@
+-- @tag: file_storage_dunning_documents
+-- @description: Dateien f. Mahnungen von gemahnter Rechnung zum Mahnlauf verschieben
+-- @depends: file_storage_dunning_invoice
+
+-- for the original invoice, assume that the dunning_id is the one from a dunning row where the trans_id is
+-- the old files object_id (the orig. invoice) and the itime of both tables are (almost) equal
+WITH table_files AS
+  (SELECT dunning.dunning_id, files.id FROM files LEFT JOIN dunning ON (dunning.trans_id = files.object_id)
+     WHERE object_type ILIKE 'dunning_orig_invoice' AND file_type LIKE 'document' AND source LIKE 'created'
+       AND ABS(EXTRACT(EPOCH FROM (dunning.itime - files.itime))) < 0.1)
+  UPDATE files SET object_type = 'dunning', object_id = (SELECT dunning_id FROM table_files WHERE table_files.id = files.id)
+     WHERE EXISTS (SELECT id FROM table_files WHERE table_files.id = files.id);
+
+-- the dunning_id for the following types can be found in the filename
+UPDATE files SET object_type = 'dunning', object_id = substring(file_name FROM '(\d+).pdf')::INT
+  WHERE (object_type LIKE 'dunning1' OR object_type LIKE 'dunning2' OR object_type LIKE 'dunning3' OR object_type LIKE 'dunning_invoice')
+    AND file_type LIKE 'document' AND source LIKE 'created';