USP_REVENUE_GETUPDATEDAPPLICATIONEXCHANGERATE

Retrieves an exchange rate payment applications used when editing or adjusting a revenue payment.

Parameters

Parameter Parameter Type Mode Description
@PREVIOUSAPPLICATIONEXCHANGERATEID uniqueidentifier IN
@PREVIOUSDATE datetime IN
@APPLIEDAMOUNT money IN
@DATE datetime IN
@TRANSACTIONCURRENCYID uniqueidentifier IN
@BASECURRENCYID uniqueidentifier IN
@BASEEXCHANGERATEID uniqueidentifier IN
@APPLICATIONCURRENCYID uniqueidentifier IN
@APPLICATIONEXCHANGERATEID uniqueidentifier INOUT
@APPLIEDAMOUNTCONVERTED money INOUT

Definition

Copy


            CREATE procedure dbo.USP_REVENUE_GETUPDATEDAPPLICATIONEXCHANGERATE
            (
                @PREVIOUSAPPLICATIONEXCHANGERATEID uniqueidentifier,
                @PREVIOUSDATE datetime,
                @APPLIEDAMOUNT money,
                @DATE datetime,
                @TRANSACTIONCURRENCYID uniqueidentifier,
                @BASECURRENCYID uniqueidentifier,
                @BASEEXCHANGERATEID uniqueidentifier,
                @APPLICATIONCURRENCYID uniqueidentifier,
                @APPLICATIONEXCHANGERATEID uniqueidentifier output,
                @APPLIEDAMOUNTCONVERTED money output
            )
            as
                set nocount on;

                declare @CROSSCURRENCYAPPLICATIONEXCHANGERATECANCHANGE bit;

                if @PREVIOUSDATE is null
                    set @PREVIOUSDATE = @DATE;

                if @PREVIOUSDATE = @DATE
                    set @CROSSCURRENCYAPPLICATIONEXCHANGERATECANCHANGE = 0;
                else
                    set @CROSSCURRENCYAPPLICATIONEXCHANGERATECANCHANGE = 1;

                -- if the application currency does not equal the payment transaction currency, get an exchange rate from payment transaction currency to application currency

                if @APPLICATIONCURRENCYID <> @TRANSACTIONCURRENCYID
                begin
                    if @APPLICATIONCURRENCYID = @BASECURRENCYID
                        set @APPLICATIONEXCHANGERATEID = @BASEEXCHANGERATEID;
                    else if @CROSSCURRENCYAPPLICATIONEXCHANGERATECANCHANGE = 0
                        set @APPLICATIONEXCHANGERATEID = @PREVIOUSAPPLICATIONEXCHANGERATEID;
                    else
                        set @APPLICATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@TRANSACTIONCURRENCYID,@APPLICATIONCURRENCYID,@DATE,1,null);

                    -- no exchange rate exists - error

                    if @APPLICATIONEXCHANGERATEID is null
                    begin
                        raiserror('BBERR_APPLICATIONEXCHANGERATEDOESNOTEXIST : You cannot apply the payment toward this application. No exchange rate exists between the payment and application currencies.', 13, 1);
                        return 1;
                    end
                end

                --If the payment is not in the same currency as the application, convert the payment amount to the application currency

                if @APPLICATIONCURRENCYID = @TRANSACTIONCURRENCYID
                    set @APPLIEDAMOUNTCONVERTED = @APPLIEDAMOUNT;
                else
                    set @APPLIEDAMOUNTCONVERTED = dbo.UFN_CURRENCY_CONVERT(@APPLIEDAMOUNT, @APPLICATIONEXCHANGERATEID);