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
)