USP_DATAFORMTEMPLATE_DATALIST_FUNDRAISERSSUMMARYFUTURE2

Fetches summary information for opportunities and asks.

Parameters

Parameter Parameter Type Mode Description
@DATEFILTER smallint IN
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@ORGPOSITIONSSELECTIONID uniqueidentifier IN
@PROSPECTPLANTYPECODEID uniqueidentifier IN
@STARTDATE datetime IN
@ENDDATE datetime 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.

Definition

Copy


        CREATE procedure dbo.USP_DATAFORMTEMPLATE_DATALIST_FUNDRAISERSSUMMARYFUTURE2
        (
          @DATEFILTER smallint
          @CURRENTAPPUSERID uniqueidentifier = null
          @ORGPOSITIONSSELECTIONID uniqueidentifier = null,
          @PROSPECTPLANTYPECODEID uniqueidentifier = null,
          @STARTDATE datetime = null,
          @ENDDATE datetime = null,
          @SECURITYFEATUREID uniqueidentifier = null,
          @SECURITYFEATURETYPE tinyint = null
        )
        as begin
        set nocount on;

        declare @QUALIFIEDASKSCOUNT int;
        declare @QUALIFIEDASKSAMOUNT money;
        declare @UNQUALIFIEDASKSCOUNT int;
        declare @UNQUALIFIEDASKSAMOUNT money;
        declare @RESPONSEPENDINGASKCOUNT int;
        declare @RESPONSEPENDINGASKAMOUNT money;
        declare @CURRENCYID uniqueidentifier;
        declare @ORGANIZATIONCURRENCYID uniqueidentifier;

        exec dbo.USP_RESOLVEDATEFILTER @DATEFILTER, @STARTDATE output, @ENDDATE output
        set @CURRENCYID = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID);

        set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

        declare @PROSPECTPLANSFORUSER table (PROSPECTPLANID uniqueidentifier)
        insert into @PROSPECTPLANSFORUSER 
          select distinct PP.ID
          from dbo.PROSPECTPLAN PP
          where (
              select count(*
              from dbo.UFN_SITEID_MAPFROM_PROSPECTPLANID(PP.ID) as PROSPECTPLANSITE 
              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

        if @ORGPOSITIONSSELECTIONID is null
          begin
            select
              @QUALIFIEDASKSCOUNT = count(*),
              @QUALIFIEDASKSAMOUNT = coalesce(sum(O.AMOUNTINCURRENCY), 0)
            from 
              dbo.UFN_OPPORTUNITY_AMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID) O
              inner join dbo.PROSPECTPLAN PP on PP.ID = O.PROSPECTPLANID
              inner join @PROSPECTPLANSFORUSER PPS on PP.ID = PPS.PROSPECTPLANID
            where
              O.STATUSCODE=1
              and (@PROSPECTPLANTYPECODEID is null or PP.PROSPECTPLANTYPECODEID = @PROSPECTPLANTYPECODEID)
              and (O.ASKDATE is null 
                    and (O.EXPECTEDASKDATE>=convert(nvarchar(8), @STARTDATE, 112
                          and O.EXPECTEDASKDATE<=convert(nvarchar(8), @ENDDATE, 112))
                or (O.ASKDATE>=convert(nvarchar(8), @STARTDATE, 112)
                  and O.ASKDATE<=convert(nvarchar(8), @ENDDATE, 112))
                or (O.ASKDATE is null and O.EXPECTEDASKDATE is null and (@DATEFILTER = 26 or @DATEFILTER = 10))
                  )

            select
              @RESPONSEPENDINGASKCOUNT = count(*),
              @RESPONSEPENDINGASKAMOUNT = coalesce(sum(O.AMOUNTINCURRENCY), 0)
            from 
              dbo.UFN_OPPORTUNITY_AMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID) O
              inner join dbo.PROSPECTPLAN PP on PP.ID = O.PROSPECTPLANID
              inner join @PROSPECTPLANSFORUSER PPS on PP.ID = PPS.PROSPECTPLANID
            where
              O.STATUSCODE=2
              and (@PROSPECTPLANTYPECODEID is null or PP.PROSPECTPLANTYPECODEID = @PROSPECTPLANTYPECODEID)
              and (O.ASKDATE is null 
                    and (O.EXPECTEDASKDATE>=convert(nvarchar(8), @STARTDATE, 112
                          and O.EXPECTEDASKDATE<=convert(nvarchar(8), @ENDDATE, 112))
                or (O.ASKDATE>=convert(nvarchar(8), @STARTDATE, 112)
                  and O.ASKDATE<=convert(nvarchar(8), @ENDDATE, 112))
                or (O.ASKDATE is null and O.EXPECTEDASKDATE is null and (@DATEFILTER = 26 or @DATEFILTER = 10))
                  );

            select
              @UNQUALIFIEDASKSCOUNT = count(*),
              @UNQUALIFIEDASKSAMOUNT = coalesce(sum(O.AMOUNTINCURRENCY), 0)
            from 
              dbo.UFN_OPPORTUNITY_AMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID) O
              inner join dbo.PROSPECTPLAN PP on PP.ID = O.PROSPECTPLANID
              inner join @PROSPECTPLANSFORUSER PPS on PP.ID = PPS.PROSPECTPLANID
            where
              O.STATUSCODE=0
              and (@PROSPECTPLANTYPECODEID is null or PP.PROSPECTPLANTYPECODEID = @PROSPECTPLANTYPECODEID)
              and ((O.EXPECTEDASKDATE>=convert(nvarchar(8), @STARTDATE, 112) and O.EXPECTEDASKDATE<=convert(nvarchar(8), @ENDDATE, 112))
                or (O.EXPECTEDASKDATE is null and @DATEFILTER in (10,26)));
          end

        else --@ORGPOSITIONSSELECTIONID is not null

          begin
            declare @IDS as table(ID uniqueidentifier);
            insert into @IDS exec USP_ORGANIZATIONHIERARCHY_IDSET_POSITIONHOLDERS @ORGPOSITIONSSELECTIONID, @CURRENTAPPUSERID;

            select
              @QUALIFIEDASKSCOUNT = count(*),
              @QUALIFIEDASKSAMOUNT =  coalesce(sum(AMOUNT), 0)
            from
            (
                select
                      distinct O.ID, 
                      O.AMOUNTINCURRENCY as AMOUNT    
                    from
                        dbo.UFN_OPPORTUNITY_AMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID) O
                        inner join dbo.PROSPECTPLAN PP on O.PROSPECTPLANID = PP.ID
                        inner join @PROSPECTPLANSFORUSER PPS on PP.ID = PPS.PROSPECTPLANID
                        inner join dbo.V_OPPORTUNITYSOLICITOR OS on OS.OPPORTUNITYID = O.ID
                        inner join dbo.ORGANIZATIONPOSITIONHOLDER OPH on OPH.CONSTITUENTID = OS.FUNDRAISERID
                    where
                      O.STATUSCODE=1
                      and OPH.ID in (select SELECTION.ID from @IDS as SELECTION)
                      and (@PROSPECTPLANTYPECODEID is null or PP.PROSPECTPLANTYPECODEID = @PROSPECTPLANTYPECODEID)
                      and (O.ASKDATE is null 
                            and (O.EXPECTEDASKDATE>=convert(nvarchar(8), @STARTDATE, 112
                                  and O.EXPECTEDASKDATE<=convert(nvarchar(8), @ENDDATE, 112))
                        or (O.ASKDATE>=convert(nvarchar(8), @STARTDATE, 112)
                          and O.ASKDATE<=convert(nvarchar(8), @ENDDATE, 112))
                        or (O.ASKDATE is null and O.EXPECTEDASKDATE is null and (@DATEFILTER = 26 or @DATEFILTER = 10))
                          )
                      and (
                            coalesce(O.RESPONSEDATE, O.ASKDATE, O.EXPECTEDASKDATE) between OPH.DATEFROM and coalesce(OPH.DATETO, @ENDDATE)
                              or coalesce(O.RESPONSEDATE, O.ASKDATE, O.EXPECTEDASKDATE) is null
                          )
             ) as QUALIFIEDRESULT

            select
              @RESPONSEPENDINGASKCOUNT = count(*),
              @RESPONSEPENDINGASKAMOUNT =  coalesce(sum(AMOUNT), 0)
            from
            (
                 select
                      distinct O.ID, 
                      O.AMOUNTINCURRENCY as AMOUNT    
                  from
                      dbo.UFN_OPPORTUNITY_AMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID) O
                      inner join dbo.PROSPECTPLAN PP on O.PROSPECTPLANID = PP.ID
                      inner join @PROSPECTPLANSFORUSER PPS on PP.ID = PPS.PROSPECTPLANID
                      inner join dbo.V_OPPORTUNITYSOLICITOR OS on OS.OPPORTUNITYID = O.ID
                      inner join dbo.ORGANIZATIONPOSITIONHOLDER OPH on OPH.CONSTITUENTID = OS.FUNDRAISERID
                    where
                      O.STATUSCODE=2
    and OPH.ID in (select SELECTION.ID from @IDS as SELECTION)
                      and (@PROSPECTPLANTYPECODEID is null or PP.PROSPECTPLANTYPECODEID = @PROSPECTPLANTYPECODEID)
                      and (O.ASKDATE is null 
                            and (O.EXPECTEDASKDATE>=convert(nvarchar(8), @STARTDATE, 112
                                  and O.EXPECTEDASKDATE<=convert(nvarchar(8), @ENDDATE, 112))
                        or (O.ASKDATE>=convert(nvarchar(8), @STARTDATE, 112)
                          and O.ASKDATE<=convert(nvarchar(8), @ENDDATE, 112))
                        or (O.ASKDATE is null and O.EXPECTEDASKDATE is null and (@DATEFILTER = 26 or @DATEFILTER = 10))
                          )
                      and (
                            coalesce(O.RESPONSEDATE, O.ASKDATE, O.EXPECTEDASKDATE) between OPH.DATEFROM and coalesce(OPH.DATETO, @ENDDATE)
                              or coalesce(O.RESPONSEDATE, O.ASKDATE, O.EXPECTEDASKDATE) is null
                          )
             ) as RESPONSEPENDINGRESULT

            select
              @UNQUALIFIEDASKSCOUNT = count(*),
              @UNQUALIFIEDASKSAMOUNT = coalesce(sum(AMOUNT), 0)
            from 
            (
                select
                      distinct O.ID, 
                      O.AMOUNTINCURRENCY as AMOUNT
                  from    
                      dbo.UFN_OPPORTUNITY_AMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID) O
                      inner join dbo.PROSPECTPLAN PP on PP.ID = O.PROSPECTPLANID
                      inner join @PROSPECTPLANSFORUSER PPS on PP.ID = PPS.PROSPECTPLANID
                      inner join dbo.V_OPPORTUNITYSOLICITOR OS on OS.OPPORTUNITYID = O.ID
                      inner join dbo.ORGANIZATIONPOSITIONHOLDER OPH on OPH.CONSTITUENTID = OS.FUNDRAISERID
                    where
                      O.STATUSCODE=0
                      and OPH.ID in (select SELECTION.ID from @IDS as SELECTION)
                      and (@PROSPECTPLANTYPECODEID is null or PP.PROSPECTPLANTYPECODEID = @PROSPECTPLANTYPECODEID)
                      and ((O.EXPECTEDASKDATE>=convert(nvarchar(8), @STARTDATE, 112) and O.EXPECTEDASKDATE<=convert(nvarchar(8), @ENDDATE, 112))
                        or (O.EXPECTEDASKDATE is null and @DATEFILTER in (10,26)))
                      and (
                            coalesce(O.RESPONSEDATE, O.ASKDATE, O.EXPECTEDASKDATE) between OPH.DATEFROM and coalesce(OPH.DATETO, @ENDDATE)
                              or coalesce(O.RESPONSEDATE, O.ASKDATE, O.EXPECTEDASKDATE) is null
                          )
            )  as UNQUALIFIEDRESULT

          end

        select 
          @QUALIFIEDASKSCOUNT 'Qualified asks count',
          @QUALIFIEDASKSAMOUNT 'Qualified asks amount',
          @RESPONSEPENDINGASKCOUNT 'Response pending asks count',
          @RESPONSEPENDINGASKAMOUNT 'Response pending asks amount',
          @CURRENCYID CURRENCYID,
          @UNQUALIFIEDASKSCOUNT 'Unqualified asks count',
          @UNQUALIFIEDASKSAMOUNT 'Unqualified asks amount';

        return 0;
      end