USP_BBNC_COMMITPROFILEUPDATEPHONENUMBERS
Updates a constituent's phone number from a Blackbaud Internet Solutions profile transaction.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@PHONETYPECODEID | uniqueidentifier | IN | |
@NUMBER | nvarchar(100) | IN | |
@PHONEID | uniqueidentifier | IN | |
@ISPRIMARY | bit | IN | |
@ADDNEWPHONE | bit | IN | |
@PREVIOUSPHONETYPECODEID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@STARTDATE | date | IN | |
@ENDDATE | date | IN | |
@DONOTCALL | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_BBNC_COMMITPROFILEUPDATEPHONENUMBERS
(
@CONSTITUENTID uniqueidentifier = null,
@PHONETYPECODEID uniqueidentifier = null,
@NUMBER nvarchar(100) = '',
@PHONEID uniqueidentifier = null,
@ISPRIMARY bit = null,
@ADDNEWPHONE bit = null,
@PREVIOUSPHONETYPECODEID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null,
@STARTDATE date = null,
@ENDDATE date = null,
@DONOTCALL bit = null
) as
set nocount on;
declare @SEQUENCE int;
declare @DUPLICATEPHONEID uniqueidentifier;
declare @PRIMARYPHONEID 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;
begin try
if @ISPRIMARY = 1
begin
select
@PRIMARYPHONEID = [ID]
from
dbo.PHONE
where
[CONSTITUENTID] = @CONSTITUENTID
and [ISPRIMARY] = 1;
if (@PRIMARYPHONEID is not null and @PRIMARYPHONEID <> coalesce(@PHONEID, '00000000-0000-0000-0000-000000000000')) or
(@PRIMARYPHONEID is not null and @PRIMARYPHONEID = @PHONEID and @ADDNEWPHONE = 1)
begin
update dbo.PHONE set
[ISPRIMARY] = 0
where
[ID] = @PRIMARYPHONEID;
end
end
if @ADDNEWPHONE = 0
begin
if @PHONEID is not null
begin
select
@DUPLICATEPHONEID = [ID]
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 <> @PHONEID
exec dbo.USP_PHONE_DELETEBYID_WITHCHANGEAGENTID @PHONEID, @CHANGEAGENTID;
if len(@NUMBER) > 0
begin
update dbo.PHONE set
[PHONETYPECODEID] = @PHONETYPECODEID,
[NUMBER] = @NUMBER,
[ISPRIMARY] = @ISPRIMARY,
[INFOSOURCECODEID] = @INFOSOURCECODEID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CHANGEDATE,
[STARTDATE] = @STARTDATE,
[ENDDATE] = @ENDDATE,
[DONOTCALL] = @DONOTCALL
where
[ID] = @PHONEID
and
(
@DUPLICATEPHONEID is null
or
[ID] = @DUPLICATEPHONEID
);
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 @PHONEID, @CHANGEAGENTID;
end
end
end
else -- update phone
begin
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;
if @SEQUENCE is null
set @SEQUENCE = 0;
-- 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
)
begin
if @PREVIOUSPHONETYPECODEID is not null
begin
if @PHONEID is not null
update dbo.PHONE set
[PHONETYPECODEID] = @PREVIOUSPHONETYPECODEID,
[DATECHANGED] = @CHANGEDATE,
[CHANGEDBYID] = @CHANGEAGENTID
where
[ID] = @PHONEID
end
insert into dbo.PHONE
(
[ID],
[CONSTITUENTID],
[PHONETYPECODEID],
[NUMBER],
[ISPRIMARY],
[SEQUENCE],
[INFOSOURCECODEID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED],
[STARTDATE],
[ENDDATE],
[DONOTCALL]
)
values
(
newid(),
@CONSTITUENTID,
@PHONETYPECODEID,
@NUMBER,
@ISPRIMARY,
@SEQUENCE + 1,
@INFOSOURCECODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
@STARTDATE,
@ENDDATE,
@DONOTCALL
);
end
end -- end len(@NUMBER)
end -- end update
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;