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