From 3076f9e68e87d36a34fcade34d61b46b52902457 Mon Sep 17 00:00:00 2001 From: Rogan Hamby Date: Mon, 5 Nov 2018 15:21:28 -0500 Subject: [PATCH] moving shared addresses to non-deleted user when merging --- Open-ILS/src/sql/Pg/999.functions.global.sql | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Open-ILS/src/sql/Pg/999.functions.global.sql b/Open-ILS/src/sql/Pg/999.functions.global.sql index 68e4748b9c..209425dd0d 100644 --- a/Open-ILS/src/sql/Pg/999.functions.global.sql +++ b/Open-ILS/src/sql/Pg/999.functions.global.sql @@ -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; -- 2.11.0