UFN_CURRENCY_GETEXPIRATIONDATE

Returns the expiration date for an exchange rate.

Return

Return Type
datetimeoffset

Parameters

Parameter Parameter Type Mode Description
@TYPECODE tinyint IN
@ASOFDATE datetime IN
@TIMEZONEENTRYID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_CURRENCY_GETEXPIRATIONDATE(
@TYPECODE tinyint,
@ASOFDATE datetime,
@TIMEZONEENTRYID uniqueidentifier
)
returns datetimeoffset
with execute as caller
as 
begin
            declare @EXPIRATIONCODE tinyint;
            declare @EXPIRATIONDATE datetime;

            select top 1 @EXPIRATIONCODE = case @TYPECODE
                                             when 0 then CORPORATEEXCHANGERATEEXPIRATIONCODE
                                             when 1 then DAILYEXCHANGERATEEXPIRATIONCODE
                                           end
            from dbo.MULTICURRENCYCONFIGURATION;

            if @EXPIRATIONCODE = 1
              set @EXPIRATIONDATE = @ASOFDATE;
            else if @EXPIRATIONCODE in(2,3,4)
              set @EXPIRATIONDATE = dateadd(day,@EXPIRATIONCODE-1,@ASOFDATE);
            else if @EXPIRATIONCODE = 5
              set @EXPIRATIONDATE = dateadd(week,1,@ASOFDATE);
            else if @EXPIRATIONCODE = 6
              set @EXPIRATIONDATE = dateadd(month,1,@ASOFDATE);
            else if @EXPIRATIONCODE = 7
              set @EXPIRATIONDATE = dateadd(quarter,1,@ASOFDATE);
            else if @EXPIRATIONCODE = 8
              set @EXPIRATIONDATE = dateadd(year,1,@ASOFDATE);

            set @EXPIRATIONDATE = dbo.UFN_DATE_GETLATESTTIME(@EXPIRATIONDATE)

            declare @UTCOFFSET integer = dbo.UFN_TIMEZONEENTRY_GETTIMEZONEOFFSETFROMUTC(@TIMEZONEENTRYID, @EXPIRATIONDATE, 0);

            return  TODATETIMEOFFSET(@EXPIRATIONDATE,@UTCOFFSET)
end