USP_CAMPAIGNHIERARCHYBYCONSTITUENT
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@SECURITYFEATURETYPE | int | IN | |
@SECURITYFEATUREID | uniqueidentifier | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@INCLUDEREVENUE | bit | IN | |
@INCLUDERECOGNITION | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_CAMPAIGNHIERARCHYBYCONSTITUENT(
@CURRENTAPPUSERID uniqueidentifier
,@SECURITYFEATURETYPE int
,@SECURITYFEATUREID uniqueidentifier
,@CONSTITUENTID uniqueidentifier
,@INCLUDEREVENUE bit
,@INCLUDERECOGNITION bit
)
with execute as caller
as
begin
if object_id('tempdb..#TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CAMPAIGNS') is not null
drop table #TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CAMPAIGNS;
create table #TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CAMPAIGNS(
ID uniqueidentifier
,PARENTCAMPAIGNID uniqueidentifier
,NAME nvarchar(100) collate DATABASE_DEFAULT
,SEQUENCE int
,FILTERCONSTITUENT bit
);
insert #TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CAMPAIGNS
select ID
,PARENTCAMPAIGNID
,name
,SEQUENCE
,CAST(0 as bit) FILTERCONSTITUENT
from dbo.UFN_CAMPAIGNHIERARCHY_SECURED(@CURRENTAPPUSERID, @SECURITYFEATURETYPE, @SECURITYFEATUREID)
if object_id('tempdb..#TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CONSTITUENTS') is not null
drop table #TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CONSTITUENTS;
create table #TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CONSTITUENTS(
CONSTITUENTID uniqueidentifier
);
insert into #TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CONSTITUENTS(CONSTITUENTID) select @CONSTITUENTID
insert into #TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CONSTITUENTS(CONSTITUENTID) select
GROUPMEMBER.MEMBERID
from dbo.GROUPMEMBER
left join dbo.GROUPMEMBERDATERANGE on GROUPMEMBERDATERANGE.GROUPMEMBERID = GROUPMEMBER.ID
where
GROUPMEMBER.GROUPID = @CONSTITUENTID;
if @INCLUDEREVENUE = 1
update c
set FILTERCONSTITUENT = 1
from #TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CONSTITUENTS g
inner join FINANCIALTRANSACTION ft on g.CONSTITUENTID = ft.CONSTITUENTID
inner join FINANCIALTRANSACTIONLINEITEM ftli on ftli.FINANCIALTRANSACTIONID = ft.ID
inner join REVENUESPLITCAMPAIGN rsc on rsc.REVENUESPLITID = ftli.ID
inner join #TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CAMPAIGNS c on rsc.CAMPAIGNID = c.ID
where
ftli.DELETEDON is null
if @INCLUDERECOGNITION = 1
update c
set FILTERCONSTITUENT = 1
from #TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CONSTITUENTS g
inner join dbo.REVENUERECOGNITION rr on rr.CONSTITUENTID = g.CONSTITUENTID
left join dbo.FINANCIALTRANSACTIONLINEITEM ftli on rr.REVENUESPLITID = ftli.ID
inner join dbo.REVENUESPLITCAMPAIGN rsc on rr.REVENUESPLITID = rsc.REVENUESPLITID
inner join #TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CAMPAIGNS c on c.ID = rsc.CAMPAIGNID
where
ftli.DELETEDON is null
;with CTE
as (
select c.ID
,c.PARENTCAMPAIGNID
,c.name
,c.SEQUENCE
,c.FILTERCONSTITUENT
from #TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CAMPAIGNS c
where c.FILTERCONSTITUENT = 1
union all
select c.ID
,c.PARENTCAMPAIGNID
,c.name
,c.SEQUENCE
,CAST(1 as bit) [FILTERCONSTITUENT]
from CTE
inner join #TMP_DATA_CAMPAIGNHIERARCHYBYCONSTITUENT_CAMPAIGNS c on CTE.PARENTCAMPAIGNID = c.ID
where c.FILTERCONSTITUENT = 0
)
select distinct ID
,PARENTCAMPAIGNID
,NAME
,SEQUENCE
from CTE order by NAME -- the campaign hierarchy allows multiple root campaigns and these should be ordered alphabetically
end