UFN_GIFTAID_GETTAXCLAIMAMOUNTINCURRENCY_BULK
Returns the tax claim amount in the given currency.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CURRENCYID | uniqueidentifier | IN | |
@ORGANIZATIONCURRENCYID | uniqueidentifier | IN | |
@DECIMALDIGITS | tinyint | IN | |
@ROUNDINGTYPECODE | tinyint | IN |
Definition
Copy
CREATE function dbo.UFN_GIFTAID_GETTAXCLAIMAMOUNTINCURRENCY_BULK
(
@CURRENCYID uniqueidentifier,
@ORGANIZATIONCURRENCYID uniqueidentifier,
@DECIMALDIGITS tinyint,
@ROUNDINGTYPECODE tinyint
)
returns table
as
return
(
select
REVENUESPLIT.ID,
case
when (@CURRENCYID is null) or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
then case REVENUE.TRANSACTIONTYPECODE when 1 then (select top 1 (BASETAXCLAIMAMOUNT + TRANSITIONALTAXCLAIMAMOUNT) from dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 2))
when 0 then case when REVENUESPLIT.APPLICATIONCODE in (0,1,2,3,5) then dbo.UFN_GIFTAIDREVENUESPLIT_GETSPLITTAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 1, 2) else 0 end
else 0 end
else
case REVENUE.TRANSACTIONTYPECODE when 1 then (select top 1 (BASETAXCLAIMAMOUNT + TRANSITIONALTAXCLAIMAMOUNT) from dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 0))
when 0 then case when REVENUESPLIT.APPLICATIONCODE in (0,1,2,3,5) then dbo.UFN_GIFTAIDREVENUESPLIT_GETSPLITTAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 1, 0) else 0 end
else 0 end
end as TAXCLAIMAMOUNTINCURRENCY
from
dbo.REVENUESPLIT
inner join dbo.REVENUE on REVENUE.ID = REVENUESPLIT.REVENUEID
where (@CURRENCYID is null)
or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
or @CURRENCYID = REVENUESPLIT.BASECURRENCYID
union all
select REVENUESPLIT.ID,
case
when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(case REVENUE.TRANSACTIONTYPECODE when 1 then (select top 1 (BASETAXCLAIMAMOUNT + TRANSITIONALTAXCLAIMAMOUNT) from dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 2))
when 0 then case when REVENUESPLIT.APPLICATIONCODE in (0,1,2,3,5) then dbo.UFN_GIFTAIDREVENUESPLIT_GETSPLITTAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 1, 2) else 0 end
else 0 end, [LATESTORGANIZATIONEXCHANGERATE].RATE), @DECIMALDIGITS, @ROUNDINGTYPECODE)
when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(case REVENUE.TRANSACTIONTYPECODE when 1 then (select top 1 (BASETAXCLAIMAMOUNT + TRANSITIONALTAXCLAIMAMOUNT) from dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 2))
when 0 then case when REVENUESPLIT.APPLICATIONCODE in (0,1,2,3,5) then dbo.UFN_GIFTAIDREVENUESPLIT_GETSPLITTAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 1, 2) else 0 end
else 0 end, cast((1 / [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE) as decimal(20,8))), @DECIMALDIGITS, @ROUNDINGTYPECODE)
else
0
end as TAXCLAIMAMOUNTINCURRENCY
from
dbo.REVENUESPLIT
inner join dbo.REVENUE on REVENUESPLIT.REVENUEID = REVENUE.ID
outer apply
(
select
RATE
from
dbo.CURRENCYEXCHANGERATE
where
@ORGANIZATIONCURRENCYID = CURRENCYEXCHANGERATE.FROMCURRENCYID
and @CURRENCYID = CURRENCYEXCHANGERATE.TOCURRENCYID
and CURRENCYEXCHANGERATE.TYPECODE in (0,1)
and CURRENCYEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
and dateadd(ms, 86399996,REVENUE.DATE) >= CURRENCYEXCHANGERATE.ASOFDATESDTZ
and dateadd(ms, 86399996,REVENUE.DATE) <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
) LATESTORGANIZATIONEXCHANGERATE
outer apply
(
select
RATE
from
dbo.CURRENCYEXCHANGERATE
where
@CURRENCYID = CURRENCYEXCHANGERATE.FROMCURRENCYID
and @ORGANIZATIONCURRENCYID= CURRENCYEXCHANGERATE.TOCURRENCYID
and CURRENCYEXCHANGERATE.TYPECODE in (0,1)
and CURRENCYEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
and dateadd(ms, 86399996,REVENUE.DATE) >= CURRENCYEXCHANGERATE.ASOFDATESDTZ
and dateadd(ms, 86399996,REVENUE.DATE) <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
) LATESTINVERSEORGANIZATIONEXCHANGERATE
where (@CURRENCYID is not null)
and (@CURRENCYID <> @ORGANIZATIONCURRENCYID)
and @CURRENCYID <> REVENUESPLIT.BASECURRENCYID
)