UFN_CURRENCY_GETCURRENCYVALUESBYPROPORTION
Returns a single-row table containing base and organization currency values given a transaction amount, and total amounts.
Return
| Return Type |
|---|
| table |
Parameters
| Parameter | Parameter Type | Mode | Description |
|---|---|---|---|
| @AMOUNT | money | IN | |
| @TOTALAMOUNT | money | IN | |
| @BASECURRENCYID | uniqueidentifier | IN | |
| @TOTALBASEAMOUNT | money | IN | |
| @BASECURRENCYDECIMALDIGITS | tinyint | IN | |
| @TRANSACTIONCURRENCYID | uniqueidentifier | IN | |
| @BASEAMOUNT | money | IN | |
| @ORGANIZATIONCURRENCYID | uniqueidentifier | IN | |
| @TOTALORGANIZATIONAMOUNT | money | IN | |
| @ORGANIZATIONCURRENCYDECIMALDIGITS | tinyint | IN | |
| @ORGANIZATIONAMOUNT | money | IN |
Definition
Copy
create function dbo.UFN_CURRENCY_GETCURRENCYVALUESBYPROPORTION
(
@AMOUNT money,
@TOTALAMOUNT money,
@BASECURRENCYID uniqueidentifier,
@TOTALBASEAMOUNT money = null,
@BASECURRENCYDECIMALDIGITS tinyint = null,
@TRANSACTIONCURRENCYID uniqueidentifier,
@BASEAMOUNT money = null,
@ORGANIZATIONCURRENCYID uniqueidentifier = null,
@TOTALORGANIZATIONAMOUNT money,
@ORGANIZATIONCURRENCYDECIMALDIGITS tinyint = null,
@ORGANIZATIONAMOUNT money = null
)
returns @VALUES table (
[BASEAMOUNT] money,
[ORGANIZATIONAMOUNT] money,
[TRANSACTIONCURRENCYID] uniqueidentifier,
[ORGANIZATIONCURRENCYID] uniqueidentifier
)
as begin
if @TRANSACTIONCURRENCYID is null
set @TRANSACTIONCURRENCYID = @BASECURRENCYID;
if @BASECURRENCYDECIMALDIGITS is null
select
@BASECURRENCYDECIMALDIGITS = CURRENCY.DECIMALDIGITS
from
dbo.CURRENCY
where
CURRENCY.ID = @BASECURRENCYID;
if @ORGANIZATIONCURRENCYDECIMALDIGITS is null
select
@ORGANIZATIONCURRENCYDECIMALDIGITS = CURRENCY.DECIMALDIGITS
from
dbo.CURRENCY
where
CURRENCY.ID = @ORGANIZATIONCURRENCYID;
if @TRANSACTIONCURRENCYID = @BASECURRENCYID
begin
set @BASEAMOUNT = @AMOUNT;
set @TOTALBASEAMOUNT = @TOTALAMOUNT;
end
else
set @BASEAMOUNT = dbo.UFN_CURRENCY_CONVERTBYPROPORTION(@AMOUNT, @TOTALAMOUNT, @TOTALBASEAMOUNT, @BASECURRENCYDECIMALDIGITS);
declare @ORGANIZATIONAMOUNTORIGINCODE tinyint = 0;
select top 1
@ORGANIZATIONAMOUNTORIGINCODE = ORGANIZATIONAMOUNTORIGINCODE
from
dbo.MULTICURRENCYCONFIGURATION;
if @ORGANIZATIONAMOUNTORIGINCODE = 0
begin
if @BASECURRENCYID = @ORGANIZATIONCURRENCYID
set @ORGANIZATIONAMOUNT = @BASEAMOUNT;
else
set @ORGANIZATIONAMOUNT = dbo.UFN_CURRENCY_CONVERTBYPROPORTION(@BASEAMOUNT, @TOTALBASEAMOUNT, @TOTALORGANIZATIONAMOUNT, @ORGANIZATIONCURRENCYDECIMALDIGITS);
end
else
begin
if @TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID
set @ORGANIZATIONAMOUNT = @AMOUNT;
else
set @ORGANIZATIONAMOUNT = dbo.UFN_CURRENCY_CONVERTBYPROPORTION(@AMOUNT, @TOTALAMOUNT, @TOTALORGANIZATIONAMOUNT, @ORGANIZATIONCURRENCYDECIMALDIGITS);
end
insert into @VALUES
select
@BASEAMOUNT,
@ORGANIZATIONAMOUNT,
@TRANSACTIONCURRENCYID,
@ORGANIZATIONCURRENCYID;
return;
end