USP_CONSTITUENT_COPYPRIMARYCONTACTINFO

Copies the primary contact information from one constituent to another.

Parameters

Parameter Parameter Type Mode Description
@CHANGEAGENTID uniqueidentifier IN
@SOURCECONSTITUENTID uniqueidentifier IN
@DESTINATIONCONSTITUENTID uniqueidentifier IN
@COPYEMAILADDRESS bit IN
@COPYPHONENUMBER bit IN

Definition

Copy


            CREATE procedure dbo.USP_CONSTITUENT_COPYPRIMARYCONTACTINFO
            (
                @CHANGEAGENTID uniqueidentifier = null,
                @SOURCECONSTITUENTID uniqueidentifier,
                @DESTINATIONCONSTITUENTID uniqueidentifier,
                @COPYEMAILADDRESS bit = 1,
                @COPYPHONENUMBER bit = 1
            )
            as
                set nocount on;

                if @CHANGEAGENTID is null
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                declare @CURRENTDATE datetime;
                select @CURRENTDATE = getdate();

                declare @HASPRIMARY bit
                declare @EXISTINGID uniqueidentifier

                -------------------- Address --------------------

                set @HASPRIMARY = 0
                set @EXISTINGID = null
                declare @ADDRESSTYPECODEID uniqueidentifier
                declare @DONOTMAIL bit
                declare @DONOTMAILREASONCODEID uniqueidentifier
                declare @ADDRESSSTARTDATE dbo.UDT_MONTHDAY
                declare @ADDRESSENDDATE dbo.UDT_MONTHDAY
                declare @COUNTRYID uniqueidentifier
                declare @STATEID uniqueidentifier
                declare @ADDRESSBLOCK nvarchar(150)
                declare @CITY nvarchar(50)
                declare @POSTCODE nvarchar(12)
                declare @CART nvarchar(10)
                declare @DPC nvarchar(8)
                declare @LOT nvarchar(5)
                declare @COUNTYCODEID uniqueidentifier
                declare @CONGRESSIONALDISTRICTCODEID uniqueidentifier
                declare @STATEHOUSEDISTRICTCODEID uniqueidentifier
                declare @STATESENATEDISTRICTCODEID uniqueidentifier
                declare @LOCALPRECINCTCODEID uniqueidentifier
                declare @INFOSOURCECODEID uniqueidentifier
                declare @REGIONCODEID uniqueidentifier
                declare @ISCONFIDENTIAL bit
                declare @PHONECOUNTRYID uniqueidentifier
                declare @ADDRESSHISTORICALSTARTDATE datetime
                declare @ADDRESSHISTORICALENDDATE datetime

                select
                    @ADDRESSTYPECODEID  = ADDRESSTYPECODEID,
                    @DONOTMAIL = DONOTMAIL,
                    @DONOTMAILREASONCODEID = DONOTMAILREASONCODEID,
                    @ADDRESSSTARTDATE = STARTDATE,
                    @ADDRESSENDDATE = ENDDATE,
                    @COUNTRYID = COUNTRYID,
                    @STATEID = STATEID,
                    @ADDRESSBLOCK = ADDRESSBLOCK,
                    @CITY = CITY,
                    @POSTCODE = POSTCODE,
                    @CART = CART,
                    @DPC = DPC,
                    @LOT = LOT,
                    @HASPRIMARY = 1,
                    @ISCONFIDENTIAL = ISCONFIDENTIAL,
                    @ADDRESSHISTORICALSTARTDATE = ADDRESS.HISTORICALSTARTDATE,
                    @ADDRESSHISTORICALENDDATE = ADDRESS.HISTORICALENDDATE,
                    @COUNTYCODEID = ADDRESSVALIDATIONUPDATE.COUNTYCODEID,
                    @CONGRESSIONALDISTRICTCODEID = ADDRESSVALIDATIONUPDATE.CONGRESSIONALDISTRICTCODEID,
                    @STATEHOUSEDISTRICTCODEID = ADDRESSVALIDATIONUPDATE.STATEHOUSEDISTRICTCODEID,
                    @STATESENATEDISTRICTCODEID = ADDRESSVALIDATIONUPDATE.STATESENATEDISTRICTCODEID,
                    @LOCALPRECINCTCODEID = ADDRESSVALIDATIONUPDATE.LOCALPRECINCTCODEID,
                    @INFOSOURCECODEID = ADDRESSVALIDATIONUPDATE.INFOSOURCECODEID,
                    @REGIONCODEID = ADDRESSVALIDATIONUPDATE.REGIONCODEID
                from
                    dbo.ADDRESS
                left join 
                    dbo.ADDRESSVALIDATIONUPDATE on ADDRESS.ID = ADDRESSVALIDATIONUPDATE.ID
                where
                    CONSTITUENTID = @SOURCECONSTITUENTID and
                    ISPRIMARY = 1

                if @HASPRIMARY = 1
                begin
                    if exists (select ID from dbo.ADDRESS where CONSTITUENTID = @DESTINATIONCONSTITUENTID and ISPRIMARY = 1)
                        update dbo.ADDRESS
                        set
                            ISPRIMARY = 0,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where
                            CONSTITUENTID = @DESTINATIONCONSTITUENTID and
                            ISPRIMARY = 1

                    select
                        @EXISTINGID = ADDRESS.ID 
                    from
                        dbo.ADDRESS
                    left join
                        dbo.ADDRESSVALIDATIONUPDATE on ADDRESS.ID = ADDRESSVALIDATIONUPDATE.ID
                    where
                        CONSTITUENTID = @DESTINATIONCONSTITUENTID and
                        (ADDRESSTYPECODEID = @ADDRESSTYPECODEID or (ADDRESSTYPECODEID is null and @ADDRESSTYPECODEID is null)) and
                        DONOTMAIL = @DONOTMAIL and
                        STARTDATE = @ADDRESSSTARTDATE and
                        ENDDATE = @ADDRESSENDDATE and
                        COUNTRYID = @COUNTRYID and
                        (STATEID = @STATEID or (STATEID is null and @STATEID is null)) and
                        (ADDRESSBLOCK = @ADDRESSBLOCK or (ADDRESSBLOCK is null and @ADDRESSBLOCK is null)) and 
                        (CITY = @CITY or (CITY is null and @CITY is null)) and
                        (POSTCODE = @POSTCODE or (POSTCODE is null and @POSTCODE is null)) and
                        CART = @CART and 
                        DPC = @DPC and
                        LOT = @LOT and
                        (COUNTYCODEID = @COUNTYCODEID or (COUNTYCODEID is null and @COUNTYCODEID is null)) and
                        (CONGRESSIONALDISTRICTCODEID = @CONGRESSIONALDISTRICTCODEID or (CONGRESSIONALDISTRICTCODEID is null and @CONGRESSIONALDISTRICTCODEID is null)) and
                        (STATEHOUSEDISTRICTCODEID = @STATEHOUSEDISTRICTCODEID or (STATEHOUSEDISTRICTCODEID is null and @STATEHOUSEDISTRICTCODEID is null)) and
                        (STATESENATEDISTRICTCODEID = @STATESENATEDISTRICTCODEID or (STATESENATEDISTRICTCODEID is null and @STATESENATEDISTRICTCODEID is null)) and
                        (LOCALPRECINCTCODEID = @LOCALPRECINCTCODEID or (LOCALPRECINCTCODEID is null and @LOCALPRECINCTCODEID is null)) and
                        (INFOSOURCECODEID = @INFOSOURCECODEID or (INFOSOURCECODEID is null and @INFOSOURCECODEID is null)) and
                        (REGIONCODEID = @REGIONCODEID or (REGIONCODEID is null and @REGIONCODEID is null))

                    if @EXISTINGID is null
                        begin
                            declare @NEWADDRESSID uniqueidentifier
                            set @NEWADDRESSID = newid()

                            insert into dbo.ADDRESS (
                                                                ID,
                                                                CONSTITUENTID,
                                                                ADDRESSTYPECODEID,
                                                                DONOTMAIL,
                                                                DONOTMAILREASONCODEID,
                                                                STARTDATE,
                                                                ENDDATE,
                                                                COUNTRYID,
                                                                STATEID,
                                                                ADDRESSBLOCK,
                                                                CITY,
                                                                POSTCODE,
                                                                CART,
                                                                DPC,
                                                                LOT,
                                                                ISPRIMARY,
                                                                ISCONFIDENTIAL,
                                                                HISTORICALSTARTDATE,
                                                                HISTORICALENDDATE,
                                                                ADDEDBYID,
                                                                CHANGEDBYID,
                                                                DATEADDED,
                                                                DATECHANGED
                                                        ) values (
                                                                @NEWADDRESSID,
                                                                @DESTINATIONCONSTITUENTID,
                                                                @ADDRESSTYPECODEID,
                                                                @DONOTMAIL,
                                                                @DONOTMAILREASONCODEID,
                                                                @ADDRESSSTARTDATE,
                                                                @ADDRESSENDDATE,
                                                                @COUNTRYID,
                                                                @STATEID,
                                                                @ADDRESSBLOCK,
                                                                @CITY,
                                                                @POSTCODE,
                                                                @CART,
                                                                @DPC,
                                                                @LOT,
                                                                1,
                                                                @ISCONFIDENTIAL,
                                                                @ADDRESSHISTORICALSTARTDATE,
                                                                @ADDRESSHISTORICALENDDATE,
                                                                @CHANGEAGENTID,
                                                                @CHANGEAGENTID,
                                                                @CURRENTDATE,
                                                                @CURRENTDATE
                                                        )

                            insert into dbo.ADDRESSVALIDATIONUPDATE
                            (ID,COUNTYCODEID,CONGRESSIONALDISTRICTCODEID,STATEHOUSEDISTRICTCODEID,STATESENATEDISTRICTCODEID,LOCALPRECINCTCODEID,INFOSOURCECODEID,REGIONCODEID,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
                            values
                            (@NEWADDRESSID,@COUNTYCODEID,@CONGRESSIONALDISTRICTCODEID,@STATEHOUSEDISTRICTCODEID,@STATESENATEDISTRICTCODEID,@LOCALPRECINCTCODEID,@INFOSOURCECODEID,@REGIONCODEID,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE)
                        end
                    else
                        update dbo.ADDRESS
                        set
                            ISPRIMARY = 1,
                            ISCONFIDENTIAL = @ISCONFIDENTIAL,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where
                            ID = @EXISTINGID

                    -- Remove blank address if one was created when adding an individual (no contact info entered creates blank address)

                    declare @BLANKADDRESSID uniqueidentifier
                    select
                        @BLANKADDRESSID = ADDRESS.ID
                    from
                        dbo.ADDRESS
                    left join
                        dbo.ADDRESSVALIDATIONUPDATE on ADDRESS.ID = ADDRESSVALIDATIONUPDATE.ID
                    where
                        CONSTITUENTID = @DESTINATIONCONSTITUENTID and
                        ADDRESSTYPECODEID is null and
                        DONOTMAIL = 0 and
                        STARTDATE = 0000 and
                        ENDDATE = 0000 and
                        STATEID is null and
                        ADDRESSBLOCK = '' and 
                        CITY = '' and
                        POSTCODE = '' and
                        CART = '' and 
                        DPC = '' and
                        LOT = '' and
                        ISPRIMARY = 0 and
                        COUNTYCODEID is null and
                        CONGRESSIONALDISTRICTCODEID is null and
                        STATEHOUSEDISTRICTCODEID is null and
                        STATESENATEDISTRICTCODEID is null and
                        LOCALPRECINCTCODEID is null and
                        INFOSOURCECODEID is null and
                        REGIONCODEID is null

                    if @BLANKADDRESSID is not null
                    begin
                        --Cache CONTEXT INFO

                        declare @contextCache varbinary(128);
                        set @contextCache = CONTEXT_INFO();

                        if not @CHANGEAGENTID is null
                            set CONTEXT_INFO @CHANGEAGENTID;

                        delete from dbo.ADDRESS
                        where ID = @BLANKADDRESSID

                        --Restore CONTEXT_INFO

                        if not @contextCache is null
                            set CONTEXT_INFO @contextCache;
                    end
                end

                -------------------- Phone --------------------

                if @COPYPHONENUMBER = 1
                begin
                set @HASPRIMARY = 0
                set @EXISTINGID = null
                declare @PHONETYPECODEID uniqueidentifier
                declare @NUMBER nvarchar(100)
                declare @DONOTCALL bit
                declare @DONOTCALLREASONCODEID uniqueidentifier
                declare @STARTTIME dbo.UDT_HOURMINUTE
                declare @ENDTIME dbo.UDT_HOURMINUTE
                declare @STARTDATE datetime
                declare @ENDDATE datetime
                declare @PHONEISCONFIDENTIAL bit
                declare @DONOTTEXT bit

                set @STARTTIME = ''
                set @ENDTIME = ''
                set @INFOSOURCECODEID = null

                select
                    @PHONETYPECODEID = PHONETYPECODEID,
                    @NUMBER = NUMBER,
                    @HASPRIMARY = 1,
                    @DONOTCALL = DONOTCALL,
                    @DONOTCALLREASONCODEID = DONOTCALLREASONCODEID,
                    @STARTTIME = STARTTIME,
                    @ENDTIME = ENDTIME,
                    @STARTDATE = STARTDATE,
                    @ENDDATE = ENDDATE,
                    @INFOSOURCECODEID = INFOSOURCECODEID,
                    @PHONECOUNTRYID = COUNTRYID,
                    @PHONEISCONFIDENTIAL = ISCONFIDENTIAL,
                    @DONOTTEXT = DONOTTEXT
                from
                    dbo.PHONE
                where
                    CONSTITUENTID = @SOURCECONSTITUENTID and
                    ISPRIMARY = 1

                if @HASPRIMARY = 1
                begin
                    if exists (select ID from dbo.PHONE where CONSTITUENTID = @DESTINATIONCONSTITUENTID and ISPRIMARY = 1)
                        update dbo.PHONE
                        set
                            ISPRIMARY = 0,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where
                            CONSTITUENTID = @DESTINATIONCONSTITUENTID and
                            ISPRIMARY = 1

                    select
                        @EXISTINGID = ID
                    from
                        dbo.PHONE
                    where
                        CONSTITUENTID = @DESTINATIONCONSTITUENTID and
                        (PHONETYPECODEID = @PHONETYPECODEID or (PHONETYPECODEID is null and @PHONETYPECODEID is null)) and
                        NUMBER = @NUMBER

                    if @EXISTINGID is null
                        insert into dbo.PHONE
                        (CONSTITUENTID,PHONETYPECODEID,NUMBER,ISPRIMARY,INFOSOURCECODEID,COUNTRYID,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED,DONOTCALL,DONOTCALLREASONCODEID,STARTTIME,ENDTIME,STARTDATE,ENDDATE,ISCONFIDENTIAL,DONOTTEXT)
                        values
                        (@DESTINATIONCONSTITUENTID,@PHONETYPECODEID,@NUMBER,1,@INFOSOURCECODEID,@PHONECOUNTRYID,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE,@DONOTCALL,@DONOTCALLREASONCODEID,@STARTTIME,@ENDTIME,@STARTDATE,@ENDDATE,@PHONEISCONFIDENTIAL,@DONOTTEXT)
                    else
                        update dbo.PHONE
                        set
                            ISPRIMARY = 1,
                            DONOTCALL = @DONOTCALL,
                            DONOTCALLREASONCODEID = @DONOTCALLREASONCODEID,
                            STARTTIME = @STARTTIME,
                            ENDTIME = @ENDTIME,
                            STARTDATE = @STARTDATE,
                            ENDDATE = @ENDDATE,
                            INFOSOURCECODEID = @INFOSOURCECODEID,
                            ISCONFIDENTIAL = @PHONEISCONFIDENTIAL,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE,
                            DONOTTEXT = @DONOTTEXT
                        where
                            ID = @EXISTINGID
                end
                end

                -------------------- Email address --------------------

                if @COPYEMAILADDRESS = 1
                begin
                set @HASPRIMARY = 0
                set @EXISTINGID = null
                declare @EMAILADDRESSTYPECODEID uniqueidentifier
                declare @EMAILADDRESS dbo.UDT_EMAILADDRESS
                declare @DONOTEMAIL bit
                declare @DONOTEMAILREASONCODEID uniqueidentifier
                set @INFOSOURCECODEID = null
                declare @EMAILADDRESS_STARTDATE date = null
                declare @EMAILADDRESS_ENDDATE date = null
                declare @EMAILISCONFIDENTIAL bit

                select
                    @EMAILADDRESSTYPECODEID = EMAILADDRESSTYPECODEID,
                    @EMAILADDRESS = EMAILADDRESS,
                    @HASPRIMARY = 1,
                    @DONOTEMAIL = DONOTEMAIL,
                    @INFOSOURCECODEID = INFOSOURCECODEID,
                    @EMAILADDRESS_STARTDATE = STARTDATE,
                    @EMAILADDRESS_ENDDATE = ENDDATE,
                    @EMAILISCONFIDENTIAL = ISCONFIDENTIAL,
                    @DONOTEMAILREASONCODEID = DONOTEMAILREASONCODEID
                from
                    dbo.EMAILADDRESS
                where
                    CONSTITUENTID = @SOURCECONSTITUENTID and
                    ISPRIMARY = 1

                if @HASPRIMARY = 1
                begin
                    if exists (select ID from dbo.EMAILADDRESS where CONSTITUENTID = @DESTINATIONCONSTITUENTID and ISPRIMARY = 1)
                        update dbo.EMAILADDRESS
                        set
                            ISPRIMARY = 0,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where
                            CONSTITUENTID = @DESTINATIONCONSTITUENTID and
                            ISPRIMARY = 1

                    select
                        @EXISTINGID = ID
                    from
                        dbo.EMAILADDRESS
                    where
                        CONSTITUENTID = @DESTINATIONCONSTITUENTID and
                        (EMAILADDRESSTYPECODEID = @EMAILADDRESSTYPECODEID or (EMAILADDRESSTYPECODEID is null and @EMAILADDRESSTYPECODEID is null)) and
                        EMAILADDRESS = @EMAILADDRESS

                    if @EXISTINGID is null
                        insert into dbo.EMAILADDRESS
                        (CONSTITUENTID,EMAILADDRESSTYPECODEID,EMAILADDRESS,ISPRIMARY,INFOSOURCECODEID,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED,DONOTEMAIL,STARTDATE,ENDDATE,ISCONFIDENTIAL,DONOTEMAILREASONCODEID)
                        values
                        (@DESTINATIONCONSTITUENTID,@EMAILADDRESSTYPECODEID,@EMAILADDRESS,1,@INFOSOURCECODEID,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE,@DONOTEMAIL,@EMAILADDRESS_STARTDATE,@EMAILADDRESS_ENDDATE,@EMAILISCONFIDENTIAL,@DONOTEMAILREASONCODEID)
                    else
                        update dbo.EMAILADDRESS
                        set
                            ISPRIMARY = 1,
                            DONOTEMAIL = @DONOTEMAIL,
                            INFOSOURCECODEID = @INFOSOURCECODEID,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE,
                            STARTDATE = @EMAILADDRESS_STARTDATE,
                            ENDDATE = @EMAILADDRESS_ENDDATE,
                            ISCONFIDENTIAL = @EMAILISCONFIDENTIAL,
                            DONOTEMAILREASONCODEID = @DONOTEMAILREASONCODEID
                        where
                            ID = @EXISTINGID
                end
                end