UFN_REVENUEDETAIL_GETDEFAULTRECOGNITIONS

Returns the default recognition credits for a constituent.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@GIVENANONYMOUSLY bit IN
@CONSTITUENTID uniqueidentifier IN
@AMOUNT money IN
@DATE datetime IN
@SOURCERECURRINGGIFTREVENUESPLITID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_REVENUEDETAIL_GETDEFAULTRECOGNITIONS
            (
                @GIVENANONYMOUSLY bit,
                @CONSTITUENTID uniqueidentifier,
                @AMOUNT money,
                @DATE datetime,
                @SOURCERECURRINGGIFTREVENUESPLITID uniqueidentifier = null
            )
            returns @recognitions table
            (
                CONSTITUENTID uniqueidentifier,
                REVENUERECOGNITIONTYPECODEID uniqueidentifier,
                AMOUNT money
            )
            as
            begin
        declare @DEFAULTANONYMOUSRECOGNITION bit = 0;

        if @GIVENANONYMOUSLY = 1
        begin
          --Select the value for default anonymous recognition setting

          select @DEFAULTANONYMOUSRECOGNITION = DEFAULTANONYMOUSRECOGNITION
          from dbo.RECOGNITIONDEFAULT
        end

                -- Return results if the gift wasn't given anonymous or recognition creation on default anonymous recognition setting is turned on

                if @GIVENANONYMOUSLY = 0 or @DEFAULTANONYMOUSRECOGNITION = 1
                begin
                    -- Recurring gift payments copy constituents from recurring gift recognitions

                    -- and calculate amounts by getting the ratio of the payment amount to the recurring gift amount

                    -- and then multiplying by the previous recognition amount for that constituent.

                    if @SOURCERECURRINGGIFTREVENUESPLITID is not null
                    begin
                        -- Calculate ratio if this is a recurring gift payment


                        -- Default ratio to 1 in case it isn't calculated

                        declare @RATIO decimal(20, 10)
                        select @RATIO = 1.0

                        -- TODO: convert this amount to the currency of ?

                        declare @RECURRINGGIFTAMOUNT money                    
                        select @RECURRINGGIFTAMOUNT = BASEAMOUNT from dbo.FINANCIALTRANSACTIONLINEITEM where ID = @SOURCERECURRINGGIFTREVENUESPLITID

                        -- If the recurring giftamount is 0, then the payment amount will be used since 

                        -- @RATIO will remain 1.

                        if @RECURRINGGIFTAMOUNT <> 0
                        begin
                            -- Cast @AMOUNT to a decimal(20, 10) so @RATIO has its full precision.

                            select @RATIO = cast(@AMOUNT as decimal(20, 10)) / @RECURRINGGIFTAMOUNT
                        end

                        insert into @recognitions
                        (
                            CONSTITUENTID,
                            REVENUERECOGNITIONTYPECODEID,
                            AMOUNT
                        )
                        (
                            -- Create recognitions for constituents that were on the recurring gift recognitions.

                            select 
                                CONSTITUENTID,
                                REVENUERECOGNITIONTYPECODEID,
                                AMOUNT * @RATIO
                            from dbo.REVENUERECOGNITION
                            where REVENUERECOGNITION.REVENUESPLITID = @SOURCERECURRINGGIFTREVENUESPLITID
                        )
                    end
                    else
                    begin
                        declare @DATEEARLIESTTIME datetime
                        set @DATEEARLIESTTIME = dbo.UFN_DATE_GETEARLIESTTIME(@DATE)

                        insert into @recognitions
                        (
                            CONSTITUENTID,
                            REVENUERECOGNITIONTYPECODEID,
                            AMOUNT
                        )
                        select 
                            RECIPIENTCONSTITUENTID, 
                            REVENUERECOGNITIONTYPECODEID,
                            (MATCHFACTOR * 0.01 * @AMOUNT)
                        from 
                        dbo.UFN_CONSTITUENT_GETRECOGNITIONDEFAULTSBYSOURCE_2(@CONSTITUENTID, 1, 1,@DATEEARLIESTTIME
                        where 
                            (STARTDATE is null or STARTDATE <= @DATEEARLIESTTIME) and 
                            (ENDDATE is null or ENDDATE >= @DATEEARLIESTTIME)
                    end
                end

                return
            end