UFN_GIFTAIDREVENUESPLIT_CALCULATENEXTCLAIMAMOUNT_2

Calculates the next claim amount for a gift, which could potentially have a different tax rate than the current/last gift.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CURRENCYTYPE tinyint IN

Definition

Copy


            -- NOTE:  Any changes here should also be made in UFN_GIFTAIDREVENUESPLIT_CALCULATERECURRINGGIFTTAXCLAIMAMOUNT_INLINE.

            -- TODO:  At some point, this function should be changed to leverage UFN_GIFTAIDREVENUESPLIT_CALCULATERECURRINGGIFTTAXCLAIMAMOUNT_INLINE

            -- so the logic is consolidated but the change would be too disruptive to apply during 

            -- regression.

            CREATE function dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATENEXTCLAIMAMOUNT_2(
                @ID uniqueidentifier,
                @CURRENCYTYPE tinyint -- 0 = Base, 1 = Transaction, 2 = Organization

            )
            returns money
            with execute as caller
            as 
            begin
                declare @TAXCLAIMAMOUNT money;
                declare @TAXRATE numeric(30,6);
                declare @SPLITAMOUNT money;
                declare @DATE datetime;

                select @DATE = case REVENUESCHEDULE.STATUSCODE
                                                when 0 then 
                                                    case
                                                        when REVENUESCHEDULE.NEXTTRANSACTIONDATE > REVENUESCHEDULE.ENDDATE then REVENUESCHEDULE.ENDDATE 
                                                        else REVENUESCHEDULE.NEXTTRANSACTIONDATE
                                                    end
                                                    else
                                                        coalesce((select DATE from dbo.UFN_RECURRINGGIFT_GETNEXTINSTALLMENTINFO(FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID, null)), getdate())
                                                end,
                            @SPLITAMOUNT = case @CURRENCYTYPE
                                            when 0 then FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT
                                            when 1 then FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT 
                                            when 2 then FINANCIALTRANSACTIONLINEITEM.ORGAMOUNT 
                                        end

                    from dbo.FINANCIALTRANSACTIONLINEITEM
                                inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
                                left join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
                    where FINANCIALTRANSACTIONLINEITEM.ID = @ID
                                and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
                                and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1;

                set @TAXRATE = dbo.UFN_GETGIFTAIDBASETAXRATE(@DATE) + dbo.UFN_GETGIFTAIDTRANSITIONALTAXRATE(@DATE);

                set @TAXCLAIMAMOUNT = @SPLITAMOUNT * (@TAXRATE/(100 - @TAXRATE));

                return @TAXCLAIMAMOUNT;
            end