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