USP_DATALIST_CONSTITUENTRECOGNITIONDEFAULTSBYRECIPIENT

Display a list of the recognition defaults where the constituent is the recipient.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN Input parameter indicating the context ID for the data list.

Definition

Copy


                    CREATE procedure dbo.USP_DATALIST_CONSTITUENTRECOGNITIONDEFAULTSBYRECIPIENT
                    (
                        @CONSTITUENTID uniqueidentifier
                    )
                    as
                        set nocount on

                        declare @recognitiondefaults table
                        (
                            ID uniqueidentifier default '00000000-0000-0000-0000-000000000000',
                            SOURCECONSTITUENTID uniqueidentifier,
                            MATCHFACTOR decimal(5, 2),
                            REVENUERECOGNITIONTYPECODEID uniqueidentifier,
                            HOUSEHOLDSETTINGSGENERATED bit default 0,
                            STARTDATE datetime,
                            ENDDATE datetime,
                            PREVENTRECOGNITIONSDEFAULTING bit default 0
                        )

                        declare @CURRENTDATEEARLIEST datetime
                        set @CURRENTDATEEARLIEST = dbo.UFN_DATE_GETEARLIESTTIME(getdate())

                        declare @MEMBERREVENUERECOGNITIONTYPECODEID uniqueidentifier;
                        declare @HOUSEHOLDREVENUERECOGNITIONTYPECODEID uniqueidentifier;                        

                        -- Determine the constituent's household, if they have one

                        declare @MEMBERSHOUSEHOLDID uniqueidentifier
                        select 
                            @MEMBERSHOUSEHOLDID = GM.GROUPID
                        from dbo.GROUPMEMBER GM
                        inner join dbo.GROUPDATA GD on GM.GROUPID = GD.ID
                        left join dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
                        where
                            GM.MEMBERID = @CONSTITUENTID and
                            GD.GROUPTYPECODE = 0 and -- Indicates household

                            -- Verify they are still active

                            ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATEEARLIEST))
                                or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATEEARLIEST)) 
                                or (GMDR.DATEFROM <= @CURRENTDATEEARLIEST and GMDR.DATETO > @CURRENTDATEEARLIEST))

                        -- Handle household members 

                        if @MEMBERSHOUSEHOLDID is not null
                        begin
                            declare @MEMBERRECOGNIZEOTHERMEMBERSCODE tinyint, @HOUSEHOLDRECOGNIZEMEMBERSCODE tinyint

                            select
                                @MEMBERRECOGNIZEOTHERMEMBERSCODE = MEMBERRECOGNIZEOTHERMEMBERSCODE,
                                @HOUSEHOLDRECOGNIZEMEMBERSCODE = HOUSEHOLDRECOGNIZEMEMBERSCODE,
                                @MEMBERREVENUERECOGNITIONTYPECODEID = MEMBERREVENUERECOGNITIONTYPECODEID,
                                @HOUSEHOLDREVENUERECOGNITIONTYPECODEID = HOUSEHOLDREVENUERECOGNITIONTYPECODEID
                            from dbo.UFN_HOUSEHOLD_GETRECOGNITIONSETTINGS(@MEMBERSHOUSEHOLDID)

                            if @MEMBERRECOGNIZEOTHERMEMBERSCODE = 1 -- All other members

                                insert into @recognitiondefaults
                                (
                                    SOURCECONSTITUENTID,
                                    HOUSEHOLDSETTINGSGENERATED,
                                    REVENUERECOGNITIONTYPECODEID,
                                    MATCHFACTOR
                                )
                                select
                                    MEMBERID,
                                    1,
                                    @MEMBERREVENUERECOGNITIONTYPECODEID,
                                    100
                                from dbo.GROUPMEMBER GM
                                left join dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
                                where
                                    GROUPID = @MEMBERSHOUSEHOLDID and 
                                    MEMBERID <> @CONSTITUENTID and
                                    -- Verify included members are still active

                                    ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATEEARLIEST))
                                        or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATEEARLIEST)) 
                                        or (GMDR.DATEFROM <= @CURRENTDATEEARLIEST and GMDR.DATETO > @CURRENTDATEEARLIEST))

                            if @HOUSEHOLDRECOGNIZEMEMBERSCODE = 1 -- All members

                                insert into @recognitiondefaults
                                (
                                    SOURCECONSTITUENTID,
                                    HOUSEHOLDSETTINGSGENERATED,
                                    REVENUERECOGNITIONTYPECODEID,
                                    MATCHFACTOR
                                )
                                select
                                    @MEMBERSHOUSEHOLDID,
                                    1,
                                    @HOUSEHOLDREVENUERECOGNITIONTYPECODEID,
                                    100

                            -- @MEMBERRECOGNIZEOTHERMEMBERSCODE = 2 and @HOUSEHOLDRECOGNIZEMEMBERSCODE = 2 will be handled later, 

                            -- when the insert from REVENUERECOGNITIONDEFAULT occurs

                        end
                        else
                        begin
                            declare @ISHOUSEHOLD bit

                            -- Determine if the constituent is a household

                            select 
                                @ISHOUSEHOLD = case when GD.GROUPTYPECODE = 0 then 1 else 0 end
                            from dbo.GROUPDATA GD
                            where
                                GD.ID = @CONSTITUENTID

                            -- Handle households

                            if @ISHOUSEHOLD = 1
                            begin
                                -- Determine the member recognize household setting for the household                                

                                declare @MEMBERRECOGNIZEHOUSEHOLD bit;

                                select
                                    @MEMBERRECOGNIZEHOUSEHOLD = MEMBERRECOGNIZEHOUSEHOLD,
                                    @MEMBERREVENUERECOGNITIONTYPECODEID = MEMBERREVENUERECOGNITIONTYPECODEID
                                from dbo.UFN_HOUSEHOLD_GETRECOGNITIONSETTINGS(@CONSTITUENTID)

                                if @MEMBERRECOGNIZEHOUSEHOLD is null 
                                    select top 1
                                        @MEMBERRECOGNIZEHOUSEHOLD = MEMBERRECOGNIZEHOUSEHOLD
                                    from dbo.HOUSEHOLDINFO
                                    order by DATEADDED

                                if @MEMBERRECOGNIZEHOUSEHOLD = 1
                                    insert into @recognitiondefaults
                                    (
                                        SOURCECONSTITUENTID,
                                        HOUSEHOLDSETTINGSGENERATED,
                                        REVENUERECOGNITIONTYPECODEID,
                                        MATCHFACTOR
                                    )
                                    select
                                        GM.MEMBERID,
                                        1,
                                        @MEMBERREVENUERECOGNITIONTYPECODEID,
                                        100
                                    from dbo.GROUPMEMBER GM
                                    inner join dbo.GROUPDATA GD on GM.GROUPID = GD.ID
                                    left join dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
                                    where
                                        GM.GROUPID = @CONSTITUENTID and
                                        -- Verify they are still active

                                        ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATEEARLIEST))
                                            or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATEEARLIEST)) 
                                            or (GMDR.DATEFROM <= @CURRENTDATEEARLIEST and GMDR.DATETO > @CURRENTDATEEARLIEST))
                            end
                        end

                        insert into @recognitiondefaults
                        (
                            ID,
                            SOURCECONSTITUENTID,
                            MATCHFACTOR,
                            REVENUERECOGNITIONTYPECODEID,
                            STARTDATE,
                            ENDDATE,
                            PREVENTRECOGNITIONSDEFAULTING
                        )
                        select
                            ID,
                            SOURCECONSTITUENTID,
                            MATCHFACTOR,
                            REVENUERECOGNITIONTYPECODEID,
                            STARTDATE,
                            ENDDATE,
                            PREVENTRECOGNITIONSDEFAULTING
                        from dbo.REVENUERECOGNITIONDEFAULT RM
                        where
                            RECIPIENTCONSTITUENTID = @CONSTITUENTID

                        -- Remove duplicate records.  There should only be duplicates

                        -- if a default was added both by a household setting and an entry

                        -- in REVENUERECOGNITIONDEFAULT.  Priority is given to the record

                        -- from REVENUERECOGNITIONDEFAULT since that means a user overrode

                        -- the household setting.

                        delete @recognitiondefaults
                        from @recognitiondefaults as BASETABLE
                        where
                            BASETABLE.HOUSEHOLDSETTINGSGENERATED = 1 and
                            exists (
                                select 1 
                                from @recognitiondefaults SUBTABLE
                                where
                                    SUBTABLE.HOUSEHOLDSETTINGSGENERATED = 0 and
                                    BASETABLE.SOURCECONSTITUENTID = SUBTABLE.SOURCECONSTITUENTID)

                        select
                            RM.ID,
                            NF.NAME,
                            RM.MATCHFACTOR,
                            RT.DESCRIPTION as RECOGNITIONTYPE,
                            RM.HOUSEHOLDSETTINGSGENERATED,
                            RM.STARTDATE,
                            RM.ENDDATE,
                            C.ID,
                            RT.ID RECOGNITIONCREDITTYPECODEID
                        from @recognitiondefaults as RM
                        cross apply dbo.CONSTITUENT C
                        outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF
                        left join dbo.REVENUERECOGNITIONTYPECODE RT on RM.REVENUERECOGNITIONTYPECODEID = RT.ID
                        where 
                            C.ID = RM.SOURCECONSTITUENTID and
                            PREVENTRECOGNITIONSDEFAULTING = 0
                        order by C.KEYNAME, C.FIRSTNAME