USP_BBNC_COMMITPROFILEUPDATEPHONE

Updates a constituent's phone information from a Blackbaud Internet Solutions profile transaction to the system from a given batch.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@PHONETYPECODEID uniqueidentifier IN
@NUMBER nvarchar(100) IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN

Definition

Copy


            CREATE procedure dbo.USP_BBNC_COMMITPROFILEUPDATEPHONE
                (
                    @CONSTITUENTID uniqueidentifier = null,                            
                    @PHONETYPECODEID uniqueidentifier = null,
                    @NUMBER nvarchar(100) = '',
                    @CHANGEAGENTID uniqueidentifier = null,
                    @CHANGEDATE datetime = null
                ) as
                    set nocount on;

                    declare @ID uniqueidentifier;
                    declare @SEQUENCE int;
                    declare @ISPRIMARY bit;
                    declare @DUPLICATEPHONEID 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();

                    if @PHONETYPECODEID is not null
                        select top 1
                            @ID = [ID],
                            @ISPRIMARY = [ISPRIMARY]
                        from
                            dbo.PHONE
                        where
                            [CONSTITUENTID] = @CONSTITUENTID
                            and [PHONETYPECODEID] = @PHONETYPECODEID
                        order by
                            ISPRIMARY desc, SEQUENCE;

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

                    begin try
                        if @ID is not null
                            begin
                                declare @DUPLICATEISPRIMARY as bit =0
                                select
                                    @DUPLICATEPHONEID = [ID],
                                    @DUPLICATEISPRIMARY = case when [ISPRIMARY] = 1 then 1 else 0 end
                                from
                                    dbo.PHONE
                                where
                                    [CONSTITUENTID] = @CONSTITUENTID
                                    and [PHONETYPECODEID] = @PHONETYPECODEID
                                    and [NUMBER] = @NUMBER;

                                -- The type and number for constituent phone must be unique.

                                if @DUPLICATEPHONEID is not null and @DUPLICATEPHONEID <> @ID
                                begin
                                    exec dbo.USP_PHONE_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID;
                                end                                

                                if len(@NUMBER) > 0
                                begin
                                    update dbo.PHONE set
                                        [ISPRIMARY] = 0,
                                        [DONOTCALL] = 1,
                                        [CHANGEDBYID] = @CHANGEAGENTID,
                                        [DATECHANGED] = @CHANGEDATE,
                                        [ENDDATE] = GETDATE()
                                    where
                                        [CONSTITUENTID] = @CONSTITUENTID and [ISPRIMARY] = 1
                                        and
                                        (
                                            @DUPLICATEPHONEID is null
                                            or
                                            [ID] <> @DUPLICATEPHONEID
                                        );
                            if @DUPLICATEPHONEID is not null and @DUPLICATEPHONEID = @ID
                                begin 
                                --entry already exist , just make it primary contact

                                if(@DUPLICATEISPRIMARY <>1)
                                begin
                                update dbo.PHONE set
                                        [ISPRIMARY] = 1,
                                        [DONOTCALL] = 0,
                                        [CHANGEDBYID] = @CHANGEAGENTID,
                                        [DATECHANGED] = @CHANGEDATE,
                                        [STARTDATE] = GETDATE(),
                                        [ENDDATE] =null
                                    where                                        
                                        [ID] = @DUPLICATEPHONEID
                                end 
                                return 0
                            end    

                            if @DUPLICATEISPRIMARY = 1
                            begin
                            set @ISPRIMARY =@DUPLICATEISPRIMARY
                            end

                            if len(@NUMBER) > 0 --JamesWill 01/29/2008 CR292112-012408 Don't try to insert blank phone numbers

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


                                    set @ISPRIMARY = 1;

                                    if @SEQUENCE is null
                                        begin
                                            set @SEQUENCE = 0;
                                        end

                                    -- The type and number for constituent phone must be unique.

                                    if not exists
                                    (
                                        select
                                            1
                                        from
                                            dbo.PHONE
                                        where
                                            [CONSTITUENTID] = @CONSTITUENTID
                                            and [PHONETYPECODEID] is null
                                            and @PHONETYPECODEID is null
                                            and [NUMBER] = @NUMBER
                                    )
                                        insert into dbo.PHONE
                                        (
                                            [ID],
                                            [CONSTITUENTID],
                                            [PHONETYPECODEID],
                                            [NUMBER],
                                            [ISPRIMARY],
                                            [SEQUENCE],
                                            [INFOSOURCECODEID],
                                            [ADDEDBYID],
                                            [CHANGEDBYID],
                                            [DATEADDED],
                                            [DATECHANGED],
                                            [STARTDATE]
                                        )
                                        values
                                        (
                                            newid(),
                                            @CONSTITUENTID,
                                            @PHONETYPECODEID,
                                            @NUMBER,
                                            @ISPRIMARY,
                                            @SEQUENCE + 1,
                                            @INFOSOURCECODEID,
                                            @CHANGEAGENTID,
                                            @CHANGEAGENTID,
                                            @CHANGEDATE,
                                            @CHANGEDATE,
                                            @CHANGEDATE
                                        );
                                end


                                end
                            else
                                begin
                                    --JamesWill 01/29/2008 CR292112-012408 Delete phone entries when BBNC sends us an empty number

                                    exec dbo.USP_PHONE_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID;
                                end
                            end
                        else
                            begin
                                if len(@NUMBER) > 0 --JamesWill 01/29/2008 CR292112-012408 Don't try to insert blank phone numbers

                                begin

                                    update dbo.PHONE set
                                        [ISPRIMARY] = 0,
                                        [DONOTCALL] = 1,
                                        [CHANGEDBYID] = @CHANGEAGENTID,
                                        [DATECHANGED] = @CHANGEDATE,
                                        [ENDDATE] = GETDATE()
                                    where
                                        [CONSTITUENTID] = @CONSTITUENTID and [ISPRIMARY] = 1
                                        and
                                        (
                                            @DUPLICATEPHONEID is null
                                            or
                                            [ID] <> @DUPLICATEPHONEID
                                        );

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


                                    set @ISPRIMARY = 1;

                                    if @SEQUENCE is null
                                        begin
                                            set @SEQUENCE = 0;
                                        end

                                    -- The type and number for constituent phone must be unique.

                                    if not exists
                                    (
                                        select
                                            1
                                        from
                                            dbo.PHONE
                                        where
                                            [CONSTITUENTID] = @CONSTITUENTID
                                            and [PHONETYPECODEID] is null
                                            and @PHONETYPECODEID is null
                                            and [NUMBER] = @NUMBER
                                    )
                                        insert into dbo.PHONE
                                        (
                                            [ID],
                                            [CONSTITUENTID],
                                            [PHONETYPECODEID],
                                            [NUMBER],
                                            [ISPRIMARY],
                                            [SEQUENCE],
                                            [INFOSOURCECODEID],
                                            [ADDEDBYID],
                                            [CHANGEDBYID],
                                            [DATEADDED],
                                            [DATECHANGED],
                                            [STARTDATE]
                                        )
                                        values
                                        (
                                            newid(),
                                            @CONSTITUENTID,
                                            @PHONETYPECODEID,
                                            @NUMBER,
                                            @ISPRIMARY,
                                            @SEQUENCE + 1,
                                            @INFOSOURCECODEID,
                                            @CHANGEAGENTID,
                                            @CHANGEAGENTID,
                                            @CHANGEDATE,
                                            @CHANGEDATE,
                                            @CHANGEDATE
                                        );
                                end
                            end
                    end try
                    begin catch
                        exec dbo.USP_RAISE_ERROR;
                        return 1;
                    end catch

                    return 0;