USP_REPORT_PROSPECTPLANFOLLOWUP

Returns all prospect plans steps meeting the specified criteria.

Parameters

Parameter Parameter Type Mode Description
@PROSPECTQUERYID uniqueidentifier IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@INCLUDECOMPLETEDSTEPS bit IN
@OWNERID uniqueidentifier IN
@STEPTYPE uniqueidentifier IN
@PROSPECTSTATUS uniqueidentifier IN
@INCLUDEHISTORICALPLANS bit IN
@PROSPECTMANAGER uniqueidentifier IN
@PLANSTAGE uniqueidentifier IN
@PLANTYPE uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@ONLYOWNEDINTERACTIONS bit IN
@SECURITYFEATUREID uniqueidentifier IN
@SECURITYFEATURETYPE tinyint IN

Definition

Copy


            CREATE procedure dbo.USP_REPORT_PROSPECTPLANFOLLOWUP
            (
                @PROSPECTQUERYID uniqueidentifier = null,
                @STARTDATE datetime = null,
                @ENDDATE datetime = null,
                @INCLUDECOMPLETEDSTEPS bit = null,
                @OWNERID uniqueidentifier = null,
                @STEPTYPE uniqueidentifier = null,
                @PROSPECTSTATUS uniqueidentifier = null,
                @INCLUDEHISTORICALPLANS bit = null,
                @PROSPECTMANAGER uniqueidentifier = null,
                @PLANSTAGE uniqueidentifier = null,
                @PLANTYPE uniqueidentifier = null,
                @CURRENTAPPUSERID uniqueidentifier = null,
                @ONLYOWNEDINTERACTIONS bit = 0,
                @SECURITYFEATUREID uniqueidentifier = null,
                @SECURITYFEATURETYPE tinyint = null
            )
            as            
                set nocount on;

                declare @ISADMIN bit;
                declare @APPUSER_IN_NONRACROLE bit;
                declare @APPUSER_IN_NOSECGROUPROLE bit;
                declare @APPUSER_IN_NONSITEROLE bit;
                declare @APPUSER_IN_NOSITEROLE bit;

                set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
                set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
                set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);
                set @APPUSER_IN_NONSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NONSITEROLE(@CURRENTAPPUSERID);
                set @APPUSER_IN_NOSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SITE_ROLE(@CURRENTAPPUSERID);

                begin try
                    if @PROSPECTQUERYID is null
                        select 
                            CONSTITUENT.ID as PROSPECTID,
                            CONSTITUENT.KEYNAME as PROSPECTKEYNAME,
                            CONSTITUENT.FIRSTNAME as PROSPECTFIRSTNAME,
                            CONSTITUENT_NF.NAME as PROSPECTNAME, 
                            dbo.UFN_BUILDFULLADDRESS(ADDRESS.ID, ADDRESS.ADDRESSBLOCK, ADDRESS.CITY, ADDRESS.STATEID, ADDRESS.POSTCODE, ADDRESS.COUNTRYID) as ADDRESS,
                            PROSPECTPLANTYPECODE.DESCRIPTION as PLANTYPE,
                            PROSPECTPLANSTATUSCODE.DESCRIPTION as PLANSTAGE,
                            INTERACTION.DATE as STEPDATE,
                            INTERACTIONTYPECODE.DESCRIPTION as STEPTYPE,
                            FUNDRAISER.KEYNAME as FUNDRAISERKEYNAME,
                            FUNDRAISER.FIRSTNAME as FUNDRAISERFIRSTNAME,
                            FUNDRAISER_NF.NAME as FUNDRAISERNAME,
                            PROSPECTMANAGER.KEYNAME as PROSPECTMANAGERKEYNAME,
                            PROSPECTMANAGER.FIRSTNAME as PROSPECTMANAGERFIRSTNAME,
                            PROSPECTMANAGER_NF.NAME as PROSPECTMANAGERNAME,
                            INTERACTION.STATUS as STEPSTATUS,
                            (select dbo.UDA_BUILDLIST(NF.NAME) from dbo.INTERACTIONADDITIONALFUNDRAISER outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(INTERACTIONADDITIONALFUNDRAISER.FUNDRAISERID) NF where INTERACTIONADDITIONALFUNDRAISER.INTERACTIONID = INTERACTION.ID) as ADDITIONALFUNDRAISERNAME
                        from 
                            dbo.INTERACTION 
                            inner join dbo.CONSTITUENT on INTERACTION.CONSTITUENTID = CONSTITUENT.ID
                            inner join dbo.PROSPECT on CONSTITUENT.ID = PROSPECT.ID
                            inner join dbo.PROSPECTPLAN on INTERACTION.PROSPECTPLANID = PROSPECTPLAN.ID
                            inner join dbo.PROSPECTPLANTYPECODE on PROSPECTPLAN.PROSPECTPLANTYPECODEID = PROSPECTPLANTYPECODE.ID
                            left join dbo.PROSPECTPLANSTATUSCODE on PROSPECTPLAN.PROSPECTPLANSTATUSCODEID = PROSPECTPLANSTATUSCODE.ID
                            left join dbo.INTERACTIONTYPECODE on INTERACTION.INTERACTIONTYPECODEID = INTERACTIONTYPECODE.ID
                            left join dbo.CONSTITUENT as FUNDRAISER on INTERACTION.FUNDRAISERID = FUNDRAISER.ID        
                            left join dbo.ADDRESS on CONSTITUENT.ID = ADDRESS.CONSTITUENTID and ADDRESS.ISPRIMARY = 1
                            left join dbo.CONSTITUENT as PROSPECTMANAGER on PROSPECT.PROSPECTMANAGERFUNDRAISERID = PROSPECTMANAGER.ID
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) CONSTITUENT_NF
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(FUNDRAISER.ID) FUNDRAISER_NF
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PROSPECTMANAGER.ID) PROSPECTMANAGER_NF
                        where
                            INTERACTION.DATE between @STARTDATE and @ENDDATE and
                            (@INCLUDECOMPLETEDSTEPS = 1 or INTERACTION.COMPLETED = 0) and
                            (@OWNERID is null or
                                (
                                    @OWNERID = INTERACTION.FUNDRAISERID or
                                    (@ONLYOWNEDINTERACTIONS = 0 and exists(select ID from dbo.INTERACTIONADDITIONALFUNDRAISER where INTERACTIONID = INTERACTION.ID and FUNDRAISERID = @OWNERID))
                                )
                            ) and
                            (@STEPTYPE is null or INTERACTION.INTERACTIONTYPECODEID = @STEPTYPE) and
                            (@PROSPECTSTATUS is null or PROSPECT.PROSPECTSTATUSCODEID = @PROSPECTSTATUS) and
                            (@INCLUDEHISTORICALPLANS = 1 or PROSPECTPLAN.ISACTIVE = 1) and
                            (@PROSPECTMANAGER is null or PROSPECT.PROSPECTMANAGERFUNDRAISERID = @PROSPECTMANAGER) and
                            (@PLANSTAGE is null or PROSPECTPLAN.PROSPECTPLANSTATUSCODEID = @PLANSTAGE) and
                            (@PLANTYPE is null or PROSPECTPLAN.PROSPECTPLANTYPECODEID = @PLANTYPE) and
                            (@ISADMIN = 1 or
                                (
                                    (@APPUSER_IN_NONRACROLE = 1 or
                                    dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSECGROUPROLE) = 1)
                                    and
                                    (@APPUSER_IN_NONSITEROLE = 1 or
                                    dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSITEROLE) = 1)
                                )
                            ) and
                            (
                              (@SECURITYFEATUREID is null and @SECURITYFEATURETYPE is null) or
                              (
                                  select count(*
                                  from dbo.UFN_SITEID_MAPFROM_PROSPECTPLANID(PROSPECTPLAN.ID) as PROSPECTPLANSITE 
                                  /*SITEEXTENSION*/
                                  where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[PROSPECTPLANSITE].[SITEID] or (SITEID is null and [PROSPECTPLANSITE].[SITEID] is null)))
                              ) > 0
                            )
                        order by
                            CONSTITUENT.KEYNAME,
                            CONSTITUENT.FIRSTNAME,
                            PROSPECTPLANTYPECODE.DESCRIPTION,
                            INTERACTION.DATE
                    else
                        select 
                            CONSTITUENT.ID as PROSPECTID,
                            CONSTITUENT.KEYNAME as PROSPECTKEYNAME,
                            CONSTITUENT.FIRSTNAME as PROSPECTFIRSTNAME,
                            CONSTITUENT_NF.NAME as PROSPECTNAME, 
                            dbo.UFN_BUILDFULLADDRESS(ADDRESS.ID, ADDRESS.ADDRESSBLOCK, ADDRESS.CITY, ADDRESS.STATEID, ADDRESS.POSTCODE, ADDRESS.COUNTRYID) as ADDRESS,
                            PROSPECTPLANTYPECODE.DESCRIPTION as PLANTYPE,
                            PROSPECTPLANSTATUSCODE.DESCRIPTION as PLANSTAGE,
                            INTERACTION.DATE as STEPDATE,
                            INTERACTIONTYPECODE.DESCRIPTION as STEPTYPE,
                            FUNDRAISER.KEYNAME as FUNDRAISERKEYNAME,
                            FUNDRAISER.FIRSTNAME as FUNDRAISERFIRSTNAME,
                            FUNDRAISER_NF.NAME as FUNDRAISERNAME,
                            PROSPECTMANAGER.KEYNAME as PROSPECTMANAGERKEYNAME,
                            PROSPECTMANAGER.FIRSTNAME as PROSPECTMANAGERFIRSTNAME,
                            PROSPECTMANAGER_NF.NAME as PROSPECTMANAGERNAME,
                            INTERACTION.STATUS as STEPSTATUS,
                            (select dbo.UDA_BUILDLIST(NF.NAME) from dbo.INTERACTIONADDITIONALFUNDRAISER outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(INTERACTIONADDITIONALFUNDRAISER.FUNDRAISERID) NF where INTERACTIONADDITIONALFUNDRAISER.INTERACTIONID = INTERACTION.ID) as ADDITIONALFUNDRAISERNAME
                        from 
                            dbo.INTERACTION
                            inner join dbo.CONSTITUENT on INTERACTION.CONSTITUENTID = CONSTITUENT.ID
                            inner join dbo.PROSPECT on CONSTITUENT.ID = PROSPECT.ID
                            inner join dbo.PROSPECTPLAN on INTERACTION.PROSPECTPLANID = PROSPECTPLAN.ID
                            inner join dbo.PROSPECTPLANTYPECODE on PROSPECTPLAN.PROSPECTPLANTYPECODEID = PROSPECTPLANTYPECODE.ID
                            inner join dbo.UFN_IDSETREADER_GETRESULTS_GUID(@PROSPECTQUERYID) SELECTION on CONSTITUENT.ID = SELECTION.ID
                            left join dbo.PROSPECTPLANSTATUSCODE on PROSPECTPLAN.PROSPECTPLANSTATUSCODEID = PROSPECTPLANSTATUSCODE.ID
                            left join dbo.INTERACTIONTYPECODE on INTERACTION.INTERACTIONTYPECODEID = INTERACTIONTYPECODE.ID
                            left join dbo.CONSTITUENT as FUNDRAISER on INTERACTION.FUNDRAISERID = FUNDRAISER.ID
                            left join dbo.ADDRESS on CONSTITUENT.ID = ADDRESS.CONSTITUENTID and ADDRESS.ISPRIMARY = 1
                            left join dbo.CONSTITUENT as PROSPECTMANAGER on PROSPECT.PROSPECTMANAGERFUNDRAISERID = PROSPECTMANAGER.ID
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) CONSTITUENT_NF
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(FUNDRAISER.ID) FUNDRAISER_NF
                            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PROSPECTMANAGER.ID) PROSPECTMANAGER_NF
                        where
                            INTERACTION.DATE between @STARTDATE and @ENDDATE and
                            (@INCLUDECOMPLETEDSTEPS = 1 or INTERACTION.COMPLETED = 0) and
                            (@OWNERID is null or
                                (
                                    @OWNERID = INTERACTION.FUNDRAISERID or
                                    (@ONLYOWNEDINTERACTIONS = 0 and exists(select ID from dbo.INTERACTIONADDITIONALFUNDRAISER where INTERACTIONID = INTERACTION.ID and FUNDRAISERID = @OWNERID))
                                )
                            ) and
                            (@STEPTYPE is null or INTERACTION.INTERACTIONTYPECODEID = @STEPTYPE) and
                            (@PROSPECTSTATUS is null or PROSPECT.PROSPECTSTATUSCODEID = @PROSPECTSTATUS) and
                            (@INCLUDEHISTORICALPLANS = 1 or PROSPECTPLAN.ISACTIVE = 1) and
                            (@PROSPECTMANAGER is null or PROSPECT.PROSPECTMANAGERFUNDRAISERID = @PROSPECTMANAGER) and
                            (@PLANSTAGE is null or PROSPECTPLAN.PROSPECTPLANSTATUSCODEID = @PLANSTAGE) and
                            (@PLANTYPE is null or PROSPECTPLAN.PROSPECTPLANTYPECODEID = @PLANTYPE) and
                            (@ISADMIN = 1 or
                                (
                                    (@APPUSER_IN_NONRACROLE = 1 or
                                    dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSECGROUPROLE) = 1)
                                    and
                                    (@APPUSER_IN_NONSITEROLE = 1 or
                                    dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSITEROLE) = 1)
                                )
                            ) and
                            (
                              (@SECURITYFEATUREID is null and @SECURITYFEATURETYPE is null) or
                              (
                                  select count(*
                                  from dbo.UFN_SITEID_MAPFROM_PROSPECTPLANID(PROSPECTPLAN.ID) as PROSPECTPLANSITE 
                                  /*SITEEXTENSION*/
                                  where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[PROSPECTPLANSITE].[SITEID] or (SITEID is null and [PROSPECTPLANSITE].[SITEID] is null)))
                              ) > 0
                            )
                        order by
                            CONSTITUENT.KEYNAME,
                            CONSTITUENT.FIRSTNAME,
                            PROSPECTPLANTYPECODE.DESCRIPTION,
                            INTERACTION.DATE
                end try

                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch

                return 0;