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;