USP_CURRENCYEXCHANGERATELOOKUP_DATALIST
Lists currency exchange rate information given a set of currencies.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@FROMCURRENCYID | uniqueidentifier | IN | From currency |
@TOCURRENCYID | uniqueidentifier | IN | To currency |
@TYPECODE | tinyint | IN | Type |
@ENDDATE | datetime | IN | To |
@MAXROWS | int | IN |
Definition
Copy
CREATE procedure dbo.USP_CURRENCYEXCHANGERATELOOKUP_DATALIST
(
@FROMCURRENCYID uniqueidentifier,
@TOCURRENCYID uniqueidentifier,
@TYPECODE tinyint = 1, -- 0 = latest corporate rate, 1 = latest daily/corporate rate
@ENDDATE datetime = null,
@MAXROWS int = null
)
as
set nocount on;
declare @ENDDATEWITHTIMEOFFSET datetimeoffset;
if @ENDDATE is not null
begin
set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);
set @ENDDATEWITHTIMEOFFSET = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(@ENDDATE,0);
end
if @MAXROWS is not null
set rowcount @MAXROWS;
select
CURRENCYEXCHANGERATE.ID,
CURRENCYEXCHANGERATE.RATE,
FROMCURRENCY.DECIMALDIGITS FROMCURRENCYDECIMALDIGITS,
FROMCURRENCY.ROUNDINGTYPECODE FROMCURRENCYROUNDINGTYPECODE,
TOCURRENCY.DECIMALDIGITS TOCURRENCYDECIMALDIGITS,
TOCURRENCY.ROUNDINGTYPECODE TOCURRENCYROUNDINGTYPECODE,
case
when CURRENCYEXCHANGERATE.SOURCECODEID is null
then convert(nvarchar,CURRENCYEXCHANGERATE.ASOFDATE)
else
CURRENCYEXCHANGERATESOURCECODE.DESCRIPTION + ' (' + convert(nvarchar,CURRENCYEXCHANGERATE.ASOFDATE) + ')'
end LABEL
from
dbo.CURRENCYEXCHANGERATE
inner join dbo.CURRENCY as FROMCURRENCY on CURRENCYEXCHANGERATE.FROMCURRENCYID = FROMCURRENCY.ID
inner join dbo.CURRENCY as TOCURRENCY on CURRENCYEXCHANGERATE.TOCURRENCYID = TOCURRENCY.ID
left join dbo.CURRENCYEXCHANGERATESOURCECODE on CURRENCYEXCHANGERATESOURCECODE.ID = CURRENCYEXCHANGERATE.SOURCECODEID
where
@FROMCURRENCYID = FROMCURRENCY.ID
and @TOCURRENCYID = TOCURRENCY.ID
and ((CURRENCYEXCHANGERATE.TYPECODE = 0 and @TYPECODE = 0)
or (CURRENCYEXCHANGERATE.TYPECODE in (0,1) and @TYPECODE = 1))
and (@ENDDATEWITHTIMEOFFSET is null
or ((CURRENCYEXCHANGERATE.ASOFDATE <= @ENDDATEWITHTIMEOFFSET)
and (CURRENCYEXCHANGERATE.EXPIRATIONDATE is null or CURRENCYEXCHANGERATE.EXPIRATIONDATE >= @ENDDATEWITHTIMEOFFSET)))
order by
CURRENCYEXCHANGERATE.ASOFDATE desc,
CURRENCYEXCHANGERATE.DATEADDED desc,
CURRENCYEXCHANGERATE.DATECHANGED desc,
CURRENCYEXCHANGERATE.RATE;
set rowcount 0;