UFN_PLEDGEINSTALLMENTSPLIT_CALCULATETAXCLAIMAMOUNTSINCURRENCY_BULK
Calculates the amounts of all pledge installment split tax claim amounts 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_PLEDGEINSTALLMENTSPLIT_CALCULATETAXCLAIMAMOUNTSINCURRENCY_BULK]
(
@CURRENCYID uniqueidentifier,
@ORGANIZATIONCURRENCYID uniqueidentifier,
@DECIMALDIGITS tinyint,
@ROUNDINGTYPECODE tinyint
)
returns table
as
return
(
select
INSTALLMENTSWITHRATE.REVENUESPLITID,
coalesce(sum(INSTALLMENTSPLITAMOUNT * ((BASETAXRATE + TRANSITIONALTAXRATE) / (100 - (BASETAXRATE + TRANSITIONALTAXRATE)))), 0) as TAXCLAIMAMOUNTINCURRENCY
from
(
select
INSTALLMENTS.REVENUESPLITID,
INSTALLMENTS.INSTALLMENTSPLITAMOUNT,
case
when ELIGIBILEANDVALIDDECLARATION = 1 then (select TAXRATE from dbo.UFN_GETGIFTAIDBASETAXRATE_INLINE(INSTALLMENTS.DATE))
else 0
end BASETAXRATE,
case
when ELIGIBILEANDVALIDDECLARATION = 1 then (select TAXRATE from dbo.UFN_GETGIFTAIDTRANSITIONALTAXRATE_INLINE(INSTALLMENTS.DATE))
else 0
end TRANSITIONALTAXRATE
from
(
select
INSTALLMENT.DATE,
case
when (@CURRENCYID is null) or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
then INSTALLMENTSPLIT.ORGANIZATIONAMOUNT - coalesce((select sum(ORGANIZATIONAMOUNT) from dbo.INSTALLMENTSPLITWRITEOFF where INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID), 0)
else INSTALLMENTSPLIT.AMOUNT - coalesce((select sum(AMOUNT) 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 ISCOVENANT = 1)
then 1
else 0
end ELIGIBILEANDVALIDDECLARATION,
FINANCIALTRANSACTIONLINEITEM.ID REVENUESPLITID
from dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.INSTALLMENTSPLIT on FINANCIALTRANSACTIONLINEITEM.ID = INSTALLMENTSPLIT.REVENUESPLITID
inner join dbo.INSTALLMENT on INSTALLMENTSPLIT.INSTALLMENTID = INSTALLMENT.ID
left join dbo.REVENUESPLITGIFTAID on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLITGIFTAID.ID
where
REVENUESPLITGIFTAID.DECLINESGIFTAID = 0
and (
(@CURRENCYID is null)
or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
or (@CURRENCYID = INSTALLMENTSPLIT.BASECURRENCYID)
)
and ((FINANCIALTRANSACTION.TYPECODE between 0 and 9) or (FINANCIALTRANSACTION.TYPECODE = 15)) -- revenue
and FINANCIALTRANSACTION.DELETEDON is null
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
and FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0 -- standard
) as INSTALLMENTS
) as INSTALLMENTSWITHRATE
group by INSTALLMENTSWITHRATE.REVENUESPLITID
union all
select
INSTALLMENTSWITHRATE.REVENUESPLITID,
coalesce(sum(INSTALLMENTSPLITAMOUNT * ((BASETAXRATE + TRANSITIONALTAXRATE) / (100 - (BASETAXRATE + TRANSITIONALTAXRATE)))), 0) as TAXCLAIMAMOUNTINCURRENCY
from
(
select
INSTALLMENTS.REVENUESPLITID,
INSTALLMENTS.INSTALLMENTSPLITAMOUNT,
case
when ELIGIBILEANDVALIDDECLARATION = 1 then (select TAXRATE from dbo.UFN_GETGIFTAIDBASETAXRATE_INLINE(INSTALLMENTS.DATE))
else 0
end BASETAXRATE,
case
when ELIGIBILEANDVALIDDECLARATION = 1 then (select TAXRATE from dbo.UFN_GETGIFTAIDTRANSITIONALTAXRATE_INLINE(INSTALLMENTS.DATE))
else 0
end TRANSITIONALTAXRATE
from
(
select
INSTALLMENT.DATE,
case
when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
then dbo.UFN_CURRENCY_ROUND(
dbo.UFN_CURRENCY_APPLYRATE(INSTALLMENTSPLIT.AMOUNT - coalesce((select sum(AMOUNT) from dbo.INSTALLMENTSPLITWRITEOFF where INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID), 0), [LATESTORGANIZATIONEXCHANGERATE].RATE),
@DECIMALDIGITS, @ROUNDINGTYPECODE)
when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
then dbo.UFN_CURRENCY_ROUND(
dbo.UFN_CURRENCY_APPLYRATE(INSTALLMENTSPLIT.AMOUNT - coalesce((select sum(AMOUNT) from dbo.INSTALLMENTSPLITWRITEOFF where INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID), 0), cast((1 / [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE) as decimal(20,8))),
@DECIMALDIGITS, @ROUNDINGTYPECODE)
else 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 ISCOVENANT = 1)
then 1
else 0
end ELIGIBILEANDVALIDDECLARATION,
FINANCIALTRANSACTIONLINEITEM.ID REVENUESPLITID
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.ID = INSTALLMENTSPLIT.REVENUESPLITID
inner join dbo.INSTALLMENT on INSTALLMENTSPLIT.INSTALLMENTID = INSTALLMENT.ID
left join dbo.REVENUESPLITGIFTAID on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLITGIFTAID.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
REVENUESPLITGIFTAID.DECLINESGIFTAID = 0
and (
(@CURRENCYID is not null)
and (@CURRENCYID <> @ORGANIZATIONCURRENCYID)
and (@CURRENCYID <> REVENUESPLITGIFTAID.BASECURRENCYID)
)
) as INSTALLMENTS
) as INSTALLMENTSWITHRATE
group by INSTALLMENTSWITHRATE.REVENUESPLITID
)