UFN_AUCTIONITEM_GETAMOUNTSINCURRENCY_BULK
Returns the value for auction items in a specified currency, in bulk.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CURRENCYID | uniqueidentifier | IN | |
@ORGANIZATIONCURRENCYID | uniqueidentifier | IN | |
@DECIMALDIGITS | tinyint | IN | |
@ROUNDINGTYPECODE | tinyint | IN | |
@EVENTID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_AUCTIONITEM_GETAMOUNTSINCURRENCY_BULK
(
@CURRENCYID uniqueidentifier,
@ORGANIZATIONCURRENCYID uniqueidentifier,
@DECIMALDIGITS tinyint,
@ROUNDINGTYPECODE tinyint,
@EVENTID uniqueidentifier
)
returns table
as
return
(
select
AUCTIONITEM.ID,
REVENUE.ID as [REVENUEID],
REVENUESPLIT.ID as [REVENUESPLITID],
REVENUE.CONSTITUENTID as [DONORID],
REVENUE.DATE,
REVENUE.POSTDATE,
AUCTIONITEM.TYPECODE,
case
when @CURRENCYID is null or @CURRENCYID = @ORGANIZATIONCURRENCYID
then AUCTIONITEM.ORGANIZATIONVALUE
when @CURRENCYID = AUCTIONITEM.TRANSACTIONCURRENCYID
then AUCTIONITEM.TRANSACTIONVALUE
else
AUCTIONITEM.VALUE
end as [VALUEINCURRENCY],
case
when @CURRENCYID is null or @CURRENCYID = @ORGANIZATIONCURRENCYID
then AUCTIONITEM.ORGANIZATIONMINIMUMBID
when @CURRENCYID = AUCTIONITEM.TRANSACTIONCURRENCYID
then AUCTIONITEM.TRANSACTIONMINIMUMBID
else
AUCTIONITEM.MINIMUMBID
end as [MINIMUMBIDINCURRENCY]
from dbo.AUCTIONITEM
inner join dbo.REVENUE on REVENUE.ID = AUCTIONITEM.REVENUEAUCTIONDONATIONID
inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
where
(@EVENTID is null or AUCTIONITEM.EVENTAUCTIONID = @EVENTID)
and
(
@CURRENCYID is null
or @CURRENCYID = @ORGANIZATIONCURRENCYID
or @CURRENCYID = AUCTIONITEM.TRANSACTIONCURRENCYID
or @CURRENCYID = AUCTIONITEM.BASECURRENCYID
)
union all
select
AUCTIONITEM.ID,
REVENUE.ID as [REVENUEID],
REVENUESPLIT.ID as [REVENUESPLITID],
REVENUE.CONSTITUENTID as [DONORID],
REVENUE.DATE,
REVENUE.POSTDATE,
AUCTIONITEM.TYPECODE,
case
when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(AUCTIONITEM.ORGANIZATIONVALUE, [LATESTORGANIZATIONEXCHANGERATE].RATE), @DECIMALDIGITS, @ROUNDINGTYPECODE)
when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(AUCTIONITEM.ORGANIZATIONVALUE, cast((1 / [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE) as decimal(20,8))), @DECIMALDIGITS, @ROUNDINGTYPECODE)
else 0
end as [VALUEINCURRENCY],
case
when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(AUCTIONITEM.ORGANIZATIONMINIMUMBID, [LATESTORGANIZATIONEXCHANGERATE].RATE), @DECIMALDIGITS, @ROUNDINGTYPECODE)
when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(AUCTIONITEM.ORGANIZATIONMINIMUMBID, cast((1 / [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE) as decimal(20,8))), @DECIMALDIGITS, @ROUNDINGTYPECODE)
else 0
end as [MINIMUMBIDINCURRENCY]
from dbo.AUCTIONITEM
inner join dbo.REVENUE on REVENUE.ID = AUCTIONITEM.REVENUEAUCTIONDONATIONID
inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
outer apply
(
select CURRENCYEXCHANGERATE.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
) as [LATESTORGANIZATIONEXCHANGERATE]
outer apply
(
select CURRENCYEXCHANGERATE.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
(@EVENTID is null or AUCTIONITEM.EVENTAUCTIONID = @EVENTID)
and @CURRENCYID is not null
and @CURRENCYID <> @ORGANIZATIONCURRENCYID
and @CURRENCYID <> AUCTIONITEM.TRANSACTIONCURRENCYID
and @CURRENCYID <> AUCTIONITEM.BASECURRENCYID
)