UFN_REVENUESPLIT_CONVERTAMOUNTSINXML
Fills in multicurrency fields in the given splits XML.
Return
Return Type |
---|
xml |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SPLITS | xml | IN | |
@BASECURRENCYID | uniqueidentifier | IN | |
@ORGANIZATIONEXCHANGERATEID | uniqueidentifier | IN | |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | |
@BASEEXCHANGERATEID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_REVENUESPLIT_CONVERTAMOUNTSINXML(
@SPLITS xml,
@BASECURRENCYID uniqueidentifier,
@ORGANIZATIONEXCHANGERATEID uniqueidentifier,
@TRANSACTIONCURRENCYID uniqueidentifier,
@BASEEXCHANGERATEID uniqueidentifier
)
returns xml
as
begin
--Get the full transaction amount from the splits collection.
declare @FULLAMOUNTTRANSACTIONCURRENCY money;
set @FULLAMOUNTTRANSACTIONCURRENCY = coalesce(
(
select sum(SPLITSITEM.ELEMENT.value('AMOUNT[1]', 'money'))
from @SPLITS.nodes('/SPLITS/ITEM') SPLITSITEM(ELEMENT)
)
,0
);
--Get the full base and full org amounts, as well as the organization currency
declare @FULLAMOUNTBASECURRENCY money;
declare @FULLAMOUNTORGANIZATIONCURRENCY money;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
select
@FULLAMOUNTBASECURRENCY = BASEAMOUNT,
@FULLAMOUNTORGANIZATIONCURRENCY = ORGANIZATIONAMOUNT,
@ORGANIZATIONCURRENCYID = ORGANIZATIONCURRENCYID
from dbo.UFN_CURRENCY_GETCURRENCYVALUES_2(
@FULLAMOUNTTRANSACTIONCURRENCY,
null,
@BASECURRENCYID,
@BASEEXCHANGERATEID,
@TRANSACTIONCURRENCYID,
default,
default,
default,
@ORGANIZATIONEXCHANGERATEID,
0
);
--Retrieve decimal digits for use by UFN_CURRENCY_GETCURRENCYVALUESBYPROPORTIONINXML.
declare @DECIMALDIGITSBASECURRENCY tinyint;
declare @DECIMALDIGITSORGANIZATIONCURRENCY tinyint;
select @DECIMALDIGITSBASECURRENCY = DECIMALDIGITS from dbo.CURRENCY where ID = @BASECURRENCYID;
select @DECIMALDIGITSORGANIZATIONCURRENCY = DECIMALDIGITS from dbo.CURRENCY where ID = @ORGANIZATIONCURRENCYID;
--Use UFN_CURRENCY_GETCURRENCYVALUESBYPROPORTIONINXML to get the correct base and org amounts and then build the output XML.
return (
select
ITEMLISTCONVERTED.ITEM.value('(ITEM/ID)[1]','uniqueidentifier') as ID,
ITEMLISTCONVERTED.ITEM.value('(ITEM/APPLICATIONCODE)[1]','tinyint') as APPLICATIONCODE,
ITEMLISTCONVERTED.ITEM.value('(ITEM/TYPECODE)[1]','tinyint') as TYPECODE,
ITEMLISTCONVERTED.ITEM.value('(ITEM/DESIGNATIONID)[1]','uniqueidentifier') as DESIGNATIONID,
ITEMLISTCONVERTED.ITEM.value('(ITEM/CATEGORYCODEID)[1]','uniqueidentifier') as CATEGORYCODEID,
ITEMLISTCONVERTED.ITEM.value('(ITEM/DECLINESGIFTAID)[1]','bit') as DECLINESGIFTAID,
ITEMLISTCONVERTED.ITEM.value('(ITEM/ISGIFTAIDSPONSORSHIP)[1]','bit') as ISGIFTAIDSPONSORSHIP,
ITEMLISTCONVERTED.ITEM.value('(ITEM/AMOUNT)[1]','money') as TRANSACTIONAMOUNT, --rename AMOUNT field
BASEAMOUNT AMOUNT,
ORGANIZATIONAMOUNT ORGANIZATIONAMOUNT,
@BASECURRENCYID BASECURRENCYID,
@ORGANIZATIONEXCHANGERATEID ORGANIZATIONEXCHANGERATEID,
@TRANSACTIONCURRENCYID TRANSACTIONCURRENCYID,
@BASEEXCHANGERATEID BASEEXCHANGERATEID
from dbo.UFN_CURRENCY_GETCURRENCYVALUESBYPROPORTIONINXML(
@SPLITS,
@TRANSACTIONCURRENCYID,
@BASECURRENCYID,
@ORGANIZATIONCURRENCYID,
@FULLAMOUNTTRANSACTIONCURRENCY,
@FULLAMOUNTBASECURRENCY,
@DECIMALDIGITSBASECURRENCY,
@FULLAMOUNTORGANIZATIONCURRENCY,
@DECIMALDIGITSORGANIZATIONCURRENCY
) ITEMLISTCONVERTED
order by ITEMLISTCONVERTED.ROW
for xml raw('ITEM'),type,elements,root('SPLITS'),BINARY BASE64
);
end