USP_RELATIONSHIP_SETUPHOUSEHOLD
Sets up a household for a relationship.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@SECONDMEMBERID | uniqueidentifier | IN | |
@COPYCONTACTINFO | bit | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@SKIP_ADDING_SECURITYGROUPS | bit | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@SITESECURITYDATAFORMTEMPLATEID | uniqueidentifier | IN | |
@SKIP_ADDING_SITES | bit | IN | |
@COPYEMAILADDRESS | bit | IN | |
@COPYPHONENUMBER | bit | IN | |
@COPYCONTACTINFOINDIVIDUAL | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_RELATIONSHIP_SETUPHOUSEHOLD
(
@CONSTITUENTID uniqueidentifier,
@SECONDMEMBERID uniqueidentifier,
@COPYCONTACTINFO bit,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null,
@SKIP_ADDING_SECURITYGROUPS bit = 0,
@CURRENTAPPUSERID uniqueidentifier = null,
@SITESECURITYDATAFORMTEMPLATEID uniqueidentifier = null,
@SKIP_ADDING_SITES bit = 0,
@COPYEMAILADDRESS bit = 1,
@COPYPHONENUMBER bit = 1,
@COPYCONTACTINFOINDIVIDUAL bit = 1
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
if @CHANGEDATE is null
set @CHANGEDATE = getdate()
declare @CONSTITUENTHOUSEHOLDID uniqueidentifier;
declare @SECONDMEMBERHOUSEHOLDID uniqueidentifier;
declare @EXISTINGID uniqueidentifier;
declare @EXISTINGDATERANGEID uniqueidentifier;
declare @SECONDMEMBEREXISTINGID uniqueidentifier;
declare @SECONDMEMBEREXISTINGDATERANGEID uniqueidentifier;
select
@CONSTITUENTHOUSEHOLDID = GD.ID
from
dbo.GROUPMEMBER GM
left outer join
dbo.GROUPDATA GD on GM.GROUPID = GD.ID
left outer join
dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
where
GM.MEMBERID = @CONSTITUENTID
and
GD.GROUPTYPECODE = 0
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CHANGEDATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CHANGEDATE))
or (GMDR.DATEFROM <= @CHANGEDATE and GMDR.DATETO > @CHANGEDATE));
select
@SECONDMEMBERHOUSEHOLDID = GD.ID
from
dbo.GROUPMEMBER GM
left outer join
dbo.GROUPDATA GD on GM.GROUPID = GD.ID
left outer join
dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
where
GM.MEMBERID = @SECONDMEMBERID
and
GD.GROUPTYPECODE = 0
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CHANGEDATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CHANGEDATE))
or (GMDR.DATEFROM <= @CHANGEDATE and GMDR.DATETO > @CHANGEDATE));
--Find the existing groupmember record and groupmemberdaterange for the constituents if they exist
select
@EXISTINGID = ID
from
dbo.GROUPMEMBER
where
GROUPID = @SECONDMEMBERHOUSEHOLDID and
MEMBERID = @CONSTITUENTID;
select top 1
@EXISTINGDATERANGEID = ID
from
dbo.GROUPMEMBERDATERANGE
where
GROUPMEMBERID = @EXISTINGID
order by
case
when DATETO is null then 0
else 1
end,
DATETO desc
select
@SECONDMEMBEREXISTINGID = ID
from
dbo.GROUPMEMBER
where
GROUPID = @CONSTITUENTHOUSEHOLDID and
MEMBERID = @SECONDMEMBERID;
select top 1
@SECONDMEMBEREXISTINGDATERANGEID = ID
from
dbo.GROUPMEMBERDATERANGE
where
GROUPMEMBERID = @EXISTINGID
order by
case
when DATETO is null then 0
else 1
end,
DATETO desc
declare @GROUPMEMBERID uniqueidentifier;
if (@CONSTITUENTHOUSEHOLDID is not null) begin
if (@SECONDMEMBERHOUSEHOLDID is null)begin
if (@SECONDMEMBEREXISTINGID is null and @SECONDMEMBEREXISTINGDATERANGEID is null)
exec dbo.USP_GROUPMEMBERADD @GROUPMEMBERID output, @CHANGEAGENTID, @CONSTITUENTHOUSEHOLDID, @SECONDMEMBERID;
end
end
else begin
if (@SECONDMEMBERHOUSEHOLDID is null) begin
declare @HOUSEHOLDID uniqueidentifier;
set @HOUSEHOLDID = newid();
declare @NAMEFORMATFUNCTIONID uniqueidentifier;
select top(1) @NAMEFORMATFUNCTIONID = NAMEFORMATFUNCTIONID from dbo.HOUSEHOLDINFO order by DATEADDED;
declare @HOUSEHOLDNAME nvarchar(100);
select @HOUSEHOLDNAME = left(dbo.UFN_NAMEFORMAT_FROMID(@NAMEFORMATFUNCTIONID, @CONSTITUENTID), 100);
insert into dbo.CONSTITUENT
(
ID,
KEYNAME,
ISORGANIZATION,
ISGROUP,
ISCONSTITUENT,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
@HOUSEHOLDID,
@HOUSEHOLDNAME,
0, -- ISORGANIZATION
1, -- ISGROUP
1, -- ISCONSTITUENT
@CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE
);
/*Start security groups*/
if COALESCE(@SKIP_ADDING_SECURITYGROUPS,0) = 0
begin
exec dbo.USP_CONSTITUENT_ASSIGNSECURITYGROUPS_FORNEWRECORD
@APPUSERID =@CURRENTAPPUSERID,
@DATAFORMTEMPLATEID='9d3aff90-42d0-4db0-a4c1-703d25fd1902',
@CONSTITUENTID =@HOUSEHOLDID,
@DATEADDEDTOUSE =@CHANGEDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
end
/*end security groups*/
if coalesce(@SKIP_ADDING_SITES,0) = 0
exec dbo.USP_CONSTITUENT_ASSIGNSITES_FORNEWRECORD
@APPUSERID = @CURRENTAPPUSERID,
@DATAFORMTEMPLATEID = @SITESECURITYDATAFORMTEMPLATEID,
@CONSTITUENTID = @HOUSEHOLDID,
@DATEADDEDTOUSE = @CHANGEDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
insert into dbo.GROUPDATA
(
ID,
GROUPTYPECODE,
STARTDATE,
GROUPTYPEID,
NAMEFORMATFUNCTIONID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
@HOUSEHOLDID,
0,
@CHANGEDATE,
null,
@NAMEFORMATFUNCTIONID,
@CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE
);
if @COPYCONTACTINFO = 1
exec dbo.USP_CONSTITUENT_COPYPRIMARYCONTACTINFO @CHANGEAGENTID, @CONSTITUENTID, @HOUSEHOLDID;
if @COPYCONTACTINFOINDIVIDUAL = 1
exec dbo.USP_CONSTITUENT_COPYPRIMARYCONTACTINFO @CHANGEAGENTID, @CONSTITUENTID, @SECONDMEMBERID, @COPYEMAILADDRESS, @COPYPHONENUMBER;
exec dbo.USP_GROUPMEMBERADD @GROUPMEMBERID output, @CHANGEAGENTID, @HOUSEHOLDID, @CONSTITUENTID;
update dbo.GROUPMEMBER
set
ISPRIMARY = 1,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where
GROUPMEMBER.ID = @GROUPMEMBERID;
set @GROUPMEMBERID = null;
exec dbo.USP_GROUPMEMBERADD @GROUPMEMBERID output, @CHANGEAGENTID, @HOUSEHOLDID, @SECONDMEMBERID;
end
else begin
if (@EXISTINGID is null and @EXISTINGDATERANGEID is null)
exec dbo.USP_GROUPMEMBERADD @GROUPMEMBERID output, @CHANGEAGENTID, @SECONDMEMBERHOUSEHOLDID, @CONSTITUENTID;
end
end