moving shared addresses to non-deleted user when merging user/rogan/lp965374_usr_merge_fails_on_shared_address
authorRogan Hamby <rhamby@equinoxinitiative.org>
Mon, 5 Nov 2018 20:21:28 +0000 (15:21 -0500)
committerRogan Hamby <rhamby@equinoxinitiative.org>
Mon, 5 Nov 2018 20:21:28 +0000 (15:21 -0500)
Open-ILS/src/sql/Pg/999.functions.global.sql

index 68e4748..209425d 100644 (file)
@@ -49,6 +49,7 @@ DECLARE
        picklist_row RECORD;
        queue_row RECORD;
        folder_row RECORD;
+       src_addr INTEGER;
 BEGIN
 
     -- Bail if src_usr equals dest_usr because the result of merging a
@@ -72,6 +73,13 @@ BEGIN
         UPDATE actor.card SET usr = dest_usr WHERE usr = src_usr;
     END IF;
 
+       -- if addresses are shared then remap them to one of the undeleted accounts
+       FOR src_addr IN SELECT id FROM actor.usr_address WHERE usr = src_usr LOOP 
+               UPDATE actor.usr_address SET usr = (SELECT id FROM actor.usr WHERE deleted = FALSE 
+                       AND mailing_address = src_addr AND id != src_usr LIMIT 1) WHERE usr = src_usr; 
+        UPDATE actor.usr_address SET usr = (SELECT id FROM actor.usr WHERE deleted = FALSE 
+            AND billing_address = src_addr AND id != src_usr LIMIT 1) WHERE usr = src_usr;
+       END LOOP;
 
     IF del_addrs THEN
         DELETE FROM actor.usr_address WHERE usr = src_usr;