USP_CURRENCYEXCHANGERATE_DATALIST

Lists all currency exchange rates in the system.

Parameters

Parameter Parameter Type Mode Description
@FROMCURRENCYID uniqueidentifier IN From currency
@TOCURRENCYID uniqueidentifier IN To currency
@TYPECODE tinyint IN Type
@SOURCECODEID uniqueidentifier IN Source
@INCLUDEINACTIVE bit IN Include inactive
@STARTDATE datetime IN From
@ENDDATE datetime IN To
@DATERANGE int IN As of date range
@INCLUDEEXPIRED bit IN Include expired

Definition

Copy


                CREATE procedure dbo.USP_CURRENCYEXCHANGERATE_DATALIST
                (
                    @FROMCURRENCYID uniqueidentifier = null,
                    @TOCURRENCYID uniqueidentifier = null,
                    @TYPECODE tinyint = null,
                    @SOURCECODEID uniqueidentifier = null
                    @INCLUDEINACTIVE bit = null,
                    @STARTDATE datetime = null,
                    @ENDDATE datetime = null,
                    @DATERANGE int = 10,
                    @INCLUDEEXPIRED bit = null
                )
                as
                    set nocount on;

                    if @DATERANGE = 0 --Specific dates
                    begin
                        set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE);
                        set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);
                    end
                    else
                    begin
                        if @DATERANGE = -1 --Any date in the future
                        begin
                            set @STARTDATE = dateadd(day,1,dbo.UFN_DATE_GETEARLIESTTIME(getdate()));
                            set @ENDDATE = null;
                        end
                        else --Other cases
                        begin
                            exec dbo.USP_RESOLVEDATEFILTER @DATERANGE, @STARTDATE output, @ENDDATE output;
                        end
                    end

                    declare @STARTDATEWITHOFFSET datetimeoffset = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(@STARTDATE, 0);
                    declare @ENDDATEWITHOFFSET datetimeoffset = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(@ENDDATE, 0);

                    select
                        CURRENCYEXCHANGERATE.ID,
                        FROMCURRENCY.ID as FROMID,
                        dbo.UFN_CURRENCY_GETDESCRIPTION(FROMCURRENCY.ID) as FROMNAME,
                        TOCURRENCY.ID as TOID,
                        dbo.UFN_CURRENCY_GETDESCRIPTION(TOCURRENCY.ID) as TONAME,
                        CURRENCYEXCHANGERATE.RATE,
                        convert(datetime,CURRENCYEXCHANGERATE.ASOFDATE),
                        CURRENCYEXCHANGERATE.TYPECODE,
                        CURRENCYEXCHANGERATE.TYPE,
                        CURRENCYEXCHANGERATE.SOURCECODEID,
                        CURRENCYEXCHANGERATESOURCECODE.DESCRIPTION as SOURCE,
                        TIMEZONEENTRY.DISPLAYNAME,
                        convert(date,CURRENCYEXCHANGERATE.EXPIRATIONDATE) as EXPIRATIONDATE
                    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 CURRENCYEXCHANGERATE.SOURCECODEID = CURRENCYEXCHANGERATESOURCECODE.ID
                        left join dbo.TIMEZONEENTRY on TIMEZONEENTRY.ID = CURRENCYEXCHANGERATE.TIMEZONEENTRYID
                    where
                        (@FROMCURRENCYID is null or @FROMCURRENCYID = FROMCURRENCY.ID)
                        and (@TOCURRENCYID is null or @TOCURRENCYID = TOCURRENCY.ID)
                        and (@TYPECODE is null or @TYPECODE = CURRENCYEXCHANGERATE.TYPECODE) 
                        and (@SOURCECODEID is null or @SOURCECODEID = CURRENCYEXCHANGERATE.SOURCECODEID) 
                        and (@INCLUDEINACTIVE = 1 or (FROMCURRENCY.INACTIVE = 0 and TOCURRENCY.INACTIVE = 0))
                        and (@STARTDATEWITHOFFSET is null or CURRENCYEXCHANGERATE.ASOFDATE >= @STARTDATEWITHOFFSET)
                        and (@ENDDATEWITHOFFSET is null or CURRENCYEXCHANGERATE.ASOFDATE <= @ENDDATEWITHOFFSET)
                        and (@INCLUDEEXPIRED = 1 or CURRENCYEXCHANGERATE.EXPIRATIONDATE is null or CURRENCYEXCHANGERATE.EXPIRATIONDATE >= getutcdate())

                    order by 
                        CURRENCYEXCHANGERATE.ASOFDATE desc,
                        FROMNAME, 
                        TONAME,
                        CURRENCYEXCHANGERATE.DATEADDED desc
                        CURRENCYEXCHANGERATE.DATECHANGED desc
                        CURRENCYEXCHANGERATE.RATE;