UFN_SITEID_MAPFROM_REVENUESPLITID_BULK
Returns a table of revenue splits and the associated sites.
Return
Return Type |
---|
table |
Definition
Copy
CREATE function dbo.UFN_SITEID_MAPFROM_REVENUESPLITID_BULK()
returns table as
return
(
/*Returns a row for every revenuesplit and its associated site */
/* Site IDs are mapped from several locations depending on the application type */
/* REVENUESPLIT of type Misc (APPLICATIONCODE = 11) may not return one-to-one, all others do. Take into consideration depending on your join, you may need to select distinct, or handle this type as a special case. */
with CTE_RS as
(
select
ID,APPLICATIONCODE,DESIGNATIONID,TYPECODE
from
dbo.REVENUESPLIT_EXT as REVENUESPLIT
),
CTE_EVENT as
(
select
CTE_RS.ID,EVENTSITE.SITEID
from
CTE_RS
inner join dbo.EVENTREGISTRANTPAYMENT on EVENTREGISTRANTPAYMENT.PAYMENTID = CTE_RS.ID
inner join dbo.REGISTRANT on EVENTREGISTRANTPAYMENT.REGISTRANTID = REGISTRANT.ID
left join dbo.EVENTSITE on REGISTRANT.EVENTID = EVENTSITE.EVENTID
where CTE_RS.APPLICATIONCODE = 1
),
CTE_MEMBERSHIPPROGRAM as
(
select
CTE_RS.ID,MEMBERSHIPAPPLICATIONCODE_MEMBERSHIPPROGRAM.SITEID
from
CTE_RS
inner join dbo.MEMBERSHIPTRANSACTION as MEMBERSHIPAPPLICATIONCODE_MEMBERSHIPTRANSACTION on CTE_RS.ID = MEMBERSHIPAPPLICATIONCODE_MEMBERSHIPTRANSACTION.REVENUESPLITID
inner join dbo.MEMBERSHIPLEVEL MEMBERSHIPAPPLICATIONCODE_MEMBERSHIPLEVEL on MEMBERSHIPAPPLICATIONCODE_MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID = MEMBERSHIPAPPLICATIONCODE_MEMBERSHIPLEVEL.ID
inner join dbo.MEMBERSHIPPROGRAM MEMBERSHIPAPPLICATIONCODE_MEMBERSHIPPROGRAM on MEMBERSHIPAPPLICATIONCODE_MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID = MEMBERSHIPAPPLICATIONCODE_MEMBERSHIPPROGRAM.ID
where CTE_RS.APPLICATIONCODE = 5
),
CTE_DESIGNATION as
(
select
CTE_RS.ID,DESIGNATION.SITEID
from
CTE_RS
inner join
(
select
[DESIGNATION].ID,
coalesce(DL5.[SITEID], DL4.[SITEID], DL3.[SITEID], DL2.[SITEID], DL1.[SITEID]) as [SITEID],
coalesce(DL5.[ID], DL4.[ID], DL3.[ID], DL2.[ID], DL1.[ID]) as [DESIGNATIONID],
case
when DL5.[SITEID] is not null then DL5.[DATEADDED]
when DL4.[SITEID] is not null then DL4.[DATEADDED]
when DL3.[SITEID] is not null then DL3.[DATEADDED]
when DL2.[SITEID] is not null then DL2.[DATEADDED]
when DL1.[SITEID] is not null then DL1.[DATEADDED]
end [DATEADDED],
case
when DL5.[SITEID] is not null then DL5.[DATECHANGED]
when DL4.[SITEID] is not null then DL4.[DATECHANGED]
when DL3.[SITEID] is not null then DL3.[DATECHANGED]
when DL2.[SITEID] is not null then DL2.[DATECHANGED]
when DL1.[SITEID] is not null then DL1.[DATECHANGED]
end [DATECHANGED]
from dbo.[DESIGNATION]
left join dbo.[DESIGNATIONLEVEL] DL1 on DL1.[ID] = [DESIGNATION].[DESIGNATIONLEVEL1ID]
left join dbo.[DESIGNATIONLEVEL] DL2 on DL2.[ID] = [DESIGNATION].[DESIGNATIONLEVEL2ID]
left join dbo.[DESIGNATIONLEVEL] DL3 on DL3.[ID] = [DESIGNATION].[DESIGNATIONLEVEL3ID]
left join dbo.[DESIGNATIONLEVEL] DL4 on DL4.[ID] = [DESIGNATION].[DESIGNATIONLEVEL4ID]
left join dbo.[DESIGNATIONLEVEL] DL5 on DL5.[ID] = [DESIGNATION].[DESIGNATIONLEVEL5ID]
) as [DESIGNATION]
on DESIGNATION.ID = CTE_RS.DESIGNATIONID and CTE_RS.APPLICATIONCODE not in (1,5,11)
),
CTE_MEMBERSHIPADDONAPPLICATIONCODE_MEMBERSHIPPROGRAM as
(
select
CTE_RS.ID, MEMBERSHIPADDONAPPLICATIONCODE_MEMBERSHIPPROGRAM.SITEID
from
CTE_RS
inner join dbo.MEMBERSHIPADDON on CTE_RS.ID = MEMBERSHIPADDON.REVENUESPLITID
inner join dbo.MEMBERSHIP on MEMBERSHIPADDON.MEMBERSHIPID = MEMBERSHIP.ID
inner join dbo.MEMBERSHIPLEVEL as MEMBERSHIPADDONAPPLICATIONCODE_MEMBERSHIPLEVEL on MEMBERSHIP.MEMBERSHIPLEVELID = MEMBERSHIPADDONAPPLICATIONCODE_MEMBERSHIPLEVEL.ID
inner join dbo.MEMBERSHIPPROGRAM as MEMBERSHIPADDONAPPLICATIONCODE_MEMBERSHIPPROGRAM on MEMBERSHIPADDONAPPLICATIONCODE_MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID = MEMBERSHIPADDONAPPLICATIONCODE_MEMBERSHIPPROGRAM.ID
where CTE_RS.APPLICATIONCODE = 18 and CTE_RS.DESIGNATIONID is null
),
CTE_MEMBERSHIPINSTALLMENTPLANAPPLICATIONCODE as
(
select
CTE_RS.ID,MEMBERSHIPINSTALLMENTPLANAPPLICATIONCODE_MEMBERSHIPPROGRAM.SITEID
from
CTE_RS
inner join
(
select distinct
FINANCIALTRANSACTIONLINEITEM.ID, RECURRINGGIFTACTIVITY.PAYMENTREVENUEID
from
dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.RECURRINGGIFTACTIVITY on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = RECURRINGGIFTACTIVITY.SOURCEREVENUEID
where REVENUESPLIT_EXT.TYPECODE = 2
) as RECURRINGMEMBERSHIPSPLIT
on CTE_RS.ID = RECURRINGMEMBERSHIPSPLIT.PAYMENTREVENUEID and CTE_RS.APPLICATIONCODE = 3
inner join
(
select distinct
FINANCIALTRANSACTIONLINEITEM.ID as ID,INSTALLMENTSPLITPAYMENT.PAYMENTID as PAYMENTID
from
dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.INSTALLMENTSPLIT on FINANCIALTRANSACTIONLINEITEM.ID = INSTALLMENTSPLIT.REVENUESPLITID
inner join dbo.INSTALLMENTSPLITPAYMENT on INSTALLMENTSPLIT.ID = INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID
where REVENUESPLIT_EXT.TYPECODE = 2
) as INSTALLMENTMEMBERSHIPSPLIT
on CTE_RS.ID = INSTALLMENTMEMBERSHIPSPLIT.PAYMENTID and CTE_RS.APPLICATIONCODE = 19
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI
on (FTLI.ID = RECURRINGMEMBERSHIPSPLIT.ID or FTLI.ID = INSTALLMENTMEMBERSHIPSPLIT.ID) and FTLI.DELETEDON is null and FTLI.TYPECODE <> 1
inner join dbo.MEMBERSHIPTRANSACTION as MEMBERSHIPINSTALLMENTPLANAPPLICATIONCODE_MEMBERSHIPTRANSACTION
on FTLI.ID = MEMBERSHIPINSTALLMENTPLANAPPLICATIONCODE_MEMBERSHIPTRANSACTION.REVENUESPLITID
inner join dbo.MEMBERSHIPLEVEL as MEMBERSHIPINSTALLMENTPLANAPPLICATIONCODE_MEMBERSHIPLEVEL
on MEMBERSHIPINSTALLMENTPLANAPPLICATIONCODE_MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID = MEMBERSHIPINSTALLMENTPLANAPPLICATIONCODE_MEMBERSHIPLEVEL.ID
inner join dbo.MEMBERSHIPPROGRAM as MEMBERSHIPINSTALLMENTPLANAPPLICATIONCODE_MEMBERSHIPPROGRAM
on MEMBERSHIPINSTALLMENTPLANAPPLICATIONCODE_MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID = MEMBERSHIPINSTALLMENTPLANAPPLICATIONCODE_MEMBERSHIPPROGRAM.ID
where CTE_RS.TYPECODE = 2 and CTE_RS.APPLICATIONCODE IN (3,19) and CTE_RS.DESIGNATIONID is null
)
select
CTE_EVENT.ID,
CTE_EVENT.SITEID
from
CTE_EVENT
union all
select
CTE_MEMBERSHIPPROGRAM.ID,
CTE_MEMBERSHIPPROGRAM.SITEID
from
CTE_MEMBERSHIPPROGRAM
union all
select
CTE_DESIGNATION.ID,
CTE_DESIGNATION.SITEID
from
CTE_DESIGNATION
union all
select
CTE_MEMBERSHIPADDONAPPLICATIONCODE_MEMBERSHIPPROGRAM.ID,
CTE_MEMBERSHIPADDONAPPLICATIONCODE_MEMBERSHIPPROGRAM.SITEID
from
CTE_MEMBERSHIPADDONAPPLICATIONCODE_MEMBERSHIPPROGRAM
union all
select
CTE_MEMBERSHIPINSTALLMENTPLANAPPLICATIONCODE.ID,
CTE_MEMBERSHIPINSTALLMENTPLANAPPLICATIONCODE.SITEID
from
CTE_MEMBERSHIPINSTALLMENTPLANAPPLICATIONCODE
union all
--Stopped calling the bulk function for account system sites on splits (UFN_ACCOUNTSYSTEM_SITEID_MAPFROM_REVENUESPLIT_BULK), as it was causing a large performance issue
--We were only calling this code for APPLICATIONCODE = 11 (Miscellaneous) and the parameter was not able to be passed down into the function,
--so we were returning all revenue & site combinations per account system. The plan can now concentrate on only APPLICATIONCODE 11, which
--improves things drastically. While bringing the code up a level, I also factored out a view that was being used (PDACCOUNTSYSTEMFORREVENUE).
select
MISCELLANEOUS.ID,
MISCELLANEOUS.SITEID
from
UFN_ACCOUNTSYSTEM_SITEID_MAPFROM_REVENUESPLITMISCELLANEOUSPAYMENT_BULK() as MISCELLANEOUS
)