USP_CURRENCYEXCHANGERATE_ENSURESPOTRATEEXISTS

Handles inserting a spot rate if an existing rate hasn't been selected.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN
@TRANSACTIONCURRENCYID uniqueidentifier IN
@BASECURRENCYID uniqueidentifier IN
@EXCHANGERATE decimal(20, 8) IN
@DATE datetime IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_CURRENCYEXCHANGERATE_ENSURESPOTRATEEXISTS(
    @ID uniqueidentifier output,
    @CHANGEAGENTID uniqueidentifier,
    @CURRENTDATE datetime,
    @TRANSACTIONCURRENCYID uniqueidentifier = null,
    @BASECURRENCYID uniqueidentifier = null,
    @EXCHANGERATE decimal(20,8) = null,
    @DATE datetime = null,
    @CURRENTAPPUSERID uniqueidentifier = null
)
as
begin
    if @ID = '00000000-0000-0000-0000-000000000001'
    begin
        set @ID = newid()

        /*
        TODO: Check system privilege when PBI 102747 is addressed.
        if (not dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1)
            and (not dbo.UFN_SECURITY_APPUSER_GRANTED_SYSTEMPRIVILEGE_IN_SYSTEMROLE(@CURRENTAPPUSERID,'911f104d-ba5f-4469-b0ae-184c879aea99') = 1)
        begin
            raiserror('ERR_ADDSPOTRATE_NORIGHTS : You do not have rights to add a new spot rate.', 13, 1);
            return 1;
        end
        */

        if @CHANGEAGENTID is null
            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

        if @CURRENTDATE is null
            set @CURRENTDATE = GetDate();

        declare @TIMEZONEENTRYID uniqueidentifier;
        declare @ASOFDATEWITHOFFSET datetimeoffset;

        set @TIMEZONEENTRYID = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULT();
        set @ASOFDATEWITHOFFSET = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(@DATE, 0);        

        insert into dbo.CURRENCYEXCHANGERATE(
            ID, 
            FROMCURRENCYID,
            TOCURRENCYID,
            RATE,
            ASOFDATE,
            TYPECODE,
            SOURCECODEID,
            TIMEZONEENTRYID,
            ADDEDBYID, 
            CHANGEDBYID, 
            DATEADDED, 
            DATECHANGED
        )
        values(
            @ID,
            @TRANSACTIONCURRENCYID,
            @BASECURRENCYID,
            @EXCHANGERATE,
            @ASOFDATEWITHOFFSET,
            2,
            null,
            @TIMEZONEENTRYID,
            @CHANGEAGENTID,
            @CHANGEAGENTID,
            @CURRENTDATE,
            @CURRENTDATE
        );
    end
end