UFN_GETPROSPECTASSIGNMENTSXML
Returns an xml value of prospects for a fundraiser.
Return
Return Type |
---|
xml |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@FUNDRAISER | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_GETPROSPECTASSIGNMENTSXML
(
@FUNDRAISER uniqueidentifier
)
returns xml
with execute as caller
as begin
if @FUNDRAISER = '00000000-0000-0000-0000-000000000000' set @FUNDRAISER = null;
declare @NOW as datetime;
set @NOW = dbo.UFN_DATE_GETEARLIESTTIME(getdate());
declare @OUTPUT xml;
set @OUTPUT = (
select
PROSPECTID,
TYPECODE,
PROSPECTPLANID,
SECONDARYID,
PROSPECTTEAMROLECODEID,
CURRENTSTARTDATE,
ASSIGNTOID,
STARTDATE
from (
--Prospect managers
select
PROSPECT.ID as PROSPECTID,
0 as TYPECODE,
null as PROSPECTPLANID,
null as SECONDARYID,
null as PROSPECTTEAMROLECODEID,
--PBI#237207 - Arun Saini
--Do not fetch fundraiser data if we are loading unassigned prospects and empty start date in every case
case when @FUNDRAISER is null then null else PROSPECT.PROSPECTMANAGERSTARTDATE end CURRENTSTARTDATE,
case when @FUNDRAISER is null then null else PROSPECT.PROSPECTMANAGERFUNDRAISERID end ASSIGNTOID,
null as STARTDATE
from
dbo.PROSPECT
where
(
--Load unassigned
@FUNDRAISER is null
and
(
-- No current prospect manager
PROSPECT.PROSPECTMANAGERFUNDRAISERID is null
or
PROSPECT.PROSPECTMANAGERENDDATE <= @NOW
)
)
or
(
-- Current prospect manager matches
PROSPECT.PROSPECTMANAGERFUNDRAISERID = @FUNDRAISER
and
(
PROSPECT.PROSPECTMANAGERENDDATE is null
or
PROSPECT.PROSPECTMANAGERENDDATE >= @NOW
)
)
union all
--Team members
select
PROSPECTTEAM.PROSPECTID,
1 as TYPECODE,
null as PROSPECTPLANID,
PROSPECTTEAM.ID as SECONDARYID,
PROSPECTTEAM.PROSPECTTEAMROLECODEID,
--PBI#237207 - Arun Saini
--Do not fetch fundraiser data if we are loading unassigned prospects and empty start date in every case
case when @FUNDRAISER is null then null else PROSPECTTEAM.DATEFROM end CURRENTSTARTDATE,
case when @FUNDRAISER is null then null else PROSPECTTEAM.MEMBERID end ASSIGNTOID,
null as STARTDATE
from
dbo.PROSPECTTEAM
where
-- If @FUNDRAISER is null (Load unassigned), do not load rows for team members because they are many-to-one
PROSPECTTEAM.MEMBERID = @FUNDRAISER
and
(
PROSPECTTEAM.DATETO is null
or
PROSPECTTEAM.DATETO >= @NOW
)
union all
--Primary Plan managers
select
PROSPECTPLAN.PROSPECTID,
2 as TYPECODE,
PROSPECTPLAN.ID as PROSPECTPLANID,
null as SECONDARYID,
null as PROSPECTTEAMROLECODEID,
--PBI#237207 - Arun Saini
--Do not fetch fundraiser data if we are loading unassigned prospects and empty start date in every case
case when @FUNDRAISER is null then null else PROSPECTPLAN.PRIMARYMANAGERSTARTDATE end CURRENTSTARTDATE,
case when @FUNDRAISER is null then null else PROSPECTPLAN.PRIMARYMANAGERFUNDRAISERID end ASSIGNTOID,
null as STARTDATE
from
dbo.PROSPECTPLAN
where
PROSPECTPLAN.ISACTIVE = 1
and
(
(
--Load unassigned
@FUNDRAISER is null
and
(
PROSPECTPLAN.PRIMARYMANAGERFUNDRAISERID is null
or
PROSPECTPLAN.PRIMARYMANAGERENDDATE <= @NOW
)
)
or
(
PROSPECTPLAN.PRIMARYMANAGERFUNDRAISERID = @FUNDRAISER
and
(
PROSPECTPLAN.PRIMARYMANAGERENDDATE is null
or
PROSPECTPLAN.PRIMARYMANAGERENDDATE >= @NOW
)
)
)
union all
--Secondary Plan managers
select
PROSPECTPLAN.PROSPECTID,
3 as TYPECODE,
PROSPECTPLAN.ID as PROSPECTPLANID,
null as SECONDARYID,
null as PROSPECTTEAMROLECODEID,
--PBI#237207 - Arun Saini
--Do not fetch fundraiser data if we are loading unassigned prospects and empty start date in every case
case when @FUNDRAISER is null then null else PROSPECTPLAN.SECONDARYMANAGERSTARTDATE end CURRENTSTARTDATE,
case when @FUNDRAISER is null then null else PROSPECTPLAN.SECONDARYMANAGERFUNDRAISERID end ASSIGNTOID,
null as STARTDATE
from
dbo.PROSPECTPLAN
where
PROSPECTPLAN.ISACTIVE = 1
and
(
(
--Load unassigned
@FUNDRAISER is null
and
(
PROSPECTPLAN.SECONDARYMANAGERFUNDRAISERID is null
or
PROSPECTPLAN.SECONDARYMANAGERENDDATE <= @NOW
)
)
or
(
PROSPECTPLAN.SECONDARYMANAGERFUNDRAISERID = @FUNDRAISER
and
(
PROSPECTPLAN.SECONDARYMANAGERENDDATE is null
or
PROSPECTPLAN.SECONDARYMANAGERENDDATE >= @NOW
)
)
)
union all
--Secondary solicitors
select
PROSPECTPLAN.PROSPECTID,
4 as TYPECODE,
PROSPECTPLAN.ID as PROSPECTPLANID,
SECONDARYFUNDRAISER.ID as SECONDARYID,
null as PROSPECTTEAMROLECODEID,
--PBI#237207 - Arun Saini
--Do not fetch fundraiser data if we are loading unassigned prospects and empty start date in every case
case when @FUNDRAISER is null then null else SECONDARYFUNDRAISER.DATEFROM end CURRENTSTARTDATE,
case when @FUNDRAISER is null then null else SECONDARYFUNDRAISER.FUNDRAISERID end ASSIGNTOID,
null as STARTDATE
from
dbo.SECONDARYFUNDRAISER
inner join dbo.PROSPECTPLAN on SECONDARYFUNDRAISER.PROSPECTPLANID = PROSPECTPLAN.ID
where
PROSPECTPLAN.ISACTIVE = 1
and
-- If @FUNDRAISER is null (Load unassigned), do not load rows for secondary solicitors because they are many-to-one
SECONDARYFUNDRAISER.FUNDRAISERID = @FUNDRAISER
and
(
SECONDARYFUNDRAISER.DATETO is null
or
SECONDARYFUNDRAISER.DATETO >= @NOW
)
) a
inner join dbo.CONSTITUENT on a.PROSPECTID = CONSTITUENT.ID
inner join dbo.PROSPECTDATERANGE on a.PROSPECTID = PROSPECTDATERANGE.CONSTITUENTID
where
-- copied from UFN_CONSTITUENT_ISPROSPECT - only show active prospects
(PROSPECTDATERANGE.DATEFROM <= dbo.UFN_DATE_GETLATESTTIME(@NOW) or PROSPECTDATERANGE.DATEFROM is null) and
(PROSPECTDATERANGE.DATETO >= @NOW or PROSPECTDATERANGE.DATETO is null)
order by CONSTITUENT.KEYNAME
for xml raw('ITEM'),type,elements,root('ASSIGNMENTS'),binary base64
);
return @OUTPUT;
end