USP_HOUSEHOLDMEMBERADD
Adds a new or existing constituent to a household.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@RELATIONSHIPID | uniqueidentifier | INOUT | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@GROUPID | uniqueidentifier | IN | |
@MEMBERID | uniqueidentifier | INOUT | |
@LASTNAME | nvarchar(100) | IN | |
@FIRSTNAME | nvarchar(50) | IN | |
@MIDDLENAME | nvarchar(50) | IN | |
@NICKNAME | nvarchar(50) | IN | |
@TITLECODEID | uniqueidentifier | IN | |
@SUFFIXCODEID | uniqueidentifier | IN | |
@MAIDENNAME | nvarchar(100) | IN | |
@GENDERCODE | tinyint | IN | |
@BIRTHDATE | UDT_FUZZYDATE | IN | |
@RELATIONSHIPTYPECODEID | uniqueidentifier | IN | |
@RECIPROCALTYPECODEID | uniqueidentifier | IN | |
@STARTDATE | datetime | IN | |
@COPYCONTACTINFO | bit | IN | |
@SOURCECONSTITUENTFORCONTACTINFO | uniqueidentifier | IN | |
@RELATEDCONSTITUENTID | uniqueidentifier | IN | |
@ISSPOUSE | bit | IN | |
@RECOGNIZEMEMBERFORHOUSEHOLD | bit | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@DATAFORMTEMPLATEID | uniqueidentifier | IN | |
@SKIP_ADDING_SECURITYGROUPS | bit | IN | |
@SKIP_ADDING_SITES | bit | IN | |
@TITLE2CODEID | uniqueidentifier | IN | |
@SUFFIX2CODEID | uniqueidentifier | IN | |
@INFOSOURCECODEID | uniqueidentifier | IN | |
@GENDERCODEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_HOUSEHOLDMEMBERADD
(
@ID uniqueidentifier = null output,
@RELATIONSHIPID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier = null,
@GROUPID uniqueidentifier,
@MEMBERID uniqueidentifier = null output,
@LASTNAME nvarchar(100) = null,
@FIRSTNAME nvarchar(50) = '',
@MIDDLENAME nvarchar(50) = '',
@NICKNAME nvarchar(50) = '',
@TITLECODEID uniqueidentifier = null,
@SUFFIXCODEID uniqueidentifier = null,
@MAIDENNAME nvarchar(100) = '',
@GENDERCODE tinyint = 0,
@BIRTHDATE dbo.UDT_FUZZYDATE = '00000000',
@RELATIONSHIPTYPECODEID uniqueidentifier = null,
@RECIPROCALTYPECODEID uniqueidentifier = null,
@STARTDATE datetime = null,
@COPYCONTACTINFO bit = 0,
@SOURCECONSTITUENTFORCONTACTINFO uniqueidentifier = null, -- The constituent to copy primary contact info from
@RELATEDCONSTITUENTID uniqueidentifier = null, -- The constituent to setup the relationship with. If it's null, use the primary member of the household.
@ISSPOUSE bit = 0,
@RECOGNIZEMEMBERFORHOUSEHOLD bit = 0,
@CURRENTAPPUSERID uniqueidentifier = null,
@DATAFORMTEMPLATEID uniqueidentifier = null,
@SKIP_ADDING_SECURITYGROUPS bit = 0,
@SKIP_ADDING_SITES bit = 0,
@TITLE2CODEID uniqueidentifier = null,
@SUFFIX2CODEID uniqueidentifier = null,
@INFOSOURCECODEID uniqueidentifier = null,
@GENDERCODEID uniqueidentifier = null
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
-- Retrieve the group's primary contact
declare @PRIMARYMEMBERID uniqueidentifier;
select
@PRIMARYMEMBERID = MEMBERID
from dbo.GROUPMEMBER
where GROUPID = @GROUPID and ISPRIMARY = 1;
if @RELATEDCONSTITUENTID is null
set @RELATEDCONSTITUENTID = @PRIMARYMEMBERID;
-- Check if a new or existing constituent is being used
if @MEMBERID is null
begin
-- Create the constituent record for the new constituent
set @MEMBERID = newid()
insert into dbo.CONSTITUENT
(
[ID],
[ISORGANIZATION],
[KEYNAME],
[FIRSTNAME],
[MIDDLENAME],
[MAIDENNAME],
[NICKNAME],
[TITLECODEID],
[SUFFIXCODEID],
[GENDERCODE],
[BIRTHDATE],
[ISGROUP],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED],
[TITLE2CODEID],
[SUFFIX2CODEID],
[GENDERCODEID]
)
values
(
@MEMBERID,
0,
@LASTNAME,
@FIRSTNAME,
@MIDDLENAME,
@MAIDENNAME,
@NICKNAME,
@TITLECODEID,
@SUFFIXCODEID,
@GENDERCODE,
@BIRTHDATE,
0,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
@TITLE2CODEID,
@SUFFIX2CODEID,
@GENDERCODEID
);
if @INFOSOURCECODEID is not null
insert into dbo.CONSTITUENTORIGINATION
(
ID,
INFOSOURCECODEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@MEMBERID,
@INFOSOURCECODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
if coalesce(@SKIP_ADDING_SECURITYGROUPS,0) = 0 and @CURRENTAPPUSERID is not null and @DATAFORMTEMPLATEID is not null
begin
exec dbo.USP_CONSTITUENT_ASSIGNSECURITYGROUPS_FORNEWRECORD
@APPUSERID =@CURRENTAPPUSERID,
@DATAFORMTEMPLATEID=@DATAFORMTEMPLATEID,
@CONSTITUENTID =@MEMBERID,
@DATEADDEDTOUSE =@CURRENTDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
end
if coalesce(@SKIP_ADDING_SITES,0) = 0 and @CURRENTAPPUSERID is not null and @DATAFORMTEMPLATEID is not null
begin
exec dbo.USP_CONSTITUENT_ASSIGNSITES_FORNEWRECORD
@APPUSERID =@CURRENTAPPUSERID,
@DATAFORMTEMPLATEID=@DATAFORMTEMPLATEID,
@CONSTITUENTID =@MEMBERID,
@DATEADDEDTOUSE =@CURRENTDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
end
insert into dbo.[NAMEFORMAT]
([CONSTITUENTID]
,[NAMEFORMATTYPECODEID]
,[NAMEFORMATFUNCTIONID]
,[ADDEDBYID]
,[CHANGEDBYID]
,[DATEADDED]
,[DATECHANGED]
,[PRIMARYADDRESSEE]
,[PRIMARYSALUTATION])
select
@MEMBERID
,NFD.NAMEFORMATTYPECODEID
,NFD.NAMEFORMATFUNCTIONID
,@CHANGEAGENTID
,@CHANGEAGENTID
,@CURRENTDATE
,@CURRENTDATE
,NFD.PRIMARYADDRESSEE
,NFD.PRIMARYSALUTATION
from dbo.NAMEFORMATDEFAULT as NFD
where NFD.APPLYTOCODE = 0
end
-- Don't move this line below the relationship... in the case that they're trying to
-- add the primary member to the group, we would fail at either the group member add (member already in group)
-- or at the relationship (can't add a relationship to itself). The "already a member"
-- exception is prettier and makes it more consistent with what happens when they try
-- to add a non primary member to the group.
exec dbo.USP_GROUPMEMBERADD @ID output, @CHANGEAGENTID, @GROUPID, @MEMBERID, @RECOGNIZEMEMBERFORHOUSEHOLD;
-- Create a relationship between the added member and the primary contact if the primary contact exists
-- If at least one of the relationship fields is set, assume the user wants to create the relationship
if @PRIMARYMEMBERID is not null and (@RELATIONSHIPTYPECODEID is not null or @RECIPROCALTYPECODEID is not null or @STARTDATE is not null)
begin
-- Verify that a relationship doesn't already exist between the two constituents
if not exists(select 1 from dbo.RELATIONSHIP where RELATIONSHIPCONSTITUENTID = @PRIMARYMEMBERID and RECIPROCALCONSTITUENTID = @MEMBERID)
begin
if @RELATIONSHIPID is null
set @RELATIONSHIPID = newid();
insert into dbo.RELATIONSHIP
(
ID,
RELATIONSHIPCONSTITUENTID,
RECIPROCALCONSTITUENTID,
RELATIONSHIPTYPECODEID,
RECIPROCALTYPECODEID,
ISSPOUSE,
STARTDATE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@RELATIONSHIPID,
@RELATEDCONSTITUENTID,
@MEMBERID,
@RELATIONSHIPTYPECODEID,
@RECIPROCALTYPECODEID,
@ISSPOUSE,
@STARTDATE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
end
-- Copy household's contact info to the new member if chosen
if @COPYCONTACTINFO = 1
begin
exec dbo.USP_CONSTITUENT_COPYPRIMARYCONTACTINFO @CHANGEAGENTID, @SOURCECONSTITUENTFORCONTACTINFO, @MEMBERID;
end
return 0;