USP_RECORDOPERATION_REINSTATEDISSOLVEDGROUP
Executes the "Group: Reinstate dissolved" record operation.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | Input parameter indicating the ID of the record being updated. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the update. |
Definition
Copy
CREATE procedure dbo.USP_RECORDOPERATION_REINSTATEDISSOLVEDGROUP
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null
)
as
set nocount on;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
exec dbo.USP_DISSOLVEDGROUP_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID;
--Mark group active
update
dbo.CONSTITUENT
set
ISINACTIVE = 0,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID = @ID
and
ISINACTIVE = 1;
--Reinstate previous members
update
dbo.GROUPMEMBERDATERANGE
set
DATETO = null,
DATECHANGED = getdate(),
CHANGEDBYID = @CHANGEAGENTID
where
GROUPMEMBERID in (select
GROUPMEMBER.ID
from
dbo.GROUPMEMBER
where
GROUPMEMBER.GROUPID = @ID and dbo.UFN_GROUPMEMBER_HOUSEHOLDCOUNT(GROUPMEMBER.MEMBERID) = 0) and
GROUPMEMBERID not in (select
GROUPMEMBER.ID
from
dbo.GROUPMEMBER
inner join dbo.CONSTITUENT on CONSTITUENT.ID = GROUPMEMBER.MEMBERID
where
CONSTITUENT.ISINACTIVE = 1) and
GROUPMEMBERID not in (select
GROUPMEMBER.ID
from
dbo.GROUPMEMBER
inner join dbo.DECEASEDCONSTITUENT on DECEASEDCONSTITUENT.ID = GROUPMEMBER.MEMBERID)
-- Default to primary member if no other member already is
declare @ISPRIMARY bit
if not exists(select 1 from dbo.GROUPMEMBER where GROUPMEMBER.GROUPID = @ID and GROUPMEMBER.ISPRIMARY = 1)
begin
update
dbo.GROUPMEMBER
set
ISPRIMARY = 1,
DATECHANGED = getdate(),
CHANGEDBYID = @CHANGEAGENTID
where
ID = (select top 1 SUBGROUPMEMBER.ID from dbo.GROUPMEMBER as SUBGROUPMEMBER where SUBGROUPMEMBER.GROUPID = @ID)
end
return 0;