UFN_CURRENCYEXCHANGERATE_GETLATESTORGANIZATIONRATEINCLUDEEXPIRED
Returns the most recent organization exchange rate from one currency to another as of the specified date including expired rates.
Return
Return Type |
---|
uniqueidentifier |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@FROMCURRENCYID | uniqueidentifier | IN | |
@TOCURRENCYID | uniqueidentifier | IN | |
@ASOFDATE | datetime | IN | |
@SOURCECODEID | uniqueidentifier | IN | |
@TRANSACTIONFROMCURRENCYID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTORGANIZATIONRATEINCLUDEEXPIRED
(
@FROMCURRENCYID uniqueidentifier,
@TOCURRENCYID uniqueidentifier,
@ASOFDATE datetime = null,
@SOURCECODEID uniqueidentifier = null,
@TRANSACTIONFROMCURRENCYID uniqueidentifier = null
)
returns uniqueidentifier
as begin
-- if the system organization amount source currency is transaction currency, use the @TRANSACTIONFROMCURRENCYID parameter to look up the exchange rate
if (@TRANSACTIONFROMCURRENCYID is not null) and ((select top 1 ORGANIZATIONAMOUNTORIGINCODE from dbo.MULTICURRENCYCONFIGURATION) = 1)
set @FROMCURRENCYID = @TRANSACTIONFROMCURRENCYID;
declare @DATEWITHOFFSET datetimeoffset;
declare @DATE datetime;
if @ASOFDATE is null
set @DATEWITHOFFSET = getutcdate();
else
begin
set @DATE = @ASOFDATE;
--If the date does not have a time component, use the latest time
--so that the latest exchange rate for this date will be used.
if @DATE = dbo.UFN_DATE_GETEARLIESTTIME(@DATE)
set @DATE = dbo.UFN_DATE_GETLATESTTIME(@DATE);
set @DATEWITHOFFSET = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(@DATE, 0);
end
return (
select top 1
CURRENCYEXCHANGERATE.ID
from
dbo.CURRENCYEXCHANGERATE
left join dbo.CURRENCYEXCHANGERATESOURCECODE on CURRENCYEXCHANGERATESOURCECODE.ID = CURRENCYEXCHANGERATE.SOURCECODEID
where
(CURRENCYEXCHANGERATE.FROMCURRENCYID = @FROMCURRENCYID) and
(CURRENCYEXCHANGERATE.TOCURRENCYID = @TOCURRENCYID) and
(CURRENCYEXCHANGERATE.ASOFDATE <= @DATEWITHOFFSET) and
(CURRENCYEXCHANGERATE.TYPECODE = 0) and
(@SOURCECODEID is null or CURRENCYEXCHANGERATE.SOURCECODEID = @SOURCECODEID)
order by
CURRENCYEXCHANGERATE.ASOFDATE desc,
CURRENCYEXCHANGERATE.DATEADDED desc,
CURRENCYEXCHANGERATE.DATECHANGED desc,
CURRENCYEXCHANGERATE.RATE
)
end