USP_GROUP_DISSOLVE
Performs operations associated with dissolving a household.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@DATE | datetime | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_GROUP_DISSOLVE
(
@ID uniqueidentifier,
@DATE datetime = null,
@CHANGEAGENTID uniqueidentifier = null
)
as
set nocount on;
declare @CURRENTDATE datetime;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
set @CURRENTDATE = getdate();
begin try
--Remove all mail preferences (cannot remove members with mail preferences)
/* cache current context information */
declare @contextCache varbinary(128);
set @contextCache = CONTEXT_INFO();
/* set CONTEXT_INFO to @CHANGEAGENTID */
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID
delete from
dbo.MAILPREFERENCE
where
MAILPREFERENCE.CONSTITUENTID = @ID;
/* reset CONTEXT_INFO to previous value */
if not @contextCache is null
set CONTEXT_INFO @contextCache
declare @EARLIESTDATE date;
set @EARLIESTDATE = coalesce(@DATE, @CURRENTDATE);
--Remove all members
update
dbo.GROUPMEMBERDATERANGE
set
DATETO = @EARLIESTDATE,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
from
dbo.GROUPMEMBERDATERANGE
inner join
dbo.GROUPMEMBER
on
GROUPMEMBER.ID = GROUPMEMBERDATERANGE.GROUPMEMBERID
where
GROUPMEMBER.GROUPID = @ID
and
(GROUPMEMBERDATERANGE.DATETO is null
or
GROUPMEMBERDATERANGE.DATETO > @EARLIESTDATE);
--Remove the primary member flag from the group
update
dbo.GROUPMEMBER
set
ISPRIMARY = 0,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
GROUPID = @ID
and
ISPRIMARY = 1;
--Mark group inactive
update
dbo.CONSTITUENT
set
ISINACTIVE = 1,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID = @ID;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;