UFN_CURRENCY_GETCURRENCYVALUES_2

Returns a single-row table with base and organization currency values given a transaction amount, date, base currency, and base exchange rate.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@AMOUNT money IN
@DATE datetime IN
@BASECURRENCYID uniqueidentifier IN
@BASEEXCHANGERATEID uniqueidentifier IN
@TRANSACTIONCURRENCYID uniqueidentifier IN
@BASEAMOUNT money IN
@ORGANIZATIONCURRENCYID uniqueidentifier IN
@ORGANIZATIONAMOUNT money IN
@ORGANIZATIONEXCHANGERATEID uniqueidentifier IN
@LOOKUPORGANIZATIONEXCHANGERATE bit IN

Definition

Copy


            CREATE function dbo.UFN_CURRENCY_GETCURRENCYVALUES_2
            (
                @AMOUNT money,
                @DATE datetime,
                @BASECURRENCYID uniqueidentifier,
                @BASEEXCHANGERATEID uniqueidentifier,
                @TRANSACTIONCURRENCYID uniqueidentifier,
                @BASEAMOUNT money = null,
                @ORGANIZATIONCURRENCYID uniqueidentifier = null,
                @ORGANIZATIONAMOUNT money = null,
                @ORGANIZATIONEXCHANGERATEID uniqueidentifier = null,
                @LOOKUPORGANIZATIONEXCHANGERATE bit = 0
            )
            returns @VALUES table (
                [BASEAMOUNT] money,
                [ORGANIZATIONAMOUNT] money,
                [BASEEXCHANGERATEID] uniqueidentifier,
                [ORGANIZATIONEXCHANGERATEID] uniqueidentifier,
                [TRANSACTIONCURRENCYID] uniqueidentifier,
                [ORGANIZATIONCURRENCYID] uniqueidentifier,
                [BASETOORGANIZATIONEXCHANGERATEID] uniqueidentifier
            )
            as begin

                declare    @BASETOORGANIZATIONEXCHANGERATEID uniqueidentifier = null
                --Set the organization currency                

                set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

                if @LOOKUPORGANIZATIONEXCHANGERATE is null
                    set @LOOKUPORGANIZATIONEXCHANGERATE = 0;

                if @TRANSACTIONCURRENCYID is null
                    set @TRANSACTIONCURRENCYID = @BASECURRENCYID;

                if @TRANSACTIONCURRENCYID = @BASECURRENCYID
                    set @BASEAMOUNT = @AMOUNT;
                else if @BASEEXCHANGERATEID is null
                begin
                    set @BASEAMOUNT = 0;
                end
                else
                    set @BASEAMOUNT = dbo.UFN_CURRENCY_CONVERT(@AMOUNT, @BASEEXCHANGERATEID);

                declare @ORGANIZATIONAMOUNTORIGINCODE tinyint = 0;
                select top 1
                    @ORGANIZATIONAMOUNTORIGINCODE = ORGANIZATIONAMOUNTORIGINCODE
                from
                    dbo.MULTICURRENCYCONFIGURATION;

                if (@BASECURRENCYID = @ORGANIZATIONCURRENCYID) and (@ORGANIZATIONAMOUNTORIGINCODE = 0)
                begin
                    set @ORGANIZATIONAMOUNT = @BASEAMOUNT;
                    set @ORGANIZATIONEXCHANGERATEID = null;
                end
                else if (@TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID) and (@ORGANIZATIONAMOUNTORIGINCODE = 1)
                begin
                    set @ORGANIZATIONAMOUNT = @AMOUNT;
                    set @ORGANIZATIONEXCHANGERATEID = null;
                end
                else
                begin
                    if (@LOOKUPORGANIZATIONEXCHANGERATE = 1) or (@ORGANIZATIONEXCHANGERATEID is null)
                        set @ORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTORGANIZATIONRATE(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @DATE, null, @TRANSACTIONCURRENCYID);

                    set @ORGANIZATIONAMOUNT = dbo.UFN_CURRENCY_CONVERTTOORGANIZATIONCURRENCY(@BASEAMOUNT, @ORGANIZATIONEXCHANGERATEID, @AMOUNT);
                end

                if (@ORGANIZATIONAMOUNTORIGINCODE = 0)
                    set @BASETOORGANIZATIONEXCHANGERATEID = @ORGANIZATIONEXCHANGERATEID;
                else
                    set @BASETOORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @DATE, 0, null);

                insert into @VALUES
                select
                    @BASEAMOUNT,
                    @ORGANIZATIONAMOUNT,
                    @BASEEXCHANGERATEID,
                    @ORGANIZATIONEXCHANGERATEID,
                    @TRANSACTIONCURRENCYID,
                    @ORGANIZATIONCURRENCYID,
                    @BASETOORGANIZATIONEXCHANGERATEID;

                return;
            end