USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTADDRESSUPDATEBATCHCOMMIT_3

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@ADDRESSTYPECODEID uniqueidentifier IN
@COUNTRYID uniqueidentifier IN
@ADDRESSBLOCK nvarchar(150) IN
@CITY nvarchar(50) IN
@STATEID uniqueidentifier IN
@POSTCODE nvarchar(12) IN
@ISPRIMARY bit IN
@DONOTMAIL bit IN
@UPDATEMATCHINGSPOUSEADDRESSES bit IN
@VALIDATEONLY bit IN
@CART nvarchar(10) IN
@DPC nvarchar(8) IN
@LOT nvarchar(5) IN
@COUNTYCODEID uniqueidentifier IN
@OMITFROMVALIDATION bit 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
@STARTDATE UDT_MONTHDAY IN
@ENDDATE UDT_MONTHDAY IN
@DONOTMAILREASONCODEID uniqueidentifier IN
@UPDATEMATCHINGHOUSEHOLDADDRESSES bit IN
@INFOSOURCECOMMENTS nvarchar(256) IN

Definition

Copy


                create procedure dbo.USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTADDRESSUPDATEBATCHCOMMIT_3
                (
                    @ID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier,
                    @ADDRESSTYPECODEID uniqueidentifier,
                    @COUNTRYID uniqueidentifier,
                    @ADDRESSBLOCK nvarchar(150),
                    @CITY nvarchar(50),
                    @STATEID uniqueidentifier,
                    @POSTCODE nvarchar(12),
                    @ISPRIMARY bit,
                    @DONOTMAIL bit,
                    @UPDATEMATCHINGSPOUSEADDRESSES bit,
                    @VALIDATEONLY bit,
                    @CART nvarchar(10),
                    @DPC nvarchar(8),
                    @LOT nvarchar(5),
                    @COUNTYCODEID uniqueidentifier,
                    @OMITFROMVALIDATION bit,
                    @CONGRESSIONALDISTRICTCODEID uniqueidentifier,
                    @STATEHOUSEDISTRICTCODEID uniqueidentifier,
                    @STATESENATEDISTRICTCODEID uniqueidentifier,
                    @LOCALPRECINCTCODEID uniqueidentifier,
                    @INFOSOURCECODEID uniqueidentifier,
                    @REGIONCODEID uniqueidentifier,
                    @LASTVALIDATIONATTEMPTDATE datetime,
                    @VALIDATIONMESSAGE nvarchar(200),
                    @CERTIFICATIONDATA int,
                    @STARTDATE dbo.UDT_MONTHDAY,
                    @ENDDATE dbo.UDT_MONTHDAY,
                    @DONOTMAILREASONCODEID uniqueidentifier,
                    @UPDATEMATCHINGHOUSEHOLDADDRESSES bit,
          @INFOSOURCECOMMENTS nvarchar(256)
                ) as
                    set nocount on;

                    begin try
                        if @ID is null
                            set @ID = newid();

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

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

                        declare @SEQUENCE int;

                        -- THM 03/07/2008 CR295315-030708 & CR295291-030608 set default values if null

                        if @CERTIFICATIONDATA is null
                            set @CERTIFICATIONDATA = 0

                        if @OMITFROMVALIDATION is null
                            set @OMITFROMVALIDATION = 0

                        if @DONOTMAIL = 0
                            set @DONOTMAILREASONCODEID = null

                        declare @CONSTITUENTID uniqueidentifier;
                        select @CONSTITUENTID = ADDRESS.[CONSTITUENTID]
                        from dbo.[ADDRESS]
                        where [ID] = @ID;

                        declare @NULLVALUE uniqueidentifier = newid();
                        if exists (select 'X' 
                                from dbo.ADDRESS
                                where  HISTORICALENDDATE is null and DONOTMAIL = 0 and CONSTITUENTID = @CONSTITUENTID
                                and coalesce(ADDRESSBLOCK,'') = coalesce(@ADDRESSBLOCK,'') and coalesce(CITY,'') = coalesce(@CITY,'')
                                and coalesce(STATEID,@NULLVALUE) = coalesce(@STATEID,@NULLVALUE)
                                and coalesce(ADDRESSTYPECODEID,@NULLVALUE) = coalesce(@ADDRESSTYPECODEID,@NULLVALUE)
                                and coalesce(COUNTRYID,@NULLVALUE) = coalesce(@COUNTRYID,@NULLVALUE)
                                and coalesce(POSTCODE,'') =coalesce(@POSTCODE,'')
                                and ADDRESS.ID <> @ID)
                                    raiserror('BBERR_ADDRESS_DUPLICATENOTALLOWED', 13, 1);

                        declare @ADDRESSISPRIMARY bit = 0;
                        select
                            @ADDRESSISPRIMARY = ISPRIMARY
                        from
                            dbo.ADDRESS
                        where
                            ID = @ID;

                        if @ISPRIMARY = 0 and @ADDRESSISPRIMARY = 1
                        begin
                            raiserror('BBERR_ADDRESS_PRIMARYREMOVED : An address cannot be unmarked as primary in Constituent Address Update Batch.', 13, 1);
                        end

                        if @VALIDATEONLY = 0
                            begin
                                declare @OLDCOUNTRYID uniqueidentifier;
                                declare @OLDADDRESSBLOCK nvarchar(150);
                                declare @OLDCITY nvarchar(50);
                                declare @OLDSTATEID uniqueidentifier;
                                declare @OLDPOSTCODE nvarchar(12);
                                declare @OLDADDRESSTYPECODEID uniqueidentifier;

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

                                if @ISPRIMARY = 1
                                    update
                                        dbo.ADDRESS
                                    set
                                        [ISPRIMARY] = 0,
                                        [DATECHANGED] = @CURRENTDATE,
                                        [CHANGEDBYID] = @CHANGEAGENTID
                                    where
                                        [CONSTITUENTID] = @CONSTITUENTID and [ISPRIMARY] = 1;

                                update
                                    dbo.ADDRESS
                                set
                                    [ADDRESSTYPECODEID] = @ADDRESSTYPECODEID,
                                    [ISPRIMARY] = @ISPRIMARY,
                                    [DONOTMAIL] = @DONOTMAIL,
                                    [COUNTRYID] = @COUNTRYID,
                                    [STATEID] = @STATEID,
                                    [ADDRESSBLOCK] = @ADDRESSBLOCK,
                                    [CITY] = @CITY,
                                    [POSTCODE]  = @POSTCODE,
                                    [CHANGEDBYID] = @CHANGEAGENTID,
                                    [DATECHANGED] = @CURRENTDATE,
                                    [CART] = @CART,
                                    [DPC] = @DPC,
                                    [LOT] = @LOT,
                                    [STARTDATE] = @STARTDATE,
                                    [ENDDATE] = @ENDDATE,
                                    [DONOTMAILREASONCODEID] = @DONOTMAILREASONCODEID
                                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,
                                        REGIONCODEID = @REGIONCODEID,                                
                                        LASTVALIDATIONATTEMPTDATE = @LASTVALIDATIONATTEMPTDATE,
                                        VALIDATIONMESSAGE = @VALIDATIONMESSAGE,                                
                                        CERTIFICATIONDATA = @CERTIFICATIONDATA,
                                        CHANGEDBYID = @CHANGEAGENTID,
                                        DATECHANGED = @CURRENTDATE,
                    INFOSOURCECOMMENTS = @INFOSOURCECOMMENTS
                                    where ID = @ID;
                                else
                                    insert into dbo.ADDRESSVALIDATIONUPDATE
                                    (ID, OMITFROMVALIDATION, COUNTYCODEID, CONGRESSIONALDISTRICTCODEID, STATEHOUSEDISTRICTCODEID, STATESENATEDISTRICTCODEID, LOCALPRECINCTCODEID, INFOSOURCECODEID, REGIONCODEID, LASTVALIDATIONATTEMPTDATE, VALIDATIONMESSAGE, CERTIFICATIONDATA,INFOSOURCECOMMENTS, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                    values
                                    (@ID, @OMITFROMVALIDATION, @COUNTYCODEID, @CONGRESSIONALDISTRICTCODEID, @STATEHOUSEDISTRICTCODEID, @STATESENATEDISTRICTCODEID, @LOCALPRECINCTCODEID, @INFOSOURCECODEID, @REGIONCODEID, @LASTVALIDATIONATTEMPTDATE, @VALIDATIONMESSAGE, coalesce(@CERTIFICATIONDATA, 0), @INFOSOURCECOMMENTS, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);


                                if @UPDATEMATCHINGSPOUSEADDRESSES = 1 and exists(select object_id from sys.objects where type = 'U' and name = 'RELATIONSHIP')
                                    update
                                        dbo.ADDRESS
                                    set
                                        COUNTRYID = @COUNTRYID,
                                        STATEID = @STATEID,
                                        ADDRESSBLOCK = @ADDRESSBLOCK,
                                        CITY = @CITY,
                                        POSTCODE = @POSTCODE,
                                        STARTDATE = @STARTDATE,
                                        ENDDATE = @ENDDATE,
                                        DONOTMAILREASONCODEID = @DONOTMAILREASONCODEID,
                                        DATECHANGED = @CURRENTDATE,
                                        CHANGEDBYID = @CHANGEAGENTID
                                    where
                                        ADDRESS.ID in (
                                                select
                                                    SPOUSEADDRESS.ID
                                                from
                                                    dbo.RELATIONSHIP
                                                    left join dbo.ADDRESS as SPOUSEADDRESS on SPOUSEADDRESS.CONSTITUENTID = RELATIONSHIP.RECIPROCALCONSTITUENTID
                                                where
                                                    RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID and
                                                    RELATIONSHIP.ISSPOUSE = 1 and
                                                    SPOUSEADDRESS.COUNTRYID = @OLDCOUNTRYID and
                                                    SPOUSEADDRESS.ADDRESSBLOCK = @OLDADDRESSBLOCK and
                                                    SPOUSEADDRESS.CITY = @OLDCITY and
                                                    (SPOUSEADDRESS.STATEID = @OLDSTATEID or (SPOUSEADDRESS.STATEID is null and @OLDSTATEID is null)) and
                                                    SPOUSEADDRESS.POSTCODE = @OLDPOSTCODE
                                            );

                                if @UPDATEMATCHINGHOUSEHOLDADDRESSES = 1
                                begin
                                    declare @EARLIESTTIMECURRENTDATE date;
                                    set @EARLIESTTIMECURRENTDATE = getdate();

                                    declare @MATCHINGCONSTITUENTS table(ID uniqueidentifier);
                                    insert into @MATCHINGCONSTITUENTS select CONSTITUENTID from dbo.UFN_ADDRESS_MATCHINGHOUSEHOLDRECORDS(@CONSTITUENTID, @OLDCOUNTRYID, @OLDSTATEID, @OLDADDRESSBLOCK, @OLDCITY, @OLDPOSTCODE, @OLDADDRESSTYPECODEID);

                                    -- create table of matching addresses

                                    declare @MATCHING table(ID uniqueidentifier);
                                    insert into @MATCHING
                                        select
                                            ID 
                                        from
                                            dbo.ADDRESS 
                                        where
                                            COUNTRYID = @OLDCOUNTRYID 
                                            and ADDRESSBLOCK = @OLDADDRESSBLOCK 
                                            and CITY = @OLDCITY 
                                            and ( (STATEID = @OLDSTATEID) or (STATEID is null and @OLDSTATEID is null) ) 
                                            and POSTCODE = @OLDPOSTCODE
                                            and ( (ADDRESSTYPECODEID = @OLDADDRESSTYPECODEID) or (ADDRESSTYPECODEID is null and @OLDADDRESSTYPECODEID is null) )
                                            and CONSTITUENTID in (select ID from @MATCHINGCONSTITUENTS);

                                    -- update the existing records

                                    -- Per 271319, do *not* update ISPRIMARY on the matching addresses.

                                    update dbo.ADDRESS
                                    set
                                        ADDRESSTYPECODEID = @ADDRESSTYPECODEID,
                                        DONOTMAIL = @DONOTMAIL,
                                        DONOTMAILREASONCODEID = @DONOTMAILREASONCODEID,
                                        STARTDATE = @STARTDATE,
                                        ENDDATE = @ENDDATE,
                                        COUNTRYID = @COUNTRYID,
                                        STATEID = @STATEID,
                                        ADDRESSBLOCK = @ADDRESSBLOCK,
                                        CITY = @CITY,
                                        POSTCODE = @POSTCODE,
                                        CART = @CART,
                                        DPC = @DPC,
                                        LOT = @LOT,
                                        CHANGEDBYID = @CHANGEAGENTID,
                                        DATECHANGED = @CURRENTDATE
                                    where
                                        exists (
                                            select ID
                                            from @MATCHING
                                            where ID = ADDRESS.ID
                                        );

                                    -- insert address validation update data where there are no records with the new number

                                    update dbo.ADDRESSVALIDATIONUPDATE
                                    set
                                        OMITFROMVALIDATION = @OMITFROMVALIDATION,
                                        COUNTYCODEID = @COUNTYCODEID,
                                        CONGRESSIONALDISTRICTCODEID = @CONGRESSIONALDISTRICTCODEID,
                                        STATEHOUSEDISTRICTCODEID = @STATEHOUSEDISTRICTCODEID,
                                        STATESENATEDISTRICTCODEID = @STATESENATEDISTRICTCODEID,
                                        LOCALPRECINCTCODEID = @LOCALPRECINCTCODEID,
                                        INFOSOURCECODEID = @INFOSOURCECODEID,
                                        REGIONCODEID = @REGIONCODEID,
                                        LASTVALIDATIONATTEMPTDATE = @LASTVALIDATIONATTEMPTDATE,
                                        VALIDATIONMESSAGE = @VALIDATIONMESSAGE,
                                        CERTIFICATIONDATA = @CERTIFICATIONDATA,
                                        CHANGEDBYID = @CHANGEAGENTID,
                                        DATECHANGED = @CURRENTDATE,
                    INFOSOURCECOMMENTS = @INFOSOURCECOMMENTS
                                    where
                                        exists (
                                            select ID
                                            from @MATCHING
                                            where ID = ADDRESSVALIDATIONUPDATE.ID
                                        );

                                    insert into dbo.ADDRESSVALIDATIONUPDATE
                                        (ID, OMITFROMVALIDATION, COUNTYCODEID, CONGRESSIONALDISTRICTCODEID, STATEHOUSEDISTRICTCODEID, STATESENATEDISTRICTCODEID, LOCALPRECINCTCODEID, INFOSOURCECODEID, REGIONCODEID, LASTVALIDATIONATTEMPTDATE, VALIDATIONMESSAGE, CERTIFICATIONDATA, INFOSOURCECOMMENTS, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                    select
                                        ID, @OMITFROMVALIDATION, @COUNTYCODEID, @CONGRESSIONALDISTRICTCODEID, @STATEHOUSEDISTRICTCODEID, @STATESENATEDISTRICTCODEID, @LOCALPRECINCTCODEID, @INFOSOURCECODEID, @REGIONCODEID, @LASTVALIDATIONATTEMPTDATE, @VALIDATIONMESSAGE, @CERTIFICATIONDATA, @INFOSOURCECOMMENTS, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
                                    from dbo.ADDRESS
                                    where
                                        exists (
                                            select ID
                                            from @MATCHING
                                            where ID = ADDRESS.ID
                                            and ID not in (select ID from dbo.ADDRESSVALIDATIONUPDATE)
                                        );
                                end
                            end;
                    end try
                    begin catch
                        exec dbo.USP_RAISE_ERROR;
                        return 1;
                    end catch

                    return 0;