UFN_REVENUESPLITGIFTAID_GETAMOUNTSINCURRENCY_BULK
Returns the tax claim amount of the given revenuesplit gift aid record 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_REVENUESPLITGIFTAID_GETAMOUNTSINCURRENCY_BULK]
(
@CURRENCYID uniqueidentifier,
@ORGANIZATIONCURRENCYID uniqueidentifier,
@DECIMALDIGITS tinyint,
@ROUNDINGTYPECODE tinyint
)
returns table
as
return
(
select
REVENUESPLITGIFTAID.ID,
case
when (@CURRENCYID is null) or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
then
-- The calculation is pulled from the computed column ORGANIZATIONTAXCLAIMAMOUNT in REVENUESPLITGIFTAID
case
when TRANSITIONALTAXCLAIMAMOUNT = 0 then ORGANIZATIONBASETAXCLAIMAMOUNT
when exists (select 1 from dbo.UFN_REVENUESPLITGIFTAID_GETTRANSITIONALRELIEFNOTEXPIRED() where ID = REVENUESPLITGIFTAID.ID) then ORGANIZATIONBASETAXCLAIMAMOUNT + ORGANIZATIONTRANSITIONALTAXCLAIMAMOUNT
else ORGANIZATIONBASETAXCLAIMAMOUNT
end
else
-- The calculation is pulled from the computed column TAXCLAIMAMOUNT in REVENUESPLITGIFTAID
case
when TRANSITIONALTAXCLAIMAMOUNT = 0 then BASETAXCLAIMAMOUNT
when exists (select 1 from dbo.UFN_REVENUESPLITGIFTAID_GETTRANSITIONALRELIEFNOTEXPIRED() where ID = REVENUESPLITGIFTAID.ID) then BASETAXCLAIMAMOUNT + TRANSITIONALTAXCLAIMAMOUNT
else BASETAXCLAIMAMOUNT
end
end [TAXCLAIMAMOUNTINCURRENCY],
REVENUESPLITGIFTAID.DATECHANGED as DATEAMOUNTCHANGED
from
dbo.REVENUESPLITGIFTAID
where (@CURRENCYID is null)
or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
or @CURRENCYID = REVENUESPLITGIFTAID.BASECURRENCYID
union all
select
REVENUESPLITGIFTAID.ID,
case
when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(REVENUESPLITGIFTAID.ORGANIZATIONTAXCLAIMAMOUNT, [LATESTORGANIZATIONEXCHANGERATE].RATE), @DECIMALDIGITS, @ROUNDINGTYPECODE)
when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(REVENUESPLITGIFTAID.ORGANIZATIONTAXCLAIMAMOUNT, cast((1 / [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE) as decimal(20,8))), @DECIMALDIGITS, @ROUNDINGTYPECODE)
else
0
end [TAXCLAIMAMOUNTINCURRENCY],
REVENUESPLITGIFTAID.DATECHANGED as DATEAMOUNTCHANGED
from
(
select
ID,
BASECURRENCYID,
-- The calculation is pulled from the computed column ORGANIZATIONTAXCLAIMAMOUNT in REVENUESPLITGIFTAID
case
when TRANSITIONALTAXCLAIMAMOUNT = 0 then ORGANIZATIONBASETAXCLAIMAMOUNT
when exists (select 1 from dbo.UFN_REVENUESPLITGIFTAID_GETTRANSITIONALRELIEFNOTEXPIRED() where ID = REVENUESPLITGIFTAID.ID) then ORGANIZATIONBASETAXCLAIMAMOUNT + ORGANIZATIONTRANSITIONALTAXCLAIMAMOUNT
else ORGANIZATIONBASETAXCLAIMAMOUNT
end as ORGANIZATIONTAXCLAIMAMOUNT,
DATECHANGED
from dbo.REVENUESPLITGIFTAID
) as REVENUESPLITGIFTAID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on REVENUESPLITGIFTAID.ID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
left outer join dbo.CURRENCYEXCHANGERATE as LATESTORGANIZATIONEXCHANGERATE
on
@ORGANIZATIONCURRENCYID = LATESTORGANIZATIONEXCHANGERATE.FROMCURRENCYID
and @CURRENCYID = LATESTORGANIZATIONEXCHANGERATE.TOCURRENCYID
and LATESTORGANIZATIONEXCHANGERATE.TYPECODE in (0,1)
and LATESTORGANIZATIONEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
and dateadd(ms, 86399996, FINANCIALTRANSACTION.[DATE]) >= LATESTORGANIZATIONEXCHANGERATE.ASOFDATESDTZ
and dateadd(ms, 86399996, FINANCIALTRANSACTION.[DATE]) <= LATESTORGANIZATIONEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
left outer join dbo.CURRENCYEXCHANGERATE as LATESTINVERSEORGANIZATIONEXCHANGERATE
on
@CURRENCYID = LATESTINVERSEORGANIZATIONEXCHANGERATE.FROMCURRENCYID
and @ORGANIZATIONCURRENCYID= LATESTINVERSEORGANIZATIONEXCHANGERATE.TOCURRENCYID
and LATESTINVERSEORGANIZATIONEXCHANGERATE.TYPECODE in (0,1)
and LATESTINVERSEORGANIZATIONEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
and dateadd(ms, 86399996, FINANCIALTRANSACTION.[DATE]) >= LATESTINVERSEORGANIZATIONEXCHANGERATE.ASOFDATESDTZ
and dateadd(ms, 86399996, FINANCIALTRANSACTION.[DATE]) <= LATESTINVERSEORGANIZATIONEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
where (@CURRENCYID is not null)
and (@CURRENCYID <> @ORGANIZATIONCURRENCYID)
and @CURRENCYID <> REVENUESPLITGIFTAID.BASECURRENCYID
and FINANCIALTRANSACTION.DELETEDON is null
and ((FINANCIALTRANSACTION.TYPECODE between 0 and 9) or (FINANCIALTRANSACTION.TYPECODE = 15)) -- revenue types
and FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0 -- Standard
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
)