USP_CURRENCY_GETCURRENCYVALUES

Returns base and organization currency values given a transaction amount, date, base currency, and base exchange rate.

Parameters

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

Definition

Copy


            CREATE procedure dbo.USP_CURRENCY_GETCURRENCYVALUES
            (
                @AMOUNT money,
                @DATE datetime,
                @BASECURRENCYID uniqueidentifier,
                @BASEEXCHANGERATEID uniqueidentifier output,
                @TRANSACTIONCURRENCYID uniqueidentifier output,
                @BASEAMOUNT money = null output,
                @ORGANIZATIONCURRENCYID uniqueidentifier = null output,
                @ORGANIZATIONAMOUNT money = null output,
                @ORGANIZATIONEXCHANGERATEID uniqueidentifier = null output,
                @LOOKUPORGANIZATIONEXCHANGERATE bit = 0,
                @BASETOORGANIZATIONEXCHANGERATEID uniqueidentifier = null output
            )
            as
                set nocount on;

                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);

                return;