USP_KPI_MAJORGIVING_COMPLETEDMOVESFUNDRAISER
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@VALUE | int | INOUT | |
@ASOFDATE | datetime | IN | |
@DATEFILTER | tinyint | IN | |
@PROSPECTPLANTYPECODEID | uniqueidentifier | IN | |
@PROSPECTPLANSTATUSCODEID | uniqueidentifier | IN | |
@PROSPECTSTATUSCODEID | uniqueidentifier | IN | |
@FUNDRAISERID | uniqueidentifier | IN | |
@ORGPOSITIONSSELECTIONID | uniqueidentifier | IN | |
@INTERACTIONTYPECODEID | uniqueidentifier | IN | |
@INTERACTIONCATEGORYID | uniqueidentifier | IN | |
@INTERACTIONSUBCATEGORYID | uniqueidentifier | IN | |
@ONLYOWNEDINTERACTIONS | bit | IN | |
@STEPSSELECTIONID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_KPI_MAJORGIVING_COMPLETEDMOVESFUNDRAISER
@VALUE int output,
@ASOFDATE datetime,
@DATEFILTER tinyint = null,
@PROSPECTPLANTYPECODEID uniqueidentifier = null,
@PROSPECTPLANSTATUSCODEID uniqueidentifier = null,
@PROSPECTSTATUSCODEID uniqueidentifier = null,
@FUNDRAISERID uniqueidentifier = null,
@ORGPOSITIONSSELECTIONID uniqueidentifier = null,
@INTERACTIONTYPECODEID uniqueidentifier = null,
@INTERACTIONCATEGORYID uniqueidentifier = null,
@INTERACTIONSUBCATEGORYID uniqueidentifier = null,
@ONLYOWNEDINTERACTIONS bit = 1,
@STEPSSELECTIONID uniqueidentifier = null
as
set nocount on;
if @DATEFILTER is null begin
set @DATEFILTER = 10; -- all dates;
end
declare @STARTDATE datetime;
declare @ENDDATE datetime;
if @FUNDRAISERID is null and @ORGPOSITIONSSELECTIONID is null
set @ONLYOWNEDINTERACTIONS = 0;
exec dbo.USP_RESOLVEDATEFILTER @DATEFILTER=@DATEFILTER, @STARTDATE=@STARTDATE output, @ENDDATE=@ENDDATE output, @ASOFDATE=@ASOFDATE;
declare @STEPIDS as table (ID uniqueidentifier);
if @STEPSSELECTIONID is not null
insert into @STEPIDS (ID) select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@STEPSSELECTIONID);
if @ORGPOSITIONSSELECTIONID is null
select
@VALUE = coalesce(count(*), 0)
from
dbo.INTERACTION I
inner join dbo.PROSPECTPLAN PP on PP.ID = I.PROSPECTPLANID
inner join dbo.PROSPECT P on P.ID = PP.PROSPECTID
where
(@FUNDRAISERID is null or
(
@FUNDRAISERID = I.FUNDRAISERID or
(@ONLYOWNEDINTERACTIONS = 0 and exists(select ID from dbo.INTERACTIONADDITIONALFUNDRAISER where INTERACTIONID = I.ID and FUNDRAISERID = @FUNDRAISERID))
)
)
and
(
@STEPSSELECTIONID is null
or exists (select ID from @STEPIDS [STEPIDS] where [STEPIDS].ID = I.ID)
)
and I.COMPLETED = 1
and I.DATE between @STARTDATE and @ENDDATE
and (@PROSPECTPLANTYPECODEID is null or PP.PROSPECTPLANTYPECODEID = @PROSPECTPLANTYPECODEID)
and (@PROSPECTPLANSTATUSCODEID is null or PP.PROSPECTPLANSTATUSCODEID = @PROSPECTPLANSTATUSCODEID)
and (@PROSPECTSTATUSCODEID is null or P.PROSPECTSTATUSCODEID = @PROSPECTSTATUSCODEID)
and (@INTERACTIONTYPECODEID is null or I.INTERACTIONTYPECODEID = @INTERACTIONTYPECODEID)
and (@INTERACTIONSUBCATEGORYID is null or I.INTERACTIONSUBCATEGORYID = @INTERACTIONSUBCATEGORYID)
and (@INTERACTIONCATEGORYID is null or I.INTERACTIONSUBCATEGORYID in
(select INTERACTIONSUBCATEGORY.ID from INTERACTIONSUBCATEGORY where INTERACTIONSUBCATEGORY.INTERACTIONCATEGORYID = @INTERACTIONCATEGORYID))
else
begin
declare @IDS as table(ID uniqueidentifier);
insert into @IDS exec dbo.USP_ORGANIZATIONHIERARCHY_IDSET_POSITIONHOLDERS @ORGPOSITIONSSELECTIONID, null;
select
@VALUE = coalesce(count(distinct DATA.ID), 0)
from
(
select
I.ID
from
dbo.INTERACTION I
inner join dbo.PROSPECTPLAN PP on PP.ID = I.PROSPECTPLANID
inner join dbo.PROSPECT P on P.ID = PP.PROSPECTID
inner join dbo.ORGANIZATIONPOSITIONHOLDER OPH on OPH.CONSTITUENTID = I.FUNDRAISERID and I.DATE between OPH.DATEFROM and coalesce(OPH.DATETO, I.DATE)
inner join @IDS as SELECTION on OPH.[ID] = SELECTION.[ID]
where
(@FUNDRAISERID is null or
(
@FUNDRAISERID = I.FUNDRAISERID or
(@ONLYOWNEDINTERACTIONS = 0 and exists(select ID from dbo.INTERACTIONADDITIONALFUNDRAISER where INTERACTIONID = I.ID and FUNDRAISERID = @FUNDRAISERID))
)
)
and I.COMPLETED = 1
and I.DATE between @STARTDATE and @ENDDATE
and (@PROSPECTPLANTYPECODEID is null or PP.PROSPECTPLANTYPECODEID = @PROSPECTPLANTYPECODEID)
and (@PROSPECTPLANSTATUSCODEID is null or PP.PROSPECTPLANSTATUSCODEID = @PROSPECTPLANSTATUSCODEID)
and (@PROSPECTSTATUSCODEID is null or P.PROSPECTSTATUSCODEID = @PROSPECTSTATUSCODEID)
and (@INTERACTIONTYPECODEID is null or I.INTERACTIONTYPECODEID = @INTERACTIONTYPECODEID)
and (@INTERACTIONSUBCATEGORYID is null or I.INTERACTIONSUBCATEGORYID = @INTERACTIONSUBCATEGORYID)
and (@INTERACTIONCATEGORYID is null or I.INTERACTIONSUBCATEGORYID in
(select INTERACTIONSUBCATEGORY.ID from INTERACTIONSUBCATEGORY where INTERACTIONSUBCATEGORY.INTERACTIONCATEGORYID = @INTERACTIONCATEGORYID))
union all
select
I.ID
from
dbo.INTERACTION I
inner join dbo.INTERACTIONADDITIONALFUNDRAISER on I.ID = INTERACTIONADDITIONALFUNDRAISER.INTERACTIONID
inner join dbo.PROSPECTPLAN PP on PP.ID = I.PROSPECTPLANID
inner join dbo.PROSPECT P on P.ID = PP.PROSPECTID
inner join dbo.ORGANIZATIONPOSITIONHOLDER OPH on OPH.CONSTITUENTID = INTERACTIONADDITIONALFUNDRAISER.FUNDRAISERID and I.DATE between OPH.DATEFROM and coalesce(OPH.DATETO, I.DATE)
inner join @IDS as SELECTION on OPH.[ID] = SELECTION.[ID]
where
@ONLYOWNEDINTERACTIONS = 0
and (@FUNDRAISERID is null or
(
@FUNDRAISERID = I.FUNDRAISERID or
(exists(select ID from dbo.INTERACTIONADDITIONALFUNDRAISER where INTERACTIONID = I.ID and FUNDRAISERID = @FUNDRAISERID))
)
)
and I.COMPLETED = 1
and I.DATE between @STARTDATE and @ENDDATE
and (@PROSPECTPLANTYPECODEID is null or PP.PROSPECTPLANTYPECODEID = @PROSPECTPLANTYPECODEID)
and (@PROSPECTPLANSTATUSCODEID is null or PP.PROSPECTPLANSTATUSCODEID = @PROSPECTPLANSTATUSCODEID)
and (@PROSPECTSTATUSCODEID is null or P.PROSPECTSTATUSCODEID = @PROSPECTSTATUSCODEID)
and (@INTERACTIONTYPECODEID is null or I.INTERACTIONTYPECODEID = @INTERACTIONTYPECODEID)
and (@INTERACTIONSUBCATEGORYID is null or I.INTERACTIONSUBCATEGORYID = @INTERACTIONSUBCATEGORYID)
and (@INTERACTIONCATEGORYID is null or I.INTERACTIONSUBCATEGORYID in
(select INTERACTIONSUBCATEGORY.ID from INTERACTIONSUBCATEGORY where INTERACTIONSUBCATEGORY.INTERACTIONCATEGORYID = @INTERACTIONCATEGORYID))
) as DATA
where
(
@STEPSSELECTIONID is null
or exists (select ID from @STEPIDS [STEPIDS] where [STEPIDS].ID = DATA.ID)
)
end