USP_BBNC_COMMITPROFILEUPDATEADDRESSANY

Updates a given address from a Blackbaud Internet Solutions profile transaction to the system from a given batch.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@ADDRESSID uniqueidentifier IN
@COUNTRYID uniqueidentifier IN
@ADDRESSBLOCK nvarchar(150) IN
@CITY nvarchar(50) IN
@STATEID uniqueidentifier IN
@POSTCODE nvarchar(12) IN
@ADDNEWADDRESS bit IN
@MAKENEWPREFERRED bit IN
@ADDRESSTYPECODEID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN
@PREVIOUSADDRESSTYPECODEID uniqueidentifier IN

Definition

Copy


  CREATE procedure dbo.USP_BBNC_COMMITPROFILEUPDATEADDRESSANY
                (
                    @CONSTITUENTID uniqueidentifier = null,    
                    @ADDRESSID uniqueidentifier = null,                        
                    @COUNTRYID uniqueidentifier = null,
                    @ADDRESSBLOCK nvarchar(150) = '',
                    @CITY nvarchar(50) = '',
                    @STATEID uniqueidentifier = null,
                    @POSTCODE nvarchar(12) = '',
                    @ADDNEWADDRESS bit = 0,
                    @MAKENEWPREFERRED bit = 0,
                    @ADDRESSTYPECODEID uniqueidentifier = null,
                    @CHANGEAGENTID uniqueidentifier = null,
                    @CHANGEDATE datetime = null,
          @PREVIOUSADDRESSTYPECODEID uniqueidentifier = null
                ) as
                    set nocount on;

                    declare @SEQUENCE int;

                    if @CONSTITUENTID is null
                        begin
                            raiserror('The constituent ID is required',16,1);
                            return -2;
                        end

                    if @MAKENEWPREFERRED is null
                        set @MAKENEWPREFERRED = 0;

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

                    if @CHANGEDATE is null
                        set @CHANGEDATE = getdate();

                    --PRIMARYADDRESSTYPECODEID can be null

                    declare @PRIMARYADDRESSTYPECODEID uniqueidentifier;
                    declare @INFOSOURCECODEID uniqueidentifier;
                    select top (1)
                        @PRIMARYADDRESSTYPECODEID = [PRIMARYADDRESSTYPECODEID],
                        @INFOSOURCECODEID = [INFOSOURCECODEID]
                    from
                        dbo.NETCOMMUNITYDEFAULTCODEMAP;

                    declare @CONSTITADDRESSID uniqueidentifier;

                    begin try
                        if @ADDNEWADDRESS = 0
                            begin
                                --if @CONSTITADDRESSID is not null

                                    update dbo.ADDRESS set
                                        [COUNTRYID] = @COUNTRYID,
                                        [ADDRESSBLOCK] = @ADDRESSBLOCK,
                                        [CITY] = @CITY,
                                        [STATEID] = @STATEID,
                                        [POSTCODE] = @POSTCODE,
                    [ADDRESSTYPECODEID] = case when @ADDRESSTYPECODEID is null then [ADDRESSTYPECODEID]
                                            else @ADDRESSTYPECODEID
                                            end,
                                        [CHANGEDBYID] = @CHANGEAGENTID,
                                        [DATECHANGED] = @CHANGEDATE
                                    where
                                        ID = @ADDRESSID;


                  if not exists (select ID from dbo.ADDRESSVALIDATIONUPDATE where ID = @ADDRESSID)
                                      insert into dbo.ADDRESSVALIDATIONUPDATE
                                      (
                                          [ID],
                                          [INFOSOURCECODEID],
                                          [ADDEDBYID],
                                          [CHANGEDBYID],
                                          [DATEADDED],
                                          [DATECHANGED]
                                      )
                                      values
                                      (
                                          @ADDRESSID,
                                          @INFOSOURCECODEID,
                                          @CHANGEAGENTID,
                                          @CHANGEAGENTID,
                                          @CHANGEDATE,
                                          @CHANGEDATE
                                      )
                                  else
                                      update dbo.ADDRESSVALIDATIONUPDATE set
                                          [INFOSOURCECODEID] = @INFOSOURCECODEID,
                                          [CHANGEDBYID] = @CHANGEAGENTID,
                                          [DATECHANGED] = @CHANGEDATE
                                      where ID = @ADDRESSID  
                            end
                        else
                            begin

                                select @SEQUENCE = max([SEQUENCE]) 
                                from dbo.ADDRESS
                                where [CONSTITUENTID] = @CONSTITUENTID;

                                if @SEQUENCE is null
                                    set @SEQUENCE = 1;

                                if @MAKENEWPREFERRED = 1
                                begin
                                        update dbo.ADDRESS set
                                            [HISTORICALENDDATE] = case when [ADDRESSTYPECODEID] = @ADDRESSTYPECODEID then convert(date,@CHANGEDATE)
                                            else NULL
                                            end,
                      [ISPRIMARY] = 0,
                                            [DATECHANGED] = @CHANGEDATE,
                                            [CHANGEDBYID] = @CHANGEAGENTID,
                      [ADDRESSTYPECODEID] = case when @PREVIOUSADDRESSTYPECODEID is null then [ADDRESSTYPECODEID]
                                            else @PREVIOUSADDRESSTYPECODEID
                                            end
                                        where
                                            [CONSTITUENTID] = @CONSTITUENTID and [ISPRIMARY] = 1;

                                end

                -- TMV 09/26/2007 CR284107-092507 There should always be a primary address

                                if not exists(select 1 from dbo.ADDRESS where [CONSTITUENTID] = @CONSTITUENTID and [ISPRIMARY] = 1)
                                    set @MAKENEWPREFERRED = 1;

                                declare @CONSTITADDRESSISPRIMARY bit = 0;
                                select top 1
                                    @CONSTITADDRESSID = ID,
                                    @CONSTITADDRESSISPRIMARY = ISPRIMARY
                                from
                                    dbo.ADDRESS
                                where
                                    @CONSTITUENTID = [CONSTITUENTID]
                                    and
                                    (@PRIMARYADDRESSTYPECODEID = [ADDRESSTYPECODEID] or (@PRIMARYADDRESSTYPECODEID is null and [ADDRESSTYPECODEID] is null))
                                    and
                                    @COUNTRYID = [COUNTRYID]
                                    and
                                    (@STATEID = [STATEID] or (@STATEID is null and [STATEID] is null))
                                    and
                                    @ADDRESSBLOCK = [ADDRESSBLOCK]
                                    and
                                    @CITY = [CITY]
                                    and
                                    @POSTCODE = [POSTCODE]
                                    and
                                    '' = [CART]
                                    and
                                    '' = [DPC]
                                    and
                                    '' = [LOT]
                    -- Bug 413289 check for non former addresses only

                                    AND (HISTORICALENDDATE is null OR HISTORICALENDDATE > convert(date, GETDATE()));

                                --Bug 108929 Only insert the address if an identical address does not already exist

                                if @CONSTITADDRESSID is null
                                begin
                                    set @CONSTITADDRESSID = newid();

                                    insert into dbo.ADDRESS
                                    (
                                        [ID],
                                        [CONSTITUENTID],
                                        [ADDRESSTYPECODEID],
                                        [ISPRIMARY],
                                        [DONOTMAIL],
                                        [STARTDATE],
                                        [ENDDATE],
                                        [COUNTRYID],
                                        [STATEID],
                                        [ADDRESSBLOCK],
                                        [CITY],
                                        [POSTCODE],
                                        [CART],
                                        [DPC],
                                        [LOT],
                                        [SEQUENCE],
                                        [ADDEDBYID],
                                        [CHANGEDBYID],
                                        [DATEADDED],
                                        [DATECHANGED]
                                    )
                                    values
                                    (
                                        @CONSTITADDRESSID,
                                        @CONSTITUENTID,
                                        @ADDRESSTYPECODEID,
                                        @MAKENEWPREFERRED,
                                        0,
                                        '0000',
                                        '0000',
                                        @COUNTRYID,
                                        @STATEID,
                                        @ADDRESSBLOCK,
                                        @CITY,
                                        @POSTCODE,
                                        '',
                                        '',
                                        '',
                                        @SEQUENCE + 1,
                                        @CHANGEAGENTID,
                                        @CHANGEAGENTID,
                                        @CHANGEDATE,
                                        @CHANGEDATE
                                    );
                                end
                                else if @CONSTITADDRESSISPRIMARY = 0 and @MAKENEWPREFERRED = 1
                                    update dbo.ADDRESS set
                                        ISPRIMARY = 1
                                    where
                                        ID = @CONSTITADDRESSID;

                            end

                            if @CONSTITADDRESSID is not null
                                if not exists (select ID from dbo.ADDRESSVALIDATIONUPDATE where ID = @CONSTITADDRESSID)
                                    insert into dbo.ADDRESSVALIDATIONUPDATE
                                    (
                                        [ID],
                                        [INFOSOURCECODEID],
                                        [ADDEDBYID],
                                        [CHANGEDBYID],
                                        [DATEADDED],
                                        [DATECHANGED]
                                    )
                                    values
                                    (
                                        @CONSTITADDRESSID,
                                        @INFOSOURCECODEID,
                                        @CHANGEAGENTID,
                                        @CHANGEAGENTID,
                                        @CHANGEDATE,
                                        @CHANGEDATE
                                    )
                                else
                                    update dbo.ADDRESSVALIDATIONUPDATE set
                                        [INFOSOURCECODEID] = @INFOSOURCECODEID,
                                        [CHANGEDBYID] = @CHANGEAGENTID,
                                        [DATECHANGED] = @CHANGEDATE
                                    where ID = @CONSTITADDRESSID

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

                    return 0;