UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETAXCLAIMAMOUNT_2

Returns the tax claim amount for a pledge split.

Return

Return Type
table

Parameters

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

Definition

Copy


            -- NOTE:  Any changes here should also be made in UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETAXCLAIMAMOUNT_ALLCURRENCYTYPES

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

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

            -- regression.

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

            )
            returns table
            as
            return
            (
                select 
                    coalesce(sum(INSTALLMENTSPLITAMOUNT * (BASETAXRATE / (100 - BASETAXRATE))), 0) as BASETAXCLAIMAMOUNT,
                    coalesce(sum(INSTALLMENTSPLITAMOUNT * ((BASETAXRATE + TRANSITIONALTAXRATE) / (100 - (BASETAXRATE + TRANSITIONALTAXRATE)))), 0) - coalesce(sum(INSTALLMENTSPLITAMOUNT * (BASETAXRATE / (100 - BASETAXRATE))), 0) as TRANSITIONALTAXCLAIMAMOUNT
                from
                (
                    select
                        INSTALLMENTSPLITAMOUNT,
                        case 
                            when ELIGIBILEANDVALIDDECLARATION = 1 then dbo.UFN_GETGIFTAIDBASETAXRATE(INSTALLMENTS.DATE)
                            else 0
                        end BASETAXRATE,
                        case 
                            when ELIGIBILEANDVALIDDECLARATION = 1 then dbo.UFN_GETGIFTAIDTRANSITIONALTAXRATE(INSTALLMENTS.DATE)
                            else 0
                        end TRANSITIONALTAXRATE
                    from
                    (
                        select 
                            INSTALLMENT.DATE,
                case when @CURRENCYTYPE = 0 then
                        INSTALLMENTSPLIT.AMOUNT - coalesce((select sum(AMOUNT) from dbo.INSTALLMENTSPLITWRITEOFF where INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID), 0)
                    when @CURRENCYTYPE = 1 then
                        INSTALLMENTSPLIT.TRANSACTIONAMOUNT - coalesce((select sum(TRANSACTIONAMOUNT) from dbo.INSTALLMENTSPLITWRITEOFF where INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID), 0)
                    else
                        INSTALLMENTSPLIT.ORGANIZATIONAMOUNT - coalesce((select sum(ORGANIZATIONAMOUNT) from dbo.INSTALLMENTSPLITWRITEOFF where INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID), 0)
                    end as INSTALLMENTSPLITAMOUNT,
              case when (REVENUESPLITGIFTAID.RULES_STATUS & REVENUESPLITGIFTAID.ATTRIBUTES_STATUS) = 1 and (dbo.UFN_VALIDDECLARATION(INSTALLMENT.DATE, FINANCIALTRANSACTION.CONSTITUENTID, REVENUESPLIT_EXT.DESIGNATIONID, null, null) = 2 or REVENUESPLITGIFTAID.ISCOVENANT = 1)
                                then 1
                                else 0
                            end ELIGIBILEANDVALIDDECLARATION
                        from dbo.FINANCIALTRANSACTIONLINEITEM inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
                        inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
                        inner join dbo.INSTALLMENTSPLIT on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = INSTALLMENTSPLIT.PLEDGEID and REVENUESPLIT_EXT.DESIGNATIONID = INSTALLMENTSPLIT.DESIGNATIONID
                        inner join dbo.INSTALLMENT on INSTALLMENTSPLIT.INSTALLMENTID = INSTALLMENT.ID
                        left join dbo.REVENUESPLITGIFTAID on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLITGIFTAID.ID
                        where 
                            FINANCIALTRANSACTIONLINEITEM.ID = @PLEDGESPLITID and
                            REVENUESPLITGIFTAID.DECLINESGIFTAID = 0
              and FINANCIALTRANSACTION.DELETEDON is null
                    ) as INSTALLMENTS
                ) as INSTALLMENTSWITHRATE
            )