USP_DATALIST_FUNDRAISERSTEPSPENDING

List of pending steps for a given fundraiser.

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@FUNDRAISERID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@ONLYOWNEDINTERACTIONS bit IN Only show steps owned by this fundraiser
@SITEFILTERMODE tinyint IN Sites
@SITESSELECTED xml IN
@SECURITYFEATUREID uniqueidentifier IN Input parameter indicating the ID of the feature to use for site security checking.
@SECURITYFEATURETYPE tinyint IN Input parameter indicating the type of the feature to use for site security checking.
@INCLUDEGENERALINTERACTIONS bit IN

Definition

Copy


CREATE procedure dbo.USP_DATALIST_FUNDRAISERSTEPSPENDING
(
    @CURRENTAPPUSERID uniqueidentifier,
    @FUNDRAISERID uniqueidentifier,
    @ONLYOWNEDINTERACTIONS bit = 0,
    @SITEFILTERMODE tinyint = 0,
    @SITESSELECTED xml = null,
    @SECURITYFEATUREID uniqueidentifier = null,
    @SECURITYFEATURETYPE tinyint = null,
    @INCLUDEGENERALINTERACTIONS bit = null
) as begin
    set nocount on;
    declare @TODAY datetime;
    set @TODAY = dbo.UFN_DATE_GETEARLIESTTIME(getdate());

    declare @temp table(
        INTERACTIONID uniqueidentifier,
        PROSPECTPLANID uniqueidentifier,
        PROSPECT nvarchar(154),
        EXPECTEDDATE datetime,
        OBJECTIVE nvarchar(100),
        PLANTYPE nvarchar(100),
        PLANSTAGE nvarchar(100),
        TIMEFRAME nvarchar(100),
        ISINTERACTION bit,
        OWNER nvarchar(154),
        CONTACTMETHOD nvarchar(100),
        HASDOCUMENTATION bit,
        HASADDITIONALFUNDRAISERS bit,
        ISSTEWARDSHIPSTEP bit,
        STEWARDSHIPFORGROUPORG bit,
        SITES nvarchar(1024),
        ISFUNDINGREQUESTSTEP bit,
        ISGENERALINTERACTION bit,
        PROSPECTID uniqueidentifier
    );

    insert into @temp
        (INTERACTIONID, PROSPECTPLANID, PROSPECT, EXPECTEDDATE, OBJECTIVE, PLANTYPE, PLANSTAGE, TIMEFRAME, ISINTERACTION, OWNER, CONTACTMETHOD, HASDOCUMENTATION, HASADDITIONALFUNDRAISERS, ISSTEWARDSHIPSTEP, STEWARDSHIPFORGROUPORG,SITES,ISFUNDINGREQUESTSTEP, ISGENERALINTERACTION, PROSPECTID)
        select 
            I.ID,
            PP.ID,
            NF_PC.NAME,
            I.EXPECTEDDATE,
            I.OBJECTIVE,
            dbo.UFN_PROSPECTPLANTYPECODE_GETDESCRIPTION(PP.PROSPECTPLANTYPECODEID),
            dbo.UFN_PROSPECTPLANSTATUSCODE_GETDESCRIPTION(PP.PROSPECTPLANSTATUSCODEID),
            dbo.UFN_DATE_TIMEFRAME(datediff(day, @TODAY, I.EXPECTEDDATE)),
            I.ISINTERACTION,            
            NF_FC.NAME as OWNER,
            ITC.DESCRIPTION as CONTACTMETHOD,
            case when exists(select 1 from dbo.INTERACTIONNOTE where INTERACTIONNOTE.INTERACTIONID=I.ID)
                   or exists(select 1 from dbo.INTERACTIONATTACHMENT where INTERACTIONATTACHMENT.INTERACTIONID=I.ID)
                   or exists(select 1 from dbo.INTERACTIONMEDIALINK where INTERACTIONMEDIALINK.INTERACTIONID=I.ID)
            then convert(bit,1) else convert(bit,0) end,
            case
                when exists (select ID from INTERACTIONADDITIONALFUNDRAISER where INTERACTIONID = I.ID) then convert(bit, 1)
                else convert(bit, 0)                
            end HASADDITIONALFUNDRAISERS,
            0,
            0,
            dbo.UFN_PROSPECTPLAN_GETSITELIST(PP.ID) SITES,
            0,
            0,
            I.CONSTITUENTID
        from
            dbo.INTERACTION I
            inner join dbo.PROSPECTPLAN PP 
                on PP.ID=I.PROSPECTPLANID
            left join dbo.INTERACTIONTYPECODE ITC 
                on I.INTERACTIONTYPECODEID = ITC.ID
            cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PP.PROSPECTID) NF_PC
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(I.FUNDRAISERID) NF_FC
        where
            I.STATUSCODE=1
            and (
                I.FUNDRAISERID = @FUNDRAISERID
                or (@ONLYOWNEDINTERACTIONS = 0 and exists(select ID from dbo.INTERACTIONADDITIONALFUNDRAISER where INTERACTIONID = I.ID and FUNDRAISERID = @FUNDRAISERID))
            )
            and (
                select count(*
                from dbo.UFN_SITEID_MAPFROM_PROSPECTPLANID(PP.ID) as SECUREDRECORD 
                where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[SECUREDRECORD].[SITEID] or (SITEID is null and [SECUREDRECORD].[SITEID] is null)))
            ) > 0
            and (
                @SITEFILTERMODE = 0
                    or PP.ID in (
                        select PROSPECTPLANSITE.PROSPECTPLANID
                        from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
                            inner join dbo.PROSPECTPLANSITE on PROSPECTPLANSITE.SITEID = SITEFILTER.SITEID
                    )
            );

    --AdamBu - 10/21/09 - Funding request steps    

    insert into @temp
        (INTERACTIONID, PROSPECTPLANID, PROSPECT, EXPECTEDDATE, OBJECTIVE, PLANTYPE, PLANSTAGE, TIMEFRAME, ISINTERACTION, OWNER, CONTACTMETHOD, HASDOCUMENTATION, HASADDITIONALFUNDRAISERS, ISSTEWARDSHIPSTEP, STEWARDSHIPFORGROUPORG,SITES,ISFUNDINGREQUESTSTEP, ISGENERALINTERACTION, PROSPECTID)
        select 
            I.ID,
            FUNDINGREQUEST.ID,
            NF_PC.NAME,
            I.EXPECTEDDATE,
            I.OBJECTIVE,
            'Funding request',
            dbo.UFN_FUNDINGREQUESTSTAGECODE_GETDESCRIPTION(FUNDINGREQUEST.FUNDINGREQUESTSTAGECODEID),
            dbo.UFN_DATE_TIMEFRAME(datediff(day, @TODAY, I.EXPECTEDDATE)),
            I.ISINTERACTION,            
            NF_FC.NAME as OWNER,
            ITC.DESCRIPTION as CONTACTMETHOD,
            case when exists(select 1 from dbo.INTERACTIONNOTE where INTERACTIONNOTE.INTERACTIONID=I.ID)
                   or exists(select 1 from dbo.INTERACTIONATTACHMENT where INTERACTIONATTACHMENT.INTERACTIONID=I.ID)
                   or exists(select 1 from dbo.INTERACTIONMEDIALINK where INTERACTIONMEDIALINK.INTERACTIONID=I.ID)
            then convert(bit,1) else convert(bit,0) end,
            case
                when exists (select ID from INTERACTIONADDITIONALFUNDRAISER where INTERACTIONID = I.ID) then convert(bit, 1)
                else convert(bit, 0)                
            end HASADDITIONALFUNDRAISERS,
            0,
            0,
            SITE.NAME SITES,
            1,
            0,
            I.CONSTITUENTID
        from
            dbo.INTERACTION I
            inner join dbo.FUNDINGREQUEST 
                on FUNDINGREQUEST.ID=I.FUNDINGREQUESTID
            inner join dbo.FUNDINGPLAN SECUREDRECORD
                on SECUREDRECORD.ID = FUNDINGREQUEST.FUNDINGPLANID
            inner join dbo.GRANTS
                on GRANTS.ID = FUNDINGREQUEST.GRANTSID
            left join dbo.INTERACTIONTYPECODE ITC 
                on I.INTERACTIONTYPECODEID = ITC.ID
            left join dbo.SITE
                on SITE.ID = SECUREDRECORD.SITEID
            cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(GRANTS.GRANTORID) NF_PC
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(I.FUNDRAISERID) NF_FC
        where
            I.STATUSCODE=1
            and (
                I.FUNDRAISERID = @FUNDRAISERID
                or (@ONLYOWNEDINTERACTIONS = 0 and exists(select ID from dbo.INTERACTIONADDITIONALFUNDRAISER where INTERACTIONID = I.ID and FUNDRAISERID = @FUNDRAISERID))
            )
            and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[SECUREDRECORD].[SITEID] or (SITEID is null and [SECUREDRECORD].[SITEID] is null)))
            and (
                @SITEFILTERMODE = 0
                    or SITE.ID in (
                        select SITEID from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED)
                    )
            );


    insert into @temp
        (INTERACTIONID, PROSPECTPLANID, PROSPECT, EXPECTEDDATE, OBJECTIVE, PLANTYPE, PLANSTAGE, TIMEFRAME, ISINTERACTION, OWNER, CONTACTMETHOD, HASDOCUMENTATION, HASADDITIONALFUNDRAISERS, ISSTEWARDSHIPSTEP, STEWARDSHIPFORGROUPORG, SITES,ISFUNDINGREQUESTSTEP, ISGENERALINTERACTION, PROSPECTID)
            select
                STEP.ID,
                STEP.PLANID,                                                        -- Prospect Plan ID

                PROSPECT_NF.NAME,                                                    -- Prospect

                STEP.TARGETDATE,                                                    -- Expected Date    

                STEP.OBJECTIVE,                                                        -- Objective

                'Stewardship',                                                        -- Plan Type

                null,                                                                -- Plan Stage

                dbo.UFN_DATE_TIMEFRAME(datediff(day, @TODAY, STEP.TARGETDATE)),        -- Time Frame

                0,                                                                    -- Is Interaction                        

                OWNER_NF.NAME,                                                        -- Owner            

                ITC.DESCRIPTION,                                                    -- Contact Method        

                case when exists(select 1 from dbo.STEWARDSHIPNOTE where STEWARDSHIPNOTE.STEPID = STEP.ID)
                       or exists(select 1 from dbo.STEWARDSHIPATTACHMENT where STEWARDSHIPATTACHMENT.STEPID = STEP.ID)
                       or exists(select 1 from dbo.STEWARDSHIPMEDIALINK where STEWARDSHIPMEDIALINK.STEPID = STEP.ID)
                            then convert(bit,1
                     else convert(bit,0
                end,                                                                -- HASDOCUMENTATION

                0,                                                                    -- HASADDITIONALFUNDRAISERS

                1,                                                                    -- ISSTEWARDSHIPSTEP                

                case
                    when PROSPECT.ISGROUP = 1 or PROSPECT.ISORGANIZATION = 1 then 1
                    else 0
                end    ,                                                            -- STEWARDSHIPFORGROUPORG

                dbo.UFN_STEWARDSHIPPLAN_GETSITELIST([PLAN].ID) SITES,
                0,
                0,
                PROSPECT.ID
            from dbo.STEWARDSHIPPLANSTEP STEP
            inner join dbo.STEWARDSHIPPLAN [PLAN]
on STEP.PLANID = [PLAN].ID
            inner join dbo.CONSTITUENT PROSPECT
                on [PLAN].CONSTITUENTID = PROSPECT.ID
            left outer join dbo.INTERACTIONTYPECODE ITC 
                on ITC.ID = STEP.CONTACTMETHODCODEID
            cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PROSPECT.ID) PROSPECT_NF
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(STEP.CONSTITUENTID) OWNER_NF
            where
                STEP.CONSTITUENTID = @FUNDRAISERID
                and STEP.STATUSCODE = 0
                and exists(
                  select STEWARDSHIPPLAN.ID 
                  from dbo.STEWARDSHIPPLAN
                  where 
                    STEWARDSHIPPLAN.ID = STEP.PLANID and 
                    (
                        select count(*
                        from dbo.UFN_SITEID_MAPFROM_STEWARDSHIPPLANID(STEWARDSHIPPLAN.ID) as SECUREDRECORD 
                        where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[SECUREDRECORD].[SITEID] or (SITEID is null and [SECUREDRECORD].[SITEID] is null)))
                    ) > 0
                      and 
                    (
                        @SITEFILTERMODE = 0
                            or STEWARDSHIPPLAN.ID in (
                                select STEWARDSHIPPLANSITE.STEWARDSHIPPLANID
                                from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
                                    inner join dbo.STEWARDSHIPPLANSITE on STEWARDSHIPPLANSITE.SITEID = SITEFILTER.SITEID
                            )
                    )
                )

        insert into @temp
        (INTERACTIONID, PROSPECTPLANID, PROSPECT, EXPECTEDDATE, OBJECTIVE, PLANTYPE, PLANSTAGE, TIMEFRAME, ISINTERACTION, OWNER, CONTACTMETHOD, HASDOCUMENTATION, HASADDITIONALFUNDRAISERS, ISSTEWARDSHIPSTEP, STEWARDSHIPFORGROUPORG, SITES,ISFUNDINGREQUESTSTEP, ISGENERALINTERACTION, PROSPECTID)
            select
            I.ID,
            I.PROSPECTPLANID,
            NF_C.NAME,
            I.EXPECTEDDATE,
            null,
            null,
            null,
            dbo.UFN_DATE_TIMEFRAME(datediff(day, @TODAY, I.EXPECTEDDATE)),
            I.ISINTERACTION,
            NF_F.NAME,
            ITC.DESCRIPTION as CONTACTMETHOD,
            case
                when exists(select 1 from dbo.INTERACTIONNOTE where INTERACTIONNOTE.INTERACTIONID=I.ID)
                        or exists(select 1 from dbo.INTERACTIONATTACHMENT where INTERACTIONATTACHMENT.INTERACTIONID=I.ID)
                        or exists(select 1 from dbo.INTERACTIONMEDIALINK where INTERACTIONMEDIALINK.INTERACTIONID=I.ID)
                then convert(bit,1)
                else convert(bit,0)
            end,
            case when exists (select ID from INTERACTIONADDITIONALFUNDRAISER where INTERACTIONID = I.ID)
                then convert(bit, 1)
                else convert(bit, 0)
            end HASADDITIONALFUNDRAISERS,
            0,
            0,
            dbo.UFN_CONSTITUENTINTERACTION_GETSITELIST(I.ID),
            0,
            1,
            I.CONSTITUENTID
        from
            dbo.INTERACTION I
            left join dbo.INTERACTIONTYPECODE ITC on I.INTERACTIONTYPECODEID = ITC.ID
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENTID) NF_C
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(FUNDRAISERID) NF_F
        where
            @INCLUDEGENERALINTERACTIONS = 1 and
            I.STATUSCODE = 1 and
            I.FUNDRAISERID = @FUNDRAISERID and
            I.PROSPECTPLANID is null and
            exists
            (
                select top 1 INTERACTIONSITE.SITEID from dbo.UFN_SITEID_MAPFROM_INTERACTIONID(I.ID) INTERACTIONSITE
                where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[INTERACTIONSITE].[SITEID] or (SITEID is null and [INTERACTIONSITE].[SITEID] is null)))
            ) and
            (
                @SITEFILTERMODE = 0 or
                (I.ID in
                    (
                        select INTERACTIONSITE.INTERACTIONID
                        from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
                        inner join dbo.INTERACTIONSITE on INTERACTIONSITE.SITEID = SITEFILTER.SITEID
                    )
                )
            )

    select *
    from @temp
    order by
        EXPECTEDDATE, PROSPECT;
end;