UFN_WRITEOFFSPLIT_GETAMOUNTINCURRENCY_BULK
Returns the amounts of all write off split records 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_WRITEOFFSPLIT_GETAMOUNTINCURRENCY_BULK]
(
@CURRENCYID uniqueidentifier,
@ORGANIZATIONCURRENCYID uniqueidentifier,
@DECIMALDIGITS tinyint,
@ROUNDINGTYPECODE tinyint
)
returns table
as
return
(
select
[WRITEOFFSPLIT].[ID],
[WRITEOFFSPLIT].FINANCIALTRANSACTIONID [WRITEOFFID],
[REVENUESPLIT_EXT].[DESIGNATIONID],
case
when (@CURRENCYID is null) or (@CURRENCYID = @ORGANIZATIONCURRENCYID) then [WRITEOFFSPLIT].[ORGAMOUNT]
else [WRITEOFFSPLIT].[BASEAMOUNT]
end as [AMOUNTINCURRENCY],
[WRITEOFF].[PARENTID] as [REVENUEID]
from dbo.FINANCIALTRANSACTION [WRITEOFF] with (nolock)
inner join dbo.FINANCIALTRANSACTIONLINEITEM [WRITEOFFSPLIT] with (nolock) on [WRITEOFF].[ID] = [WRITEOFFSPLIT].[FINANCIALTRANSACTIONID]
inner join dbo.REVENUESPLIT_EXT on WRITEOFFSPLIT.ID = REVENUESPLIT_EXT.ID
inner join dbo.FINANCIALTRANSACTION [REVENUE] with (nolock) on [REVENUE].[ID] = [WRITEOFF].[PARENTID]
inner join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on WRITEOFF.ID = V.FINANCIALTRANSACTIONID
where
WRITEOFF.TYPECODE = 20 and WRITEOFF.DELETEDON is null and (
(@CURRENCYID is null) or
(@CURRENCYID = @ORGANIZATIONCURRENCYID) or
(@CURRENCYID = V.BASECURRENCYID))
union all
select
[WRITEOFFSPLIT].[ID],
[WRITEOFFSPLIT].FINANCIALTRANSACTIONID [WRITEOFFID],
[REVENUESPLIT_EXT].[DESIGNATIONID],
case
when [LATESTORGANIZATIONEXCHANGERATE].[RATE] is not null
then dbo.[UFN_CURRENCY_ROUND](dbo.[UFN_CURRENCY_APPLYRATE]([WRITEOFFSPLIT].[ORGAMOUNT], [LATESTORGANIZATIONEXCHANGERATE].[RATE]), @DECIMALDIGITS, @ROUNDINGTYPECODE)
when [LATESTINVERSEORGANIZATIONEXCHANGERATE].[RATE] is not null
then dbo.[UFN_CURRENCY_ROUND](dbo.[UFN_CURRENCY_APPLYRATE]([WRITEOFFSPLIT].[ORGAMOUNT], cast((1 / [LATESTINVERSEORGANIZATIONEXCHANGERATE].[RATE]) as decimal(20,8))), @DECIMALDIGITS, @ROUNDINGTYPECODE)
else
0
end [AMOUNTINCURRENCY],
[WRITEOFF].[PARENTID] as [REVENUEID]
from dbo.FINANCIALTRANSACTION [WRITEOFF] with (nolock)
inner join dbo.FINANCIALTRANSACTIONLINEITEM [WRITEOFFSPLIT] with (nolock) on [WRITEOFF].[ID] = [WRITEOFFSPLIT].[FINANCIALTRANSACTIONID]
inner join dbo.REVENUESPLIT_EXT on WRITEOFFSPLIT.ID = REVENUESPLIT_EXT.ID
inner join dbo.FINANCIALTRANSACTION [REVENUE] with (nolock) on [REVENUE].[ID] = [WRITEOFF].[PARENTID]
inner join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on WRITEOFF.ID = V.FINANCIALTRANSACTIONID
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, cast(REVENUE.DATE as datetime)) >= CURRENCYEXCHANGERATE.ASOFDATE and
dateadd(ms, 86399996, cast(REVENUE.DATE as datetime)) <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAX
) [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, cast(REVENUE.DATE as datetime)) >= CURRENCYEXCHANGERATE.ASOFDATE and
dateadd(ms, 86399996, cast(REVENUE.DATE as datetime)) <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAX
) [LATESTINVERSEORGANIZATIONEXCHANGERATE]
where
WRITEOFF.TYPECODE = 20 and WRITEOFF.DELETEDON is null and (
(@CURRENCYID is not null) and
(@CURRENCYID <> @ORGANIZATIONCURRENCYID) and
(@CURRENCYID <> V.BASECURRENCYID))
)