USP_BBNC_COMMITPROFILEUPDATEADDITIONALADDRESS

Updates a constituent's additional address information 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
@ADDRESSTYPECODEID uniqueidentifier IN
@PREVIOUSADDRESSTYPECODEID uniqueidentifier IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@SEASONALSTARTDATE UDT_MONTHDAY IN
@SEASONALENDDATE UDT_MONTHDAY IN
@DONOTMAIL bit IN
@ISPRIMARY bit IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN

Definition

Copy


CREATE procedure dbo.USP_BBNC_COMMITPROFILEUPDATEADDITIONALADDRESS
                (
                    @CONSTITUENTID uniqueidentifier = null,    
          @ADDRESSID uniqueidentifier = null,
                    @COUNTRYID uniqueidentifier = null,
                    @ADDRESSBLOCK nvarchar(150) = '',
                    @CITY nvarchar(50) = '',
                    @STATEID uniqueidentifier = null,
                    @POSTCODE nvarchar(12) = '',
                    @ADDNEWADDRESS bit = 0,
          @ADDRESSTYPECODEID uniqueidentifier = null,
                    @PREVIOUSADDRESSTYPECODEID uniqueidentifier = null,
          @STARTDATE datetime = null,
          @ENDDATE datetime = null,
          @SEASONALSTARTDATE dbo.UDT_MONTHDAY = null,
          @SEASONALENDDATE dbo.UDT_MONTHDAY = null,
          @DONOTMAIL bit = null,
          @ISPRIMARY bit = null,
                    @CHANGEAGENTID uniqueidentifier = null,
                    @CHANGEDATE datetime = null
                ) as
                    set nocount on;

                    declare @SEQUENCE int;
          declare @PRIMARYADDRESSID uniqueidentifier;

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

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

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

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

                    declare @CONSTITADDRESSID uniqueidentifier;

                    begin try
            if @ISPRIMARY = 1
              begin
                select 
                  @PRIMARYADDRESSID = [ID]
                from 
                  dbo.ADDRESS
                where
                  [CONSTITUENTID] = @CONSTITUENTID
                  and [ISPRIMARY] = 1;

                if @PRIMARYADDRESSID is not null and (@ADDRESSID is null or @PRIMARYADDRESSID <> @ADDRESSID or (@PRIMARYADDRESSID = @ADDRESSID and @ADDNEWADDRESS = 1))
                  begin
                    update dbo.ADDRESS set
                      [ISPRIMARY] = 0
                    where
                      [ID] = @PRIMARYADDRESSID;        
                  end
               end


                        if @ADDNEWADDRESS = 0
                            begin
                                if @ADDRESSID is not null
                                    update dbo.ADDRESS set
                    [ADDRESSTYPECODEID] = @ADDRESSTYPECODEID,
                    [ISPRIMARY] = @ISPRIMARY,
                                        [COUNTRYID] = @COUNTRYID,
                                        [ADDRESSBLOCK] = @ADDRESSBLOCK,
                                        [CITY] = @CITY,
                                        [STATEID] = @STATEID,
                                        [POSTCODE] = @POSTCODE,
                    [HISTORICALSTARTDATE] = @STARTDATE,
                    [HISTORICALENDDATE] = @ENDDATE,
                    [STARTDATE] = @SEASONALSTARTDATE,
                    [ENDDATE] = @SEASONALENDDATE,
                    [DONOTMAIL] = @DONOTMAIL,
                                        [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 @PREVIOUSADDRESSTYPECODEID is not null
                                begin
                                    if @ADDRESSID is not null
                                        update dbo.ADDRESS set
                                            [HISTORICALENDDATE] = case when [ADDRESSTYPECODEID] = @ADDRESSTYPECODEID and [ISPRIMARY] = 0 then convert(date,@CHANGEDATE)
                                            else [HISTORICALENDDATE]
                                            end,
                      [ADDRESSTYPECODEID] = @PREVIOUSADDRESSTYPECODEID,
                                            [DATECHANGED] = @CHANGEDATE,
                                            [CHANGEDBYID] = @CHANGEAGENTID
                                        where
                                            [ID] = @ADDRESSID
                                end
                else
                  if @ADDRESSID is not null
                    update dbo.ADDRESS set
                                            [DATECHANGED] = @CHANGEDATE,
                                            [CHANGEDBYID] = @CHANGEAGENTID,
                      [HISTORICALENDDATE] = case when [ADDRESSTYPECODEID] = @ADDRESSTYPECODEID and [ISPRIMARY] = 0 then convert(date,@CHANGEDATE)
                                            else [HISTORICALENDDATE]
                                            end
                                        where
                                            [ID] = @ADDRESSID

                                set @ADDRESSID = newid();

                                insert into dbo.ADDRESS
                                (
                                    [ID],
                                    [CONSTITUENTID],
                                    [ADDRESSTYPECODEID],
                                    [ISPRIMARY],
                                    [DONOTMAIL],
                                    [STARTDATE],
                                    [ENDDATE],
                                    [COUNTRYID],
                                    [STATEID],
                                    [ADDRESSBLOCK],
                                    [CITY],
                                    [POSTCODE],
                                    [CART],
                                    [DPC],
                                    [LOT],                  
                  [HISTORICALSTARTDATE],
                  [HISTORICALENDDATE],
                                    [SEQUENCE],
                                    [ADDEDBYID],
                                    [CHANGEDBYID],
                                    [DATEADDED],
                                    [DATECHANGED]
                                )
                                values
                                (
                                    @ADDRESSID,
                                    @CONSTITUENTID,
                                    @ADDRESSTYPECODEID,
                                    @ISPRIMARY,
                                    @DONOTMAIL,
                                    @SEASONALSTARTDATE,
                                    @SEASONALENDDATE,
                                    @COUNTRYID,
                                    @STATEID,
                                    @ADDRESSBLOCK,
                                    @CITY,
                                    @POSTCODE,
                                    '',
                                    '',
                                    '',
                  @STARTDATE,
                  @ENDDATE,
                                    @SEQUENCE + 1,
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID,
                                    @CHANGEDATE,
                                    @CHANGEDATE
                                );

                            end

                            if @ADDRESSID is not null
                                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 try
                    begin catch
                        exec dbo.USP_RAISE_ERROR;
                        return 1;
                    end catch

                    return 0;