USP_PHONE_UPDATE

Updates an existing phone.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN
@PHONETYPECODEID uniqueidentifier IN
@NUMBER nvarchar(100) IN
@PRIMARY bit IN
@DONOTCALL bit IN
@UPDATEMATCHINGHOUSEHOLDPHONE bit IN
@STARTTIME UDT_HOURMINUTE IN
@ENDTIME UDT_HOURMINUTE IN
@INFOSOURCECODEID uniqueidentifier IN
@INFOSOURCECOMMENTS nvarchar(256) IN
@COUNTRYID uniqueidentifier IN
@STARTDATE date IN
@ENDDATE date IN
@DONOTCALLREASONCODEID uniqueidentifier IN
@ISCONFIDENTIAL bit IN
@SEASONALSTARTDATE UDT_MONTHDAY IN
@SEASONALENDDATE UDT_MONTHDAY IN
@DONOTTEXT bit IN

Definition

Copy


            CREATE procedure dbo.USP_PHONE_UPDATE
            (
                @ID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier = null,
                @CURRENTDATE datetime = null,
                @PHONETYPECODEID uniqueidentifier,
                @NUMBER nvarchar(100),
                @PRIMARY bit,
                @DONOTCALL bit,
                @UPDATEMATCHINGHOUSEHOLDPHONE bit,
                @STARTTIME dbo.UDT_HOURMINUTE,
                @ENDTIME dbo.UDT_HOURMINUTE,
                @INFOSOURCECODEID uniqueidentifier,
                @INFOSOURCECOMMENTS nvarchar(256),
                @COUNTRYID uniqueidentifier,
                @STARTDATE date,
                @ENDDATE date,
                @DONOTCALLREASONCODEID uniqueidentifier,
                @ISCONFIDENTIAL bit,
                @SEASONALSTARTDATE dbo.UDT_MONTHDAY = '0000',
                @SEASONALENDDATE dbo.UDT_MONTHDAY = '0000',
                @DONOTTEXT bit=0
            )
            as
                set nocount on;

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

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

                declare @CONSTITUENTID uniqueidentifier;
                declare @OLDNUMBER nvarchar(100);
                declare @OLDPHONETYPECODEID uniqueidentifier;

                if @DONOTCALL = 1
                    begin
                        set @STARTTIME = '';
                        set @ENDTIME = '';
                    end
                else
                    begin
                        set @DONOTCALLREASONCODEID = null;
                    end

                select
                    @CONSTITUENTID = PHONE.[CONSTITUENTID],
                    @OLDNUMBER = PHONE.[NUMBER],
                    @OLDPHONETYPECODEID = PHONE.[PHONETYPECODEID]
                from
                    dbo.[PHONE]
                where
                    PHONE.[ID] = @ID;

                begin try

                    -- JNA <10/21/2009> Check for/remove country code

                    if @COUNTRYID is not null
                        begin
                            declare @COUNTRYCODE nvarchar(10);

                            select
                                @COUNTRYCODE = COUNTRYCODE
                            from dbo.COUNTRY
                            where ID = @COUNTRYID;

                            if left(@NUMBER, len(@COUNTRYCODE) + 1) = '+' + @COUNTRYCODE
                                set @NUMBER = ltrim(right(@NUMBER, len(@NUMBER) - (len(@COUNTRYCODE) + 1)));                            

                        end

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

                    update
                        dbo.PHONE
                    set
                        PHONETYPECODEID = @PHONETYPECODEID,
                        NUMBER = @NUMBER,
                        ISPRIMARY = @PRIMARY,
                        DONOTCALL = @DONOTCALL,
                        STARTTIME = @STARTTIME,
                        ENDTIME = @ENDTIME,
                        INFOSOURCECODEID = @INFOSOURCECODEID,
                        INFOSOURCECOMMENTS = @INFOSOURCECOMMENTS,
                        COUNTRYID = @COUNTRYID,
                        STARTDATE = @STARTDATE,
                        ENDDATE = @ENDDATE,
                        DONOTCALLREASONCODEID = @DONOTCALLREASONCODEID,
                        ISCONFIDENTIAL = @ISCONFIDENTIAL,
                        SEASONALSTARTDATE = @SEASONALSTARTDATE,
                        SEASONALENDDATE = @SEASONALENDDATE,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE,
                        DONOTTEXT = @DONOTTEXT
                    where
                        ID = @ID;

                    if @UPDATEMATCHINGHOUSEHOLDPHONE = 1 begin
                        declare @MATCHINGCONSTITUENTS table(ID uniqueidentifier);
                        insert into @MATCHINGCONSTITUENTS select CONSTITUENTID from dbo.UFN_PHONE_MATCHINGHOUSEHOLDRECORDS(@CONSTITUENTID, @OLDNUMBER, @OLDPHONETYPECODEID);

                        begin try
                            -- update the existing records

                            update dbo.PHONE
                            set
                                PHONETYPECODEID = @PHONETYPECODEID,
                                NUMBER = @NUMBER,
                                DONOTCALL = @DONOTCALL,
                                STARTTIME = @STARTTIME,
                                ENDTIME = @ENDTIME,
                                INFOSOURCECODEID = @INFOSOURCECODEID,
                                INFOSOURCECOMMENTS = @INFOSOURCECOMMENTS,
                                COUNTRYID = @COUNTRYID,
                                STARTDATE = @STARTDATE,
                                ENDDATE = @ENDDATE,
                                DONOTCALLREASONCODEID = @DONOTCALLREASONCODEID,
                                ISCONFIDENTIAL = @ISCONFIDENTIAL,
                                SEASONALSTARTDATE = @SEASONALSTARTDATE,
                                SEASONALENDDATE = @SEASONALENDDATE,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE,
                                DONOTTEXT = @DONOTTEXT
                            where
                                NUMBER = @OLDNUMBER
                                and ( (PHONETYPECODEID = @OLDPHONETYPECODEID) or (@OLDPHONETYPECODEID is null and PHONETYPECODEID is null) )
                                and CONSTITUENTID in (select ID from @MATCHINGCONSTITUENTS);
                        end try
                        begin catch
                            if PATINDEX('%CK_PHONE_ENDDATEINVALIDIFPRIMARY%', ERROR_MESSAGE()) > 0
                                raiserror('ERR_PHONE_ENDDATEINVALIDIFPRIMARYFORANOTHERMEMBER', 13, 1);
                            else
                                exec dbo.USP_RAISE_ERROR;
                            return 1;
                        end catch
                    end
                end try
                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch

                return 0;