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