USP_CONSTITUENT_DECEASEFROMRULES

Updates all deceased data included in the global deceasing rules.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_CONSTITUENT_DECEASEFROMRULES
            (
                @ID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier = null
            )
            as
            set nocount on;

            declare @CURRENTDATE datetime;

            if @CHANGEAGENTID is null  
                exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

            set @CURRENTDATE = getdate();

            declare @ADDSOLICITCODE bit;
            declare @SOLICITCODEID uniqueidentifier;
            declare @SOLICITCODESTARTDATE datetime;
            declare @SETEFTSTATUS bit;
            declare @EFTSTATUSCODE tinyint;
            declare @DISABLEWEATHRATINGS bit;
            declare @DISABLESPOUSERECOGNITIONCREDIT bit;
            declare @SETMARITALSTATUS bit;
            declare @MARITALSTATUSCODEID uniqueidentifier;
            declare @MARKINACTIVE bit;
            declare @SPOUSEID uniqueidentifier;
            declare @RECOGNITIONDEFAULTID uniqueidentifier;

            select
                @ADDSOLICITCODE = ADDSOLICITCODE,
                @SOLICITCODEID = SOLICITCODEID,
                @SOLICITCODESTARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE),
                @SETEFTSTATUS  = SETEFTSTATUS,
                @EFTSTATUSCODE  = EFTSTATUSCODE,
                @DISABLEWEATHRATINGS  = DISABLEWEATHRATINGS,
                @DISABLESPOUSERECOGNITIONCREDIT  = DISABLESPOUSERECOGNITIONCREDIT,
                @SETMARITALSTATUS  = SETMARITALSTATUS,
                @MARITALSTATUSCODEID  = MARITALSTATUSCODEID,
                @MARKINACTIVE  = MARKINACTIVE
            from
                dbo.UFN_DECEASINGRULE_GETRULES();

            select
                @SPOUSEID = RECIPROCALCONSTITUENTID
            from
                dbo.RELATIONSHIP
            where
                RELATIONSHIPCONSTITUENTID = @ID
            and
                ISSPOUSE = 1;

            begin try
                --Add solicit code

                if @ADDSOLICITCODE = 1
                    begin
                    --Delete all solicit codes of this type that start today or in the future

                        /* 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.CONSTITUENTSOLICITCODE
                        where
                            CONSTITUENTID = @ID
                        and
                            SOLICITCODEID = @SOLICITCODEID
                        and
                            STARTDATE is not null
                        and
                            STARTDATE >= @SOLICITCODESTARTDATE;

                        /* reset CONTEXT_INFO to previous value */
                        if not @CONTEXTCACHE is null
                            set CONTEXT_INFO @CONTEXTCACHE                            

                    --If solicit code of this type started before today but has not ended , mark end date as yesterday

                        update 
                            dbo.CONSTITUENTSOLICITCODE
                        set
                            ENDDATE = (@SOLICITCODESTARTDATE - 1),
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where
                            CONSTITUENTID = @ID
                        and
                            SOLICITCODEID = @SOLICITCODEID
                        and
                            (STARTDATE is null
                            or
                            STARTDATE < @SOLICITCODESTARTDATE)
                        and
                            (ENDDATE is null
                            or
                            ENDDATE >= @SOLICITCODESTARTDATE);

                        declare @SEQUENCE int;
                        select @SEQUENCE = coalesce(max(SEQUENCE),0)+1 from dbo.CONSTITUENTSOLICITCODE where CONSTITUENTID = @ID;

                        insert into dbo.CONSTITUENTSOLICITCODE
                        (
                            ID,
                            SOLICITCODEID,
                            CONSTITUENTID,
                            STARTDATE,
                            SEQUENCE,
                            ADDEDBYID,
                            CHANGEDBYID,
                            DATEADDED,
                            DATECHANGED
                        )
                        values
                        (
                            newid(),
                            @SOLICITCODEID,
                            @ID,
                            @SOLICITCODESTARTDATE,
                            @SEQUENCE,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @CURRENTDATE,
                            @CURRENTDATE
                        )
                    end

                --Change EFT status on financial accounts

                if @SETEFTSTATUS = 1
                    update
                        dbo.CONSTITUENTACCOUNT
                    set
                        EFTSTATUSCODE = @EFTSTATUSCODE,
                        DATECHANGED = @CURRENTDATE,
                        CHANGEDBYID = @CHANGEAGENTID
                    where
                        CONSTITUENTID = @ID;

                --Disable wealth ratings updates

                if @DISABLEWEATHRATINGS = 1
                    --taken from disablewealthupdates record operation

                    if not exists(select 1 from dbo.DISABLEDWEALTHUPDATES where ID=@ID)
                        insert into dbo.DISABLEDWEALTHUPDATES
                        (
                            [ID],
                            [ADDEDBYID],
                            [CHANGEDBYID],
                            [DATEADDED],
                            [DATECHANGED]
                        )
                        values
                        (
                            @ID,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @CURRENTDATE,
                            @CURRENTDATE
                        );

                --Remove recognition credit from spouse to deceased, change marital status of spouse

                if @SPOUSEID is not null
                    begin
                        if @DISABLESPOUSERECOGNITIONCREDIT = 1
                            begin
                                select
                                    @RECOGNITIONDEFAULTID = ID
                                from
                                    dbo.REVENUERECOGNITIONDEFAULT
                                where
                                    SOURCECONSTITUENTID = @SPOUSEID
                                and
                                    RECIPIENTCONSTITUENTID = @ID;

                                if @RECOGNITIONDEFAULTID is not null
                                    exec dbo.USP_REVENUERECOGNITIONDEFAULT_DELETEBYID_WITHCHANGEAGENTID @RECOGNITIONDEFAULTID, @CHANGEAGENTID;
                            end

                        if @SETMARITALSTATUS = 1
                            begin
                                update
                                    dbo.CONSTITUENT
                                set
                                    MARITALSTATUSCODEID = @MARITALSTATUSCODEID,
                                    DATECHANGED = @CURRENTDATE,
                                    CHANGEDBYID = @CHANGEAGENTID
                                where
                                    ID = @SPOUSEID;
                            end
                    end

                --Mark constituent inactive

                if @MARKINACTIVE = 1
                    update
                        dbo.CONSTITUENT
                    set
                        ISINACTIVE = @MARKINACTIVE,
                        DATECHANGED = @CURRENTDATE,
                        CHANGEDBYID = @CHANGEAGENTID
                    where
                        ID = @ID;

                -- Bug 441716 (ADC 12/12/14) - Always update CONSTITUENT table when changing deceased status to show that the constituent's data changed.

                declare @TABLEDATECHANGED datetime;
                select
                    @TABLEDATECHANGED = DATECHANGED
                from
                    dbo.CONSTITUENT
                where
                    ID = @ID;

                if @TABLEDATECHANGED <> @CURRENTDATE
                    begin
                        update
                            dbo.CONSTITUENT
                        set
                            DATECHANGED = @CURRENTDATE,
                            CHANGEDBYID = @CHANGEAGENTID
                        where
                            ID = @ID;
                    end                
            end try
            begin catch
                exec dbo.USP_RAISE_ERROR;
                return 1;
            end catch

            return 0;