UFN_CURRENCY_GETCURRENCYVALUES
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 |
Definition
Copy
CREATE function dbo.UFN_CURRENCY_GETCURRENCYVALUES
(
@AMOUNT money,
@DATE datetime,
@BASECURRENCYID uniqueidentifier,
@BASEEXCHANGERATEID uniqueidentifier,
@TRANSACTIONCURRENCYID uniqueidentifier
)
returns @VALUES table (
[BASEAMOUNT] money,
[ORGANIZATIONAMOUNT] money,
[BASEEXCHANGERATEID] uniqueidentifier,
[ORGANIZATIONEXCHANGERATEID] uniqueidentifier,
[TRANSACTIONCURRENCYID] uniqueidentifier,
[ORGANIZATIONCURRENCYID] uniqueidentifier
)
as begin
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @BASEAMOUNT money;
declare @ORGANIZATIONAMOUNT money;
set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
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
set @ORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTORGANIZATIONRATE(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @DATE, null, @TRANSACTIONCURRENCYID);
set @ORGANIZATIONAMOUNT = dbo.UFN_CURRENCY_CONVERTTOORGANIZATIONCURRENCY(@BASEAMOUNT, @ORGANIZATIONEXCHANGERATEID, @AMOUNT);
end
insert into @VALUES
select
@BASEAMOUNT,
@ORGANIZATIONAMOUNT,
@BASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID,
@TRANSACTIONCURRENCYID,
@ORGANIZATIONCURRENCYID;
return;
end