UFN_QUERY_FUNDRAISERSTEPSPENDING

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@FUNDRAISERID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@ONLYOWNEDINTERACTIONS bit IN
@INCLUDEGENERALINTERACTIONS bit IN
@SITEFILTERMODE tinyint IN
@SITESSELECTED xml IN

Definition

Copy


CREATE function dbo.UFN_QUERY_FUNDRAISERSTEPSPENDING
(
  @FUNDRAISERID uniqueidentifier,
  @CURRENTAPPUSERID uniqueidentifier,
  @ONLYOWNEDINTERACTIONS bit = 0,
  @INCLUDEGENERALINTERACTIONS bit = 0,
  @SITEFILTERMODE tinyint = 0,
  @SITESSELECTED xml = null
)
returns table
as
return
(
  -- Major giving plan step

  select 
    INTERACTION.ID as INTERACTIONID,
    PROSPECTPLAN.ID as PROSPECTPLANID,
    NF_PC.NAME as PROSPECT,
    INTERACTION.EXPECTEDDATE,
    INTERACTION.OBJECTIVE,
    (select DESCRIPTION from dbo.PROSPECTPLANTYPECODE where ID = PROSPECTPLAN.PROSPECTPLANTYPECODEID) as PLANTYPE,
    (select DESCRIPTION from dbo.PROSPECTPLANSTATUSCODE where ID = PROSPECTPLAN.PROSPECTPLANSTATUSCODEID) as PLANSTAGE,
    convert(bit, INTERACTION.ISINTERACTION) as ISINTERACTION,
    NF_FC.NAME as OWNER,
    INTERACTIONTYPECODE.ID as CONTACTMETHODID,
    INTERACTIONTYPECODE.DESCRIPTION as CONTACTMETHOD,
    case
      when exists(select 1 from dbo.INTERACTIONNOTE where INTERACTIONNOTE.INTERACTIONID = INTERACTION.ID) or
           exists(select 1 from dbo.INTERACTIONATTACHMENT where INTERACTIONATTACHMENT.INTERACTIONID = INTERACTION.ID) or
           exists(select 1 from dbo.INTERACTIONMEDIALINK where INTERACTIONMEDIALINK.INTERACTIONID = INTERACTION.ID)
        then convert(bit, 1)
      else convert(bit, 0)
    end as HASDOCUMENTATION,
    case
      when exists (select ID from INTERACTIONADDITIONALFUNDRAISER where INTERACTIONID = INTERACTION.ID) then convert(bit, 1)
      else convert(bit, 0)
    end HASADDITIONALFUNDRAISERS,
    convert(bit, 0) as ISSTEWARDSHIPSTEP,
    convert(bit, 0) as ISSTEWARDSHIPFORGROUPORG,
    (
      select dbo.UDA_BUILDLIST(SITE.NAME)
      from dbo.PROSPECTPLANSITE
        inner join dbo.SITE on PROSPECTPLANSITE.SITEID = SITE.ID
      where PROSPECTPLANSITE.PROSPECTPLANID = PROSPECTPLAN.ID
    ) as SITES,
    convert(bit, 0) ISFUNDINGREQUESTSTEP,
    convert(bit, 0) ISGENERALINTERACTION,
    INTERACTION.CONSTITUENTID as PROSPECTID,
    INTERACTIONCATEGORY.NAME as CATEGORY,
    INTERACTIONSUBCATEGORY.NAME as SUBCATEGORY,
    INTERACTION.COMMENT,
    INTERACTION.EXPECTEDSTARTTIME,
    INTERACTION.EXPECTEDENDTIME,
    case
      when exists (select top 1 ID from dbo.INTERACTIONPARTICIPANT where INTERACTIONID = INTERACTION.ID) then convert(bit, 1)
      else convert(bit, 0)
    end as HASPARTICIPANTS,
    null as SUMMARY,
    INTERACTION.TIMEZONEENTRYID,
    TIMEZONEENTRY.DISPLAYNAME as TIMEZONE,
    INTERACTION.LOCATION
  from dbo.INTERACTION
    inner join dbo.PROSPECTPLAN on PROSPECTPLAN.ID = INTERACTION.PROSPECTPLANID
    left join dbo.INTERACTIONTYPECODE on INTERACTION.INTERACTIONTYPECODEID = INTERACTIONTYPECODE.ID
    left outer join dbo.INTERACTIONSUBCATEGORY on INTERACTION.INTERACTIONSUBCATEGORYID = INTERACTIONSUBCATEGORY.ID
    left join dbo.INTERACTIONCATEGORY on INTERACTIONSUBCATEGORY.INTERACTIONCATEGORYID = INTERACTIONCATEGORY.ID
    left join dbo.TIMEZONEENTRY on INTERACTION.TIMEZONEENTRYID = TIMEZONEENTRY.ID
    cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PROSPECTPLAN.PROSPECTID) NF_PC
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(INTERACTION.FUNDRAISERID) NF_FC
  where
    INTERACTION.STATUSCODE = 1 and
    (
      INTERACTION.FUNDRAISERID = @FUNDRAISERID or
      (
        @ONLYOWNEDINTERACTIONS = 0 and
        exists
        (
          select ID
          from dbo.INTERACTIONADDITIONALFUNDRAISER
          where
            INTERACTIONID = INTERACTION.ID and
            FUNDRAISERID = @FUNDRAISERID
        )
      )
    ) and
    (
      select count(*
      from dbo.UFN_SITEID_MAPFROM_PROSPECTPLANID(PROSPECTPLAN.ID) as SECUREDRECORD 
      where
      (
        (select ISSYSADMIN from dbo.APPUSER where ID = @CURRENTAPPUSERID) = 1 or
        exists
        (
          select 1
          from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,'ce00d624-f3af-40fe-9ef9-2ac191a543bb',10)
     where
            SITEID=[SECUREDRECORD].[SITEID] or
            (
              SITEID is null and
              [SECUREDRECORD].[SITEID] is null
            )
        )
      )
    ) > 0 and 
    (
      @SITEFILTERMODE = 0 or
      PROSPECTPLAN.ID in
      (
        select PROSPECTPLANSITE.PROSPECTPLANID
        from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
          inner join dbo.PROSPECTPLANSITE on PROSPECTPLANSITE.SITEID = SITEFILTER.SITEID
      )
    )

  union all

  -- Funding request step

  select 
    INTERACTION.ID as INTERACTIONID,
    FUNDINGREQUEST.ID as PROSPECTPLANID,
    NF_PC.NAME as PROSPECT,
    INTERACTION.EXPECTEDDATE,
    INTERACTION.OBJECTIVE,
    'Funding request' as PLANTYPE,
    (select DESCRIPTION from dbo.FUNDINGREQUESTSTAGECODE where ID = FUNDINGREQUEST.FUNDINGREQUESTSTAGECODEID) as PLANSTAGE,
    convert(bit, INTERACTION.ISINTERACTION) as ISINTERACTION,
    NF_FC.NAME as OWNER,
    INTERACTIONTYPECODE.ID as CONTACTMETHODID,
    INTERACTIONTYPECODE.DESCRIPTION as CONTACTMETHOD,
    case
      when exists(select 1 from dbo.INTERACTIONNOTE where INTERACTIONNOTE.INTERACTIONID = INTERACTION.ID) or
           exists(select 1 from dbo.INTERACTIONATTACHMENT where INTERACTIONATTACHMENT.INTERACTIONID = INTERACTION.ID) or
           exists(select 1 from dbo.INTERACTIONMEDIALINK where INTERACTIONMEDIALINK.INTERACTIONID = INTERACTION.ID)
        then convert(bit, 1)
      else convert(bit, 0)
    end as HASDOCUMENTATION,
    case
      when exists (select ID from INTERACTIONADDITIONALFUNDRAISER where INTERACTIONID = INTERACTION.ID) then convert(bit, 1)
      else convert(bit, 0)
    end HASADDITIONALFUNDRAISERS,
    convert(bit, 0) as ISSTEWARDSHIPSTEP,
    convert(bit, 0) as ISSTEWARDSHIPFORGROUPORG,
    SITE.NAME as SITES,
    convert(bit, 1) as ISFUNDINGREQUESTSTEP,
    convert(bit, 0) as ISGENERALINTERACTION,
    INTERACTION.CONSTITUENTID as PROSPECTID,
    INTERACTIONCATEGORY.NAME as CATEGORY,
    INTERACTIONSUBCATEGORY.NAME as SUBCATEGORY,
    INTERACTION.COMMENT,
    null as EXPECTEDSTARTTIME,
    null as EXPECTEDENDTIME,
    case
      when exists (select top 1 ID from dbo.INTERACTIONPARTICIPANT where INTERACTIONID = INTERACTION.ID) then convert(bit, 1)
      else convert(bit, 0)
    end HASPARTICIPANTS,
    null as SUMMARY,
    null as TIMEZONEENTRYID,
    null as TIMEZONE,
    null as LOCATION
  from dbo.INTERACTION
    inner join dbo.FUNDINGREQUEST on FUNDINGREQUEST.ID = INTERACTION.FUNDINGREQUESTID
    inner join dbo.FUNDINGPLAN SECUREDRECORD on SECUREDRECORD.ID = FUNDINGREQUEST.FUNDINGPLANID
    inner join dbo.GRANTS on GRANTS.ID = FUNDINGREQUEST.GRANTSID
    left join dbo.INTERACTIONTYPECODE on INTERACTION.INTERACTIONTYPECODEID = INTERACTIONTYPECODE.ID
    left outer join dbo.INTERACTIONSUBCATEGORY on INTERACTION.INTERACTIONSUBCATEGORYID = INTERACTIONSUBCATEGORY.ID
    left join dbo.INTERACTIONCATEGORY on INTERACTIONSUBCATEGORY.INTERACTIONCATEGORYID = INTERACTIONCATEGORY.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(INTERACTION.FUNDRAISERID) NF_FC
  where
    INTERACTION.STATUSCODE = 1 and
    (
      INTERACTION.FUNDRAISERID = @FUNDRAISERID or
      (
        @ONLYOWNEDINTERACTIONS = 0 and
        exists
        (
          select ID
          from dbo.INTERACTIONADDITIONALFUNDRAISER
          where
            INTERACTIONID = INTERACTION.ID and
            FUNDRAISERID = @FUNDRAISERID
        )
      )
    ) and
    (
      (select ISSYSADMIN from dbo.APPUSER where ID = @CURRENTAPPUSERID) = 1 or
      exists
      (
        select 1
        from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,'ce00d624-f3af-40fe-9ef9-2ac191a543bb',10)
        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))
    )

  union all

  -- Stewardship plan step

  select
    STEP.ID as INTERACTIONID,
    STEP.PLANID as PROSPECTPLANID,
    PROSPECT_NF.NAME as PROSPECT,
    STEP.TARGETDATE as EXPECTEDDATE,
    STEP.OBJECTIVE,
    'Stewardship' as PLANTYPE,
    null as PLANSTAGE,
    convert(bit, 0) as ISINTERACTION,
    OWNER_NF.NAME as OWNER,
    INTERACTIONTYPECODE.ID as CONTACTMETHODID,
    INTERACTIONTYPECODE.DESCRIPTION as CONTACTMETHOD,
    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 as HASDOCUMENTATION,
    convert(bit, 0) as HASADDITIONALFUNDRAISERS,
    convert(bit, 1) as ISSTEWARDSHIPSTEP,
    case
      when PROSPECT.ISGROUP = 1 or PROSPECT.ISORGANIZATION = 1 then convert(bit, 1)
      else convert(bit, 0)
    end as ISSTEWARDSHIPFORGROUPORG,
    (
      select dbo.UDA_BUILDLIST(SITE.NAME)
      from dbo.STEWARDSHIPPLANSITE
        inner join dbo.SITE on STEWARDSHIPPLANSITE.SITEID = SITE.ID
      where STEWARDSHIPPLANSITE.STEWARDSHIPPLANID = [PLAN].ID
    ) as SITES,
    convert(bit, 0) as ISFUNDINGREQUESTSTEP,
    convert(bit, 0) as ISGENERALINTERACTION,
    PROSPECT.ID as PROSPECTID,
    STEWARDSHIPSTEPCATEGORYCODE.DESCRIPTION as CATEGORY,
    null as SUBCATEGORY,
    null as COMMENT,
    STEP.TARGETSTARTTIME as EXPECTEDSTARTTIME,
    STEP.TARGETENDTIME as EXPECTEDENDTIME,
    case
      when exists (select top 1 ID from dbo.STEWARDSHIPPLANSTEPPARTICIPANT where STEWARDSHIPPLANSTEPID = STEP.ID) then convert(bit, 1)
      else convert(bit, 0)
    end as HASPARTICIPANTS,
    null as SUMMARY,
    STEP.TIMEZONEENTRYID,
    TIMEZONEENTRY.DISPLAYNAME as TIMEZONE,
    null as LOCATION
  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 on INTERACTIONTYPECODE.ID = STEP.CONTACTMETHODCODEID
    left outer join dbo.STEWARDSHIPSTEPCATEGORYCODE on STEP.CATEGORYCODEID = STEWARDSHIPSTEPCATEGORYCODE.ID
    left join dbo.TIMEZONEENTRY on STEP.TIMEZONEENTRYID = TIMEZONEENTRY.ID
    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
          (
            (select ISSYSADMIN from dbo.APPUSER where ID = @CURRENTAPPUSERID) = 1 or
            exists
            (
              select 1
              from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,'ce00d624-f3af-40fe-9ef9-2ac191a543bb',10)
              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
          )
        )
    )

  union all

  -- General interaction

  select
    INTERACTION.ID as INTERACTIONID,
    INTERACTION.PROSPECTPLANID,
    NF_C.NAME as PROSPECT,
    INTERACTION.EXPECTEDDATE,
    null as OBJECTIVE,
    null as PLANTYPE,
    null as PLANSTAGE,
    convert(bit, INTERACTION.ISINTERACTION) as ISINTERACTION,
    NF_F.NAME as OWNER,
    INTERACTIONTYPECODE.ID as CONTACTMETHODID,
    INTERACTIONTYPECODE.DESCRIPTION as CONTACTMETHOD,
    case
      when exists(select 1 from dbo.INTERACTIONNOTE where INTERACTIONNOTE.INTERACTIONID=INTERACTION.ID) or
           exists(select 1 from dbo.INTERACTIONATTACHMENT where INTERACTIONATTACHMENT.INTERACTIONID=INTERACTION.ID) or
           exists(select 1 from dbo.INTERACTIONMEDIALINK where INTERACTIONMEDIALINK.INTERACTIONID=INTERACTION.ID)
        then convert(bit, 1)
      else convert(bit, 0)
    end as HASDOCUMENTATION,
    case
      when exists (select ID from INTERACTIONADDITIONALFUNDRAISER where INTERACTIONID = INTERACTION.ID) then convert(bit, 1)
      else convert(bit, 0)
    end HASADDITIONALFUNDRAISERS,
    convert(bit, 0) as ISSTEWARDSHIPSTEP,
    convert(bit, 0) as ISSTEWARDSHIPFORGROUPORG,
    (
      select dbo.UDA_BUILDLIST(SITE.NAME)
      from dbo.INTERACTIONSITE
        inner join dbo.SITE on INTERACTIONSITE.SITEID = SITE.ID
      where INTERACTIONSITE.INTERACTIONID = INTERACTION.ID
    ) as SITES,
    convert(bit, 0) as ISFUNDINGREQUESTSTEP,
    convert(bit, 1) as ISGENERALINTERACTION,
    INTERACTION.CONSTITUENTID as PROSPECTID,
    INTERACTIONCATEGORY.NAME as CATEGORY,
    INTERACTIONSUBCATEGORY.NAME as SUBCATEGORY,
    INTERACTION.COMMENT,
    INTERACTION.EXPECTEDSTARTTIME,
    INTERACTION.EXPECTEDENDTIME,
    case
      when exists (select top 1 ID from dbo.INTERACTIONPARTICIPANT where INTERACTIONID = INTERACTION.ID) then convert(bit, 1)
      else convert(bit, 0)
    end as HASPARTICIPANTS,
    INTERACTION.OBJECTIVE as SUMMARY,
    INTERACTION.TIMEZONEENTRYID,
    TIMEZONEENTRY.DISPLAYNAME as TIMEZONE,
    INTERACTION.LOCATION
  from dbo.INTERACTION
    left join dbo.INTERACTIONTYPECODE on INTERACTION.INTERACTIONTYPECODEID = INTERACTIONTYPECODE.ID
    left outer join dbo.INTERACTIONSUBCATEGORY on INTERACTION.INTERACTIONSUBCATEGORYID = INTERACTIONSUBCATEGORY.ID
    left join dbo.INTERACTIONCATEGORY on INTERACTIONSUBCATEGORY.INTERACTIONCATEGORYID = INTERACTIONCATEGORY.ID
    left join dbo.TIMEZONEENTRY on INTERACTION.TIMEZONEENTRYID = TIMEZONEENTRY.ID
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENTID) NF_C
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(FUNDRAISERID) NF_F
  where
    @INCLUDEGENERALINTERACTIONS = 1 and
    INTERACTION.FUNDINGREQUESTID is null and
    INTERACTION.STATUSCODE = 1 and
    INTERACTION.FUNDRAISERID = @FUNDRAISERID and
    INTERACTION.PROSPECTPLANID is null and
    exists
    (
      select top 1 INTERACTIONSITE.SITEID
      from dbo.UFN_SITEID_MAPFROM_INTERACTIONID(INTERACTION.ID) INTERACTIONSITE
      where
      (
        (select ISSYSADMIN from dbo.APPUSER where ID = @CURRENTAPPUSERID) = 1 or
        exists
        (
          select 1
          from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,'ce00d624-f3af-40fe-9ef9-2ac191a543bb',10)
          where
            SITEID=[INTERACTIONSITE].[SITEID] or
            (
              SITEID is null and
              [INTERACTIONSITE].[SITEID] is null
            )
        )
      )
    ) and
    (
      @SITEFILTERMODE = 0 or
      (
        INTERACTION.ID in
        (
          select INTERACTIONSITE.INTERACTIONID
          from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
          inner join dbo.INTERACTIONSITE on INTERACTIONSITE.SITEID = SITEFILTER.SITEID
 )
      )
    )
)