UFN_REVENUEUPDATEBATCH_GETBUSINESSUNITS
Returns the business units collection for a revenue item.
Return
Return Type |
---|
xml |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | |
@TYPECODE | smallint | IN |
Definition
Copy
CREATE function dbo.UFN_REVENUEUPDATEBATCH_GETBUSINESSUNITS(
@REVENUEID uniqueidentifier,
@TYPECODE smallint
)
returns xml
with execute as caller
as begin
declare @APPLICATIONBUSINESSUNITS table(APPLICATIONID uniqueidentifier, BUSINESSUNITS xml , OVERRIDEBUSINESSUNITS bit, REASON uniqueidentifier, REVENUESPLITID uniqueidentifier);
if @TYPECODE <> 0 --RG/Pledges
begin
insert into @APPLICATIONBUSINESSUNITS
select
DESIGNATIONID as APPLICATIONID,
(select BUSINESSUNITCODEID, AMOUNT, BASECURRENCYID, ID as REVENUESPLITBUSINESSUNITID from dbo.REVENUESPLITBUSINESSUNIT where REVENUESPLITBUSINESSUNIT.REVENUESPLITID = RS.ID for xml raw('ITEM'),type,elements,root('BUSINESSUNITS'),BINARY BASE64),
OVERRIDEBUSINESSUNITS,
REVENUESPLITBUSINESSUNITOVERRIDECODEID as REASON,
RS.ID as REVENUESPLITID
from dbo.REVENUESPLIT RS where RS.REVENUEID = @REVENUEID
end
else --Payments
begin
insert into @APPLICATIONBUSINESSUNITS
--additional applications (donations, other, matching gift claim, sponsorship addtl. donation)
select
'00000000-0000-0000-0000-000000000000' as APPLICATIONID,
(select BUSINESSUNITCODEID, AMOUNT, BASECURRENCYID, ID as REVENUESPLITBUSINESSUNITID from dbo.REVENUESPLITBUSINESSUNIT where REVENUESPLITBUSINESSUNIT.REVENUESPLITID = RS.ID for xml raw('ITEM'),type,elements,root('BUSINESSUNITS'),BINARY BASE64),
OVERRIDEBUSINESSUNITS,
REVENUESPLITBUSINESSUNITOVERRIDECODEID as REASON,
RS.ID as REVENUESPLITID
from dbo.REVENUESPLIT RS
left outer join dbo.INSTALLMENTSPLITPAYMENT on INSTALLMENTSPLITPAYMENT.PAYMENTID = RS.ID
where RS.REVENUEID = @REVENUEID
and APPLICATIONCODE in (0,4,7)
and TYPECODE in (0,4,9,17)
and INSTALLMENTSPLITPAYMENT.ID is null
union all
--Pledge (2), Planned Gift (6), Matching Gift (7), Grant Award (8), Donor Challenge (13)
select
INSTALLMENTSPLITPAYMENT.PLEDGEID as APPLICATIONID,
(select BUSINESSUNITCODEID, AMOUNT, BASECURRENCYID, ID as REVENUESPLITBUSINESSUNITID from dbo.REVENUESPLITBUSINESSUNIT where REVENUESPLITBUSINESSUNIT.REVENUESPLITID = RS.ID for xml raw('ITEM'),type,elements,root('BUSINESSUNITS'),BINARY BASE64),
OVERRIDEBUSINESSUNITS,
REVENUESPLITBUSINESSUNITOVERRIDECODEID as REASON,
RS.ID as REVENUESPLITID
from dbo.REVENUESPLIT RS
inner join dbo.INSTALLMENTSPLITPAYMENT on INSTALLMENTSPLITPAYMENT.PAYMENTID = RS.ID
where RS.REVENUEID = @REVENUEID
and APPLICATIONCODE in (2, 6, 7, 8, 13)
group by INSTALLMENTSPLITPAYMENT.PLEDGEID, RS.ID, OVERRIDEBUSINESSUNITS, REVENUESPLITBUSINESSUNITOVERRIDECODEID
union all
--Recurring gift(3)
select
RECURRINGGIFTACTIVITY.SOURCEREVENUEID as APPLICATIONID,
(select BUSINESSUNITCODEID, AMOUNT, BASECURRENCYID, ID as REVENUESPLITBUSINESSUNITID from dbo.REVENUESPLITBUSINESSUNIT where REVENUESPLITBUSINESSUNIT.REVENUESPLITID = RS.ID for xml raw('ITEM'),type,elements,root('BUSINESSUNITS'),BINARY BASE64),
OVERRIDEBUSINESSUNITS,
REVENUESPLITBUSINESSUNITOVERRIDECODEID as REASON,
RS.ID as REVENUESPLITID
from dbo.REVENUESPLIT RS
inner join dbo.RECURRINGGIFTACTIVITY on PAYMENTREVENUEID = RS.ID
where RS.REVENUEID = @REVENUEID
and APPLICATIONCODE = 3
union all
--membership(5)
select
RS.ID as APPLICATIONID,
(select BUSINESSUNITCODEID, AMOUNT, BASECURRENCYID, ID as REVENUESPLITBUSINESSUNITID from dbo.REVENUESPLITBUSINESSUNIT where REVENUESPLITBUSINESSUNIT.REVENUESPLITID = RS.ID for xml raw('ITEM'),type,elements,root('BUSINESSUNITS'),BINARY BASE64),
OVERRIDEBUSINESSUNITS,
REVENUESPLITBUSINESSUNITOVERRIDECODEID as REASON,
RS.ID as REVENUESPLITID
from dbo.REVENUESPLIT RS
inner join dbo.MEMBERSHIPTRANSACTION on MEMBERSHIPTRANSACTION.REVENUESPLITID = RS.ID
where RS.REVENUEID = @REVENUEID
and APPLICATIONCODE = 5
union all
--event registration (1)
select
RS.ID as APPLICATIONID,
(select BUSINESSUNITCODEID, AMOUNT, BASECURRENCYID, ID as REVENUESPLITBUSINESSUNITID from dbo.REVENUESPLITBUSINESSUNIT where REVENUESPLITBUSINESSUNIT.REVENUESPLITID = RS.ID for xml raw('ITEM'),type,elements,root('BUSINESSUNITS'),BINARY BASE64),
OVERRIDEBUSINESSUNITS,
REVENUESPLITBUSINESSUNITOVERRIDECODEID as REASON,
RS.ID as REVENUESPLITID
from dbo.REVENUESPLIT RS
inner join dbo.EVENTREGISTRANTPAYMENT on EVENTREGISTRANTPAYMENT.PAYMENTID = RS.ID
where RS.REVENUEID = @REVENUEID
and APPLICATIONCODE = 1
end
declare @RESULT xml;
set @RESULT = (select APPLICATIONID,
cast((select T.c.query('BUSINESSUNITS/ITEM') from BUSINESSUNITS.nodes('/') T(c)) as xml) as BUSINESSUNITS,
OVERRIDEBUSINESSUNITS,
REASON,
REVENUESPLITID
from @APPLICATIONBUSINESSUNITS
for xml raw('ITEM'), type, elements, root('APPLICATIONBUSINESSUNITS'), binary base64)
return @RESULT;
end