USP_BBNC_COMMITSIGNUPBIOUPDATE
Updates a constituent's biographical information from a Blackbaud Internet Solutions signup transaction to the system from a given batch.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@BIRTHDATE | UDT_FUZZYDATE | IN | |
@FIRSTNAME | nvarchar(50) | IN | |
@GENDERCODE | tinyint | IN | |
@KEYNAME | nvarchar(100) | IN | |
@MAIDENNAME | nvarchar(100) | IN | |
@MIDDLENAME | nvarchar(50) | IN | |
@CUSTOMIDENTIFIER | nvarchar(36) | IN | |
@CONSTITUENCYCODEID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@TITLEID | uniqueidentifier | IN | |
@REQUESTNOEMAIL | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_BBNC_COMMITSIGNUPBIOUPDATE
(
@ID uniqueidentifier = null,
@BIRTHDATE dbo.UDT_FUZZYDATE = '00000000',
@FIRSTNAME nvarchar(50) = '',
@GENDERCODE tinyint = 0,
@KEYNAME nvarchar(100),
@MAIDENNAME nvarchar(100) = '',
@MIDDLENAME nvarchar(50) = '',
@CUSTOMIDENTIFIER nvarchar(36) = '',
@CONSTITUENCYCODEID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null,
@TITLEID uniqueidentifier = null,
@REQUESTNOEMAIL bit = 0
) as
set nocount on;
declare @CURRENTDATE datetime;
if @ID 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();
set @CURRENTDATE = getdate();
begin try
begin
update dbo.CONSTITUENT set
[BIRTHDATE] = @BIRTHDATE,
[FIRSTNAME] = @FIRSTNAME,
[KEYNAME] = @KEYNAME,
[MAIDENNAME] = @MAIDENNAME,
[MIDDLENAME] = @MIDDLENAME,
[NETCOMMUNITYMEMBER] = 1,
[ISCONSTITUENT] = 1,
[TITLECODEID] = @TITLEID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CHANGEDATE
where
[ID] = @ID;
-- Only update the gender if it's not "Unknown"
if (@GENDERCODE is not null) and (@GENDERCODE > 0)
update dbo.CONSTITUENT set
[GENDERCODE] = @GENDERCODE,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CHANGEDATE
where
[ID] = @ID;
if @CONSTITUENCYCODEID is not null
and not exists
(
select
1
from
dbo.CONSTITUENCY
where
[CONSTITUENTID] = @ID
and [CONSTITUENCYCODEID] = @CONSTITUENCYCODEID
and
(
([DATEFROM] is null and [DATETO] is null)
or ([DATEFROM] <= dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE) and [DATETO] is null)
or ([DATEFROM] is null and dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE) <= [DATETO])
or (dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE) between [DATEFROM] and [DATETO])
)
)
begin
declare @CONSTITUENCYDATETO datetime;
select top (1)
@CONSTITUENCYDATETO = dateadd(day, -1, [CONSTITUENCY].[DATEFROM])
from
dbo.CONSTITUENCY
where
[CONSTITUENCY].[CONSTITUENTID] = @ID
and [CONSTITUENCY].[CONSTITUENCYCODEID] = @CONSTITUENCYCODEID
and [CONSTITUENCY].[DATEFROM] > dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE)
order by
[DATETO];
insert into dbo.CONSTITUENCY
(
[CONSTITUENTID],
[CONSTITUENCYCODEID],
[DATEFROM],
[DATETO],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
values
(
@ID,
@CONSTITUENCYCODEID,
dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE),
dbo.UFN_DATE_GETEARLIESTTIME(@CONSTITUENCYDATETO),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
);
end
--Retrieve the ID of the solicit code being used to flag do not email.
declare @NOEMAILSOLICITCODEID uniqueidentifier
select top 1 @NOEMAILSOLICITCODEID=DONOTEMAILSOLICITCODEID
from NETCOMMUNITYDEFAULTCODEMAP
--Does the constituent already have that solicit code assigned?
declare @CONSTITUENTSOLICITCODEID uniqueidentifier
select @CONSTITUENTSOLICITCODEID=ID
from CONSTITUENTSOLICITCODE
where CONSTITUENTID=@ID and
SOLICITCODEID=@NOEMAILSOLICITCODEID
--If they request to not receive email...
if @REQUESTNOEMAIL = 1
begin
--And if they don't have the appropriate solicit code, add it.
if @CONSTITUENTSOLICITCODEID is null
begin
exec dbo.USP_DATAFORM_ADD_CONSTITUENTSOLICITCODE null, @NOEMAILSOLICITCODEID, @ID, null, null, '', @CHANGEAGENTID
end
--Otherwise, if they do have the solicit code and the dates on the code do not include today,
-- unbound its date range.
else
begin
update CONSTITUENTSOLICITCODE
set
STARTDATE=null,
ENDDATE=null,
CHANGEDBYID=@CHANGEAGENTID,
DATECHANGED=@CHANGEDATE
where
ID=@CONSTITUENTSOLICITCODEID and
(((not STARTDATE is null) and (datediff(day, STARTDATE, getdate())<0)) or
((not ENDDATE is null) and (datediff(day, getdate(), ENDDATE)<0)))
end
end
--If they request to receive email and have the solicit code, remove it.
if @REQUESTNOEMAIL = 0 and not @CONSTITUENTSOLICITCODEID is null
begin
exec dbo.USP_CONSTITUENTSOLICITCODE_DELETE @CONSTITUENTSOLICITCODEID, @CHANGEAGENTID
end
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;