USP_KPI_OPPORTUNITYAMOUNTBYSELECTION_INTERNAL_WITHIDSET

Alternate version of USP_KPI_OPPORTUNITYAMOUNTBYSELECTION_INTERNAL which allows for the inclusion of an ID set.

Parameters

Parameter Parameter Type Mode Description
@IDSETID uniqueidentifier IN
@ASOFDATE datetime IN
@FUNDRAISERID uniqueidentifier IN
@VALUE money INOUT

Definition

Copy
/*
Generated by Blackbaud Application Framework
Date: 12/17/2008 2:08:49 AM
Assembly Version: Blackbaud.AppFx.Platform.SqlClr, Version=1.7.1271.0, Culture=neutral, PublicKeyToken=null
*/
create procedure dbo.USP_KPI_OPPORTUNITYAMOUNTBYSELECTION_INTERNAL_WITHIDSET (@IDSETID uniqueidentifier = null, @ASOFDATE datetime, @FUNDRAISERID uniqueidentifier, @VALUE money output)
with execute as owner
as
  set nocount on;

  declare @r int;

  if @IDSETID is null
    begin
      exec @r = dbo.[USP_KPI_OPPORTUNITYAMOUNTBYSELECTION_INTERNAL] @ASOFDATE, @FUNDRAISERID, @VALUE output;
    end
  else
    begin
      if not exists(select [ID] from dbo.[IDSETREGISTER] where [ID] = @IDSETID)
        raiserror('ID set does not exist in the database.', 15, 1);

      declare @DBOBJECTNAME nvarchar(max);
      declare @DBOBJECTTYPE smallint;
      declare @SQLTOEXEC nvarchar(max);
      declare @USEASOFDATE bit;

      select
        @USEASOFDATE = (case [DBOBJECTNAMEWITHASOFDATE] when '' then 0 else 1 end),
        @DBOBJECTNAME = (case [DBOBJECTNAMEWITHASOFDATE] when '' then [DBOBJECTNAME] else [DBOBJECTNAMEWITHASOFDATE] end),
        @DBOBJECTTYPE = [OBJECTTYPE]
      from dbo.[IDSETREGISTER]
      where [ID] = @IDSETID;

      if left(@DBOBJECTNAME, 1) <> '['
        set @DBOBJECTNAME = '[' + @DBOBJECTNAME + ']';

      if @DBOBJECTTYPE = 1
        begin
          set @DBOBJECTNAME = @DBOBJECTNAME + '(';

          if @USEASOFDATE = 1
            set @DBOBJECTNAME = @DBOBJECTNAME + '@ASOFDATE';

          set @DBOBJECTNAME = @DBOBJECTNAME + ')';
        end
      else
        begin
          if @DBOBJECTTYPE = 2
            set @DBOBJECTNAME = @DBOBJECTNAME + '(''' + convert(nvarchar(36), @IDSETID) + ''')';
        end

      set @SQLTOEXEC = N'set nocount on;

                select 
                    @VALUE = coalesce(sum(O.AMOUNT), 0)
                from
                    dbo.OPPORTUNITY O
                    inner join dbo.PROSPECTPLAN PP on PP.ID = O.PROSPECTPLANID
                     inner join dbo.' + @DBOBJECTNAME + ' as [IDSET_79dad3b4_27fd_4eb6_af76_ce4250898301] on [O].[ID] = [IDSET_79dad3b4_27fd_4eb6_af76_ce4250898301].[ID] 
                where
                    (@FUNDRAISERID is null or PP.PRIMARYMANAGERFUNDRAISERID = @FUNDRAISERID);';

      exec @r = sp_executesql @SQLTOEXEC, N'@ASOFDATE datetime, @FUNDRAISERID uniqueidentifier, @VALUE money output', @ASOFDATE = @ASOFDATE, @FUNDRAISERID = @FUNDRAISERID, @VALUE = @VALUE output;
    end

  return @r;