USP_ADDRESS_UPDATE

Updates an existing address.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@ADDRESSTYPECODEID uniqueidentifier IN
@PRIMARY bit IN
@DONOTMAIL bit IN
@STARTDATE UDT_MONTHDAY IN
@ENDDATE UDT_MONTHDAY IN
@COUNTRYID uniqueidentifier IN
@STATEID uniqueidentifier IN
@ADDRESSBLOCK nvarchar(150) IN
@CITY nvarchar(50) IN
@POSTCODE nvarchar(12) IN
@CART nvarchar(10) IN
@DPC nvarchar(8) IN
@LOT nvarchar(5) IN
@UPDATEMATCHINGSPOUSEADDRESSES bit IN
@OMITFROMVALIDATION bit IN
@COUNTYCODEID uniqueidentifier IN
@CONGRESSIONALDISTRICTCODEID uniqueidentifier IN
@STATEHOUSEDISTRICTCODEID uniqueidentifier IN
@STATESENATEDISTRICTCODEID uniqueidentifier IN
@LOCALPRECINCTCODEID uniqueidentifier IN
@INFOSOURCECODEID uniqueidentifier IN
@REGIONCODEID uniqueidentifier IN
@LASTVALIDATIONATTEMPTDATE datetime IN
@VALIDATIONMESSAGE nvarchar(200) IN
@CERTIFICATIONDATA int IN
@UPDATECONTACTS bit IN
@DONOTMAILREASONCODEID uniqueidentifier IN
@HISTORICALSTARTDATE date IN
@HISTORICALENDDATE date IN
@INFOSOURCECOMMENTS nvarchar(256) IN
@ISCONFIDENTIAL bit IN

Definition

