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