UFN_CURRENCY_CONVERTINVERSE

Converts an amount from one currency to another using the inverse of a given exchange rate ID.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@AMOUNT money IN
@CURRENCYEXCHANGERATEID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_CURRENCY_CONVERTINVERSE
            (
                @AMOUNT money,
                @CURRENCYEXCHANGERATEID uniqueidentifier = null
            )
            returns money
            as begin
                declare @DECIMALDIGITS tinyint;
                declare @ROUNDINGTYPECODE tinyint;
                declare @RATE decimal(20,8);
                declare @UNROUNDED decimal(38,9);

                if @CURRENCYEXCHANGERATEID is null
                    return 0;

                select
                    @DECIMALDIGITS = CURRENCY.DECIMALDIGITS,
                    @ROUNDINGTYPECODE = CURRENCY.ROUNDINGTYPECODE,
                    @RATE = cast((1 / CURRENCYEXCHANGERATE.RATE) as decimal(20,8))
                from
                    dbo.CURRENCYEXCHANGERATE
                    --This is an inverse conversion so the resulting value is in the exchange rate's "from currency"

                    inner join dbo.CURRENCY on CURRENCY.ID = CURRENCYEXCHANGERATE.FROMCURRENCYID
                where
                    CURRENCYEXCHANGERATE.ID = @CURRENCYEXCHANGERATEID;

                set @UNROUNDED = dbo.UFN_CURRENCY_APPLYRATE(@AMOUNT, @RATE);
                return dbo.UFN_CURRENCY_ROUND(@UNROUNDED, @DECIMALDIGITS, @ROUNDINGTYPECODE);
            end