UFN_MATCHINGGIFT_GETAUTOADDSPLITS_3
Return
Return Type |
---|
xml |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@AMOUNT | money | IN | |
@MATCHINGGIFTAMOUNT | money | IN | |
@SPLITS | xml | IN | |
@TYPECODE | tinyint | IN |
Definition
Copy
CREATE function dbo.UFN_MATCHINGGIFT_GETAUTOADDSPLITS_3
(
@AMOUNT money,
@MATCHINGGIFTAMOUNT money,
@SPLITS xml,
@TYPECODE tinyint
)
returns xml
as
BEGIN
-- Update the xml so that it has the proper root element
-- 17 and 9 are both sponsorships (sponsorship additional gift and sponsorship)
set @SPLITS = (
select AMOUNT, DESIGNATIONID as ID, TRANSACTIONCURRENCYID, APPLICATIONCODE
from dbo.UFN_REVENUE_GETSPLITS_2_FROMITEMLISTXML(@SPLITS)
where (case when TYPECODE = 17 then 9 else TYPECODE end) = @TYPECODE
for xml raw('ITEM'),type,elements,root('AMOUNTSTOPRORATE'),binary base64
)
declare @DECIMALDIGITS tinyint = 2;
select
@DECIMALDIGITS = DECIMALDIGITS
from dbo.CURRENCY
where CURRENCY.ID = @SPLITS.value('(/AMOUNTSTOPRORATE/ITEM/TRANSACTIONCURRENCYID)[1]', 'uniqueidentifier');
-- Added to select distinct items out of duplicates
declare @FINDDISTINCTITEMSFROMSPLIT table
(
APPLICATIONCODE tinyint,
TRANSACTIONCURRENCYID uniqueidentifier,
DESIGNATIONID uniqueidentifier
);
insert into @FINDDISTINCTITEMSFROMSPLIT
select distinct ORIGINALSPLIT.item.value('APPLICATIONCODE[1]', 'tinyint')
APPLICATIONCODE,
ORIGINALSPLIT.item.value('TRANSACTIONCURRENCYID[1]', 'uniqueidentifier')
[TRANSACTIONCURRENCYID],
ORIGINALSPLIT.item.value('ID[1]', 'uniqueidentifier')
from @SPLITS.nodes('/AMOUNTSTOPRORATE/ITEM') ORIGINALSPLIT(item);
return
(
select
AMOUNT,
DESIGNATIONID,
@TYPECODE as TYPECODE,
APPLICATIONCODE,
TRANSACTIONCURRENCYID
from (select sum(PRORATEDSPLIT.AMOUNT) AMOUNT,
PRORATEDSPLIT.id as DESIGNATIONID,
ITEMTABLE.APPLICATIONCODE,
ITEMTABLE.[TRANSACTIONCURRENCYID]
from dbo.UFN_SPLITS_PRORATEAMOUNTS(
@AMOUNT,
@MATCHINGGIFTAMOUNT,
@DECIMALDIGITS,
@SPLITS) PRORATEDSPLIT
inner join @FINDDISTINCTITEMSFROMSPLIT ITEMTABLE
on ITEMTABLE.DESIGNATIONID = PRORATEDSPLIT.ID
group by PRORATEDSPLIT.ID,
APPLICATIONCODE,
[TRANSACTIONCURRENCYID]) as SPLITDESIGNATION
for xml raw('ITEM'), type, elements, root('SPLITS'), binary base64
);
END