Copy


            CREATE procedure dbo.USP_ADDRESS_UPDATE
            (
                @ID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier = null,
                @ADDRESSTYPECODEID uniqueidentifier,
                @PRIMARY bit,
                @DONOTMAIL bit,
                @STARTDATE dbo.UDT_MONTHDAY,
                @ENDDATE dbo.UDT_MONTHDAY,
                @COUNTRYID uniqueidentifier,
                @STATEID uniqueidentifier,
                @ADDRESSBLOCK nvarchar(150),
                @CITY nvarchar(50),
                @POSTCODE nvarchar(12),
                @CART nvarchar(10),
                @DPC nvarchar(8),
                @LOT nvarchar(5),
                @UPDATEMATCHINGSPOUSEADDRESSES bit,
                @OMITFROMVALIDATION bit,                    
                @COUNTYCODEID uniqueidentifier,
                @CONGRESSIONALDISTRICTCODEID uniqueidentifier,
                @STATEHOUSEDISTRICTCODEID uniqueidentifier,
                @STATESENATEDISTRICTCODEID uniqueidentifier,
                @LOCALPRECINCTCODEID uniqueidentifier,
                @INFOSOURCECODEID uniqueidentifier,
                @REGIONCODEID uniqueidentifier,                    
                @LASTVALIDATIONATTEMPTDATE datetime,
                @VALIDATIONMESSAGE nvarchar(200),
                @CERTIFICATIONDATA integer,
                @UPDATECONTACTS bit,
                @DONOTMAILREASONCODEID uniqueidentifier = null,
                @HISTORICALSTARTDATE date = null,
                @HISTORICALENDDATE date = null,
                @INFOSOURCECOMMENTS nvarchar(256) = '',
                @ISCONFIDENTIAL bit = 0
            )
            as
                set nocount on;

                declare @CURRENTDATE datetime;

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

                if @DONOTMAIL = 0
                    set @DONOTMAILREASONCODEID = null

                set @CURRENTDATE = getdate();

                declare @CONSTITUENTID uniqueidentifier;
                declare @OLDCOUNTRYID uniqueidentifier;
                declare @OLDSTATEID uniqueidentifier;
                declare @OLDADDRESSBLOCK nvarchar(150);
                declare @OLDCITY nvarchar(50);
                declare @OLDPOSTCODE nvarchar(12);

                select
                    @CONSTITUENTID = ADDRESS.[CONSTITUENTID],
                    @OLDCOUNTRYID = ADDRESS.[COUNTRYID],
                    @OLDADDRESSBLOCK  = ADDRESS.[ADDRESSBLOCK],
                    @OLDCITY  = ADDRESS.[CITY],
                    @OLDSTATEID  = ADDRESS.[STATEID],
                    @OLDPOSTCODE  = ADDRESS.[POSTCODE]
                from
                    dbo.ADDRESS
                where
                    ADDRESS.[ID] = @ID;

                if @CERTIFICATIONDATA is null
                    set @CERTIFICATIONDATA = 0;

                begin try
                    if @PRIMARY = 1
                        update
                            dbo.[ADDRESS]
                        set
                            ISPRIMARY = 0,
                            DATECHANGED = @CURRENTDATE,
                            CHANGEDBYID = @CHANGEAGENTID
                        where
                            CONSTITUENTID = @CONSTITUENTID and ISPRIMARY = 1 and ID <> @ID;

                    update
                        dbo.ADDRESS
                    set
                        ADDRESSTYPECODEID = @ADDRESSTYPECODEID,
                        ISPRIMARY = @PRIMARY,
                        DONOTMAIL = @DONOTMAIL,
                        STARTDATE = @STARTDATE,
                        ENDDATE = @ENDDATE,
                        COUNTRYID = @COUNTRYID,
                        STATEID = @STATEID,
                        ADDRESSBLOCK = @ADDRESSBLOCK,
                        CITY = @CITY,
                        POSTCODE = @POSTCODE,
                        CART = @CART,
                        DPC = @DPC,
                        LOT = @LOT,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE,
                        DONOTMAILREASONCODEID = @DONOTMAILREASONCODEID,
                        HISTORICALSTARTDATE = @HISTORICALSTARTDATE,
                        HISTORICALENDDATE = @HISTORICALENDDATE,
                        ISCONFIDENTIAL = @ISCONFIDENTIAL
                    where 
                        ID = @ID;

                    if exists (select ID from dbo.ADDRESSVALIDATIONUPDATE where ID = @ID)
                        update dbo.ADDRESSVALIDATIONUPDATE
                        set OMITFROMVALIDATION = @OMITFROMVALIDATION,                            
                            COUNTYCODEID = @COUNTYCODEID,
                            CONGRESSIONALDISTRICTCODEID = @CONGRESSIONALDISTRICTCODEID,
                            STATEHOUSEDISTRICTCODEID = @STATEHOUSEDISTRICTCODEID,
                            STATESENATEDISTRICTCODEID = @STATESENATEDISTRICTCODEID,
                            LOCALPRECINCTCODEID = @LOCALPRECINCTCODEID,
                            INFOSOURCECODEID = @INFOSOURCECODEID,
                            INFOSOURCECOMMENTS = @INFOSOURCECOMMENTS,
                            REGIONCODEID = @REGIONCODEID,                                
                            LASTVALIDATIONATTEMPTDATE = @LASTVALIDATIONATTEMPTDATE,
                            VALIDATIONMESSAGE = @VALIDATIONMESSAGE,                                
                            CERTIFICATIONDATA = @CERTIFICATIONDATA,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where ID = @ID;
                    else
                        insert into dbo.ADDRESSVALIDATIONUPDATE
                        (ID, OMITFROMVALIDATION, COUNTYCODEID, CONGRESSIONALDISTRICTCODEID, STATEHOUSEDISTRICTCODEID, STATESENATEDISTRICTCODEID, LOCALPRECINCTCODEID, INFOSOURCECODEID, INFOSOURCECOMMENTS, REGIONCODEID, LASTVALIDATIONATTEMPTDATE, VALIDATIONMESSAGE, CERTIFICATIONDATA, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        values
                        (@ID, @OMITFROMVALIDATION, @COUNTYCODEID, @CONGRESSIONALDISTRICTCODEID, @STATEHOUSEDISTRICTCODEID, @STATESENATEDISTRICTCODEID, @LOCALPRECINCTCODEID, @INFOSOURCECODEID, @INFOSOURCECOMMENTS, @REGIONCODEID, @LASTVALIDATIONATTEMPTDATE, @VALIDATIONMESSAGE, coalesce(@CERTIFICATIONDATA, 0), @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);


                    if @UPDATEMATCHINGSPOUSEADDRESSES = 1 and exists(select object_id from sys.objects where type = 'U' and name = 'RELATIONSHIP') begin
                        declare @SPOUSEID uniqueidentifier;
                        declare @EXISTINGID uniqueidentifier;

                        select @SPOUSEID = RECIPROCALCONSTITUENTID from dbo.RELATIONSHIP where RELATIONSHIPCONSTITUENTID = @CONSTITUENTID and ISSPOUSE = 1;

                        if @SPOUSEID is not null
                        begin
                            if @PRIMARY = 1
                                update dbo.ADDRESS
                                set
                                    ISPRIMARY = 0,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                                where
                                    CONSTITUENTID = @SPOUSEID and
                                    ISPRIMARY = 1

                            select
                                @EXISTINGID = ID 
                            from
                                dbo.ADDRESS
                            where
                                CONSTITUENTID = @SPOUSEID and
                                COUNTRYID = @OLDCOUNTRYID and
                                ADDRESSBLOCK = @OLDADDRESSBLOCK and 
                                CITY = @OLDCITY and
                                (STATEID = @OLDSTATEID or (STATEID is null and @OLDSTATEID is null)) and
                                POSTCODE = @OLDPOSTCODE

                            if @EXISTINGID is null
                            begin
                                declare @NEWID uniqueidentifier;
                                set @NEWID = newID();

                                insert into dbo.ADDRESS
                                (
                                    ID,
                                    CONSTITUENTID,
                                    ADDRESSTYPECODEID,
                                    DONOTMAIL,
                                    STARTDATE,
                                    ENDDATE,
                                    COUNTRYID,
                                    STATEID,
                                    ADDRESSBLOCK,
                                    CITY,
                                    POSTCODE,
                                    CART,
                                    DPC,
                                    LOT,
                                    ISPRIMARY,
                                    ADDEDBYID,
                                    CHANGEDBYID,
                                    DATEADDED,
                                    DATECHANGED,
                                    DONOTMAILREASONCODEID,
                                    HISTORICALSTARTDATE,
                                    HISTORICALENDDATE,
                                    ISCONFIDENTIAL
                                )
                                values
                                (
                                    @NEWID,
                                    @SPOUSEID,
                                    @ADDRESSTYPECODEID,
                                    @DONOTMAIL,
                                    @STARTDATE,
                                    @ENDDATE,
                                    @COUNTRYID,
                                    @STATEID,
                                    @ADDRESSBLOCK,
                                    @CITY,
                                    @POSTCODE,
                                    @CART,
                                    @DPC,
                                    @LOT,
                                    @PRIMARY,
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @CURRENTDATE,
                                    @DONOTMAILREASONCODEID,
                                    @HISTORICALSTARTDATE,
                                    @HISTORICALENDDATE,
                                    @ISCONFIDENTIAL
                                )                            

                                insert into dbo.ADDRESSVALIDATIONUPDATE
                                (
                                    ID,
                                    OMITFROMVALIDATION,
                                    COUNTYCODEID,
                                    CONGRESSIONALDISTRICTCODEID,
                                    STATEHOUSEDISTRICTCODEID,
                                    STATESENATEDISTRICTCODEID,
                                    LOCALPRECINCTCODEID,
                                    INFOSOURCECODEID,
                                    INFOSOURCECOMMENTS,
                                    REGIONCODEID,
                                    LASTVALIDATIONATTEMPTDATE,
                                    VALIDATIONMESSAGE,
                                    CERTIFICATIONDATA,
                                    ADDEDBYID,
                                    CHANGEDBYID,
                                    DATEADDED,
                                    DATECHANGED
                                )
                                values
                                (
                                    @NEWID,
                                    @OMITFROMVALIDATION,
                                    @COUNTYCODEID,
                                    @CONGRESSIONALDISTRICTCODEID,
                                    @STATEHOUSEDISTRICTCODEID,
                                    @STATESENATEDISTRICTCODEID,
                                    @LOCALPRECINCTCODEID,
                                    @INFOSOURCECODEID,
                                    @INFOSOURCECOMMENTS,
                                    @REGIONCODEID,
                                    @LASTVALIDATIONATTEMPTDATE,
                                    @VALIDATIONMESSAGE,
                                    @CERTIFICATIONDATA,
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @CURRENTDATE
                                )
                            end
                            else
                            begin
                                update dbo.ADDRESS
                                set
                                    ADDRESSTYPECODEID = @ADDRESSTYPECODEID,
                                    DONOTMAIL = @DONOTMAIL,
                                    STARTDATE = @STARTDATE,
                                    ENDDATE = @ENDDATE,
                                    COUNTRYID = @COUNTRYID,
                                    STATEID = @STATEID,
                                    ADDRESSBLOCK = @ADDRESSBLOCK,
                                    CITY = @CITY,
                                    POSTCODE = @POSTCODE,
                                    CART = @CART,
                                    DPC = @DPC,
                                    LOT = @LOT,
                                    ISPRIMARY = @PRIMARY,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE,
                                    DONOTMAILREASONCODEID = @DONOTMAILREASONCODEID,
                                    HISTORICALSTARTDATE = @HISTORICALSTARTDATE,
                                    HISTORICALENDDATE = @HISTORICALENDDATE,
                                    ISCONFIDENTIAL = @ISCONFIDENTIAL
                                where
                                    ID = @EXISTINGID

                                if exists (select ID from dbo.ADDRESSVALIDATIONUPDATE where ID = @ID)
                                    update dbo.ADDRESSVALIDATIONUPDATE
                                    set OMITFROMVALIDATION = @OMITFROMVALIDATION,                            
                                        COUNTYCODEID = @COUNTYCODEID,
                                        CONGRESSIONALDISTRICTCODEID = @CONGRESSIONALDISTRICTCODEID,
                                        STATEHOUSEDISTRICTCODEID = @STATEHOUSEDISTRICTCODEID,
                                        STATESENATEDISTRICTCODEID = @STATESENATEDISTRICTCODEID,
                                        LOCALPRECINCTCODEID = @LOCALPRECINCTCODEID,
                                        INFOSOURCECODEID = @INFOSOURCECODEID,
                                        INFOSOURCECOMMENTS = @INFOSOURCECOMMENTS,
                                        REGIONCODEID = @REGIONCODEID,                                
                                        LASTVALIDATIONATTEMPTDATE = @LASTVALIDATIONATTEMPTDATE,
                                        VALIDATIONMESSAGE = @VALIDATIONMESSAGE,                                
                                        CERTIFICATIONDATA = @CERTIFICATIONDATA,
                                        CHANGEDBYID = @CHANGEAGENTID,
                                        DATECHANGED = @CURRENTDATE
                                    where ID = @EXISTINGID;
                                else
                                    insert into dbo.ADDRESSVALIDATIONUPDATE
                                    (ID, OMITFROMVALIDATION, COUNTYCODEID, CONGRESSIONALDISTRICTCODEID, STATEHOUSEDISTRICTCODEID, STATESENATEDISTRICTCODEID, LOCALPRECINCTCODEID, INFOSOURCECODEID, INFOSOURCECOMMENTS, REGIONCODEID, LASTVALIDATIONATTEMPTDATE, VALIDATIONMESSAGE, CERTIFICATIONDATA, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                    values
                                    (@EXISTINGID, @OMITFROMVALIDATION, @COUNTYCODEID, @CONGRESSIONALDISTRICTCODEID, @STATEHOUSEDISTRICTCODEID, @STATESENATEDISTRICTCODEID, @LOCALPRECINCTCODEID, @INFOSOURCECODEID, @INFOSOURCECOMMENTS, @REGIONCODEID, @LASTVALIDATIONATTEMPTDATE, @VALIDATIONMESSAGE, coalesce(@CERTIFICATIONDATA, 0), @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);

                            end
                        end
                    end

                    if @UPDATECONTACTS = 1
                    begin
                        update
                            dbo.ADDRESS
                        set
                            ADDRESSTYPECODEID = @ADDRESSTYPECODEID,
                            --ISPRIMARY = @PRIMARY,

                            --DONOTMAIL = @DONOTMAIL,

                            STARTDATE = @STARTDATE,
                            ENDDATE = @ENDDATE,
                            COUNTRYID = @COUNTRYID,
                            STATEID = @STATEID,
                            ADDRESSBLOCK = @ADDRESSBLOCK,
                            CITY = @CITY,
                            POSTCODE = @POSTCODE,
                            CART = @CART,
                            DPC = @DPC,
                            LOT = @LOT,
                            DATECHANGED = @CURRENTDATE,
                            CHANGEDBYID = @CHANGEAGENTID,
                            HISTORICALSTARTDATE = @HISTORICALSTARTDATE,
                            HISTORICALENDDATE = @HISTORICALENDDATE,
                            ISCONFIDENTIAL = @ISCONFIDENTIAL
                        from dbo.ADDRESS a
                            inner join dbo.RELATIONSHIP r on r.ID=a.RELATIONSHIPID
                        where 
                            r.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID and
                            r.ISCONTACT=1 and
                            a.COUNTRYID = @OLDCOUNTRYID and
                            (a.STATEID = @OLDSTATEID or (a.STATEID is null and @OLDSTATEID is null)) and
                            (a.ADDRESSBLOCK = @OLDADDRESSBLOCK or (a.ADDRESSBLOCK is null and @OLDADDRESSBLOCK is null)) and
                            (a.CITY = @OLDCITY or (a.CITY is null and @OLDCITY is null)) and
                            (a.POSTCODE = @OLDPOSTCODE or (a.POSTCODE is null and @OLDPOSTCODE is null));

                        update dbo.ADDRESSVALIDATIONUPDATE
                        set --OMITFROMVALIDATION = @OMITFROMVALIDATION,                            

                            COUNTYCODEID = @COUNTYCODEID,
                            CONGRESSIONALDISTRICTCODEID = @CONGRESSIONALDISTRICTCODEID,
                            STATEHOUSEDISTRICTCODEID = @STATEHOUSEDISTRICTCODEID,
                            STATESENATEDISTRICTCODEID = @STATESENATEDISTRICTCODEID,
                            LOCALPRECINCTCODEID = @LOCALPRECINCTCODEID,
                            INFOSOURCECODEID = @INFOSOURCECODEID,
                            INFOSOURCECOMMENTS = @INFOSOURCECOMMENTS,
                            REGIONCODEID = @REGIONCODEID,                                
                            --LASTVALIDATIONATTEMPTDATE = @LASTVALIDATIONATTEMPTDATE,

                            --VALIDATIONMESSAGE = @VALIDATIONMESSAGE,                                

                            --CERTIFICATIONDATA = @CERTIFICATIONDATA,

                            DATECHANGED = @CURRENTDATE,
                            CHANGEDBYID = @CHANGEAGENTID
                        where ID in (
                                        select a.ID
                                        from dbo.ADDRESS a
                                            inner join dbo.RELATIONSHIP r on r.ID=a.RELATIONSHIPID
                                        where 
                                            r.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID and
                                            r.ISCONTACT=1 and
                                            a.COUNTRYID = @OLDCOUNTRYID and
                                            (a.STATEID = @OLDSTATEID or (a.STATEID is null and @OLDSTATEID is null)) and
                                            (a.ADDRESSBLOCK = @OLDADDRESSBLOCK or (a.ADDRESSBLOCK is null and @OLDADDRESSBLOCK is null)) and
                                            (a.CITY = @OLDCITY or (a.CITY is null and @OLDCITY is null)) and
                                            (a.POSTCODE = @OLDPOSTCODE or (a.POSTCODE is null and @OLDPOSTCODE is null))
                                    );

                        insert into dbo.ADDRESSVALIDATIONUPDATE
                        (ID, OMITFROMVALIDATION, COUNTYCODEID, CONGRESSIONALDISTRICTCODEID, STATEHOUSEDISTRICTCODEID, STATESENATEDISTRICTCODEID, LOCALPRECINCTCODEID, INFOSOURCECODEID, INFOSOURCECOMMENTS, REGIONCODEID, LASTVALIDATIONATTEMPTDATE, VALIDATIONMESSAGE, CERTIFICATIONDATA, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        (select ID, @OMITFROMVALIDATION, @COUNTYCODEID, @CONGRESSIONALDISTRICTCODEID, @STATEHOUSEDISTRICTCODEID, @STATESENATEDISTRICTCODEID, @LOCALPRECINCTCODEID, @INFOSOURCECODEID, @INFOSOURCECOMMENTS, @REGIONCODEID, @LASTVALIDATIONATTEMPTDATE, @VALIDATIONMESSAGE, coalesce(@CERTIFICATIONDATA, 0), @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                            from dbo.ADDRESS where ID in (
                                        select a.ID
                                        from dbo.ADDRESS a
                                            inner join dbo.RELATIONSHIP r on r.ID=a.RELATIONSHIPID
                                        where 
                                            r.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID and
                                            r.ISCONTACT=1 and
                                            a.COUNTRYID = @OLDCOUNTRYID and
                                            (a.STATEID = @OLDSTATEID or (a.STATEID is null and @OLDSTATEID is null)) and
                                            (a.ADDRESSBLOCK = @OLDADDRESSBLOCK or (a.ADDRESSBLOCK is null and @OLDADDRESSBLOCK is null)) and
                                            (a.CITY = @OLDCITY or (a.CITY is null and @OLDCITY is null)) and
                                            (a.POSTCODE = @OLDPOSTCODE or (a.POSTCODE is null and @OLDPOSTCODE is null))
                                    ) and ID not in (select ID from dbo.ADDRESSVALIDATIONUPDATE));
                    end

                end try
                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch

                return 0;