USP_DATAFORMTEMPLATE_DATALIST_FUNDRAISERSSUMMARYOPPORTUNITIES2

Fetches summary information for opportunities and asks.

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@ORGPOSITIONSSELECTIONID uniqueidentifier IN
@PROSPECTPLANTYPECODEID uniqueidentifier 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_FUNDRAISERSSUMMARYOPPORTUNITIES2
        (
          @CURRENTAPPUSERID uniqueidentifier = null
          @ORGPOSITIONSSELECTIONID uniqueidentifier = null,
          @PROSPECTPLANTYPECODEID uniqueidentifier = null,
          @SECURITYFEATUREID uniqueidentifier = null,
          @SECURITYFEATURETYPE tinyint = null
        )
        as begin
          set nocount on;

          declare @OVERDUERESPONSESCOUNT int;
          declare @OVERDUERESPONSESAMOUNT money;
          declare @OVERDUEASKSCOUNT int;
          declare @OVERDUEASKSAMOUNT money;
          declare @FUZZYTODAY dbo.UDT_FUZZYDATE;
          declare @CURRENCYID uniqueidentifier;
          declare @ORGANIZATIONCURRENCYID uniqueidentifier;

          set @FUZZYTODAY = convert(nvarchar(8), getdate(), 112);
          set @CURRENCYID = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID);
          set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

          if @ORGPOSITIONSSELECTIONID is null
            begin
              select
                @OVERDUEASKSCOUNT = count(*),
                @OVERDUEASKSAMOUNT = sum(O.AMOUNTINCURRENCY)
              from 
                dbo.UFN_OPPORTUNITY_AMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID) O
                inner join dbo.PROSPECTPLAN PP on PP.ID = O.PROSPECTPLANID
              where
                O.STATUSCODE=1
                and (@PROSPECTPLANTYPECODEID is null or PP.PROSPECTPLANTYPECODEID = @PROSPECTPLANTYPECODEID)
                and O.ASKDATE<@FUZZYTODAY
                and (
                  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

              select
                @OVERDUERESPONSESCOUNT = count(*),
                @OVERDUERESPONSESAMOUNT = sum(O.AMOUNTINCURRENCY)
              from 
                dbo.UFN_OPPORTUNITY_AMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID) O
                inner join dbo.PROSPECTPLAN PP on PP.ID = O.PROSPECTPLANID
              where
                O.STATUSCODE=2
                and (@PROSPECTPLANTYPECODEID is null or PP.PROSPECTPLANTYPECODEID = @PROSPECTPLANTYPECODEID)
                and O.RESPONSEDATE<@FUZZYTODAY
                and (
                  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
            end
          else
            begin
              declare @IDS as table(ID uniqueidentifier);
              insert into @IDS exec USP_ORGANIZATIONHIERARCHY_IDSET_POSITIONHOLDERS @ORGPOSITIONSSELECTIONID, @CURRENTAPPUSERID;

              select
                @OVERDUERESPONSESCOUNT = count(*),
                @OVERDUERESPONSESAMOUNT = sum(AMOUNT)
              from
              (
               select
                    distinct O.ID as ID, 
                    AMOUNTINCURRENCY as AMOUNT 
                from 
                    dbo.UFN_OPPORTUNITY_AMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID) O
                    inner join dbo.PROSPECTPLAN PP on O.PROSPECTPLANID = PP.ID
                    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.RESPONSEDATE<@FUZZYTODAY
                    and (
                        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
                    and (
                            coalesce(O.RESPONSEDATE, O.ASKDATE, O.EXPECTEDASKDATE) between OPH.DATEFROM and coalesce(OPH.DATETO, convert(nvarchar(8), getdate(), 112))
                            or coalesce(O.RESPONSEDATE, O.ASKDATE, O.EXPECTEDASKDATE) is null
                        )
                ) as OVERDUERESPONSERESULT

              select
                @OVERDUEASKSCOUNT = count(*),
                @OVERDUEASKSAMOUNT = sum(AMOUNT)
              from
              (
                select
                    distinct O.ID as ID, 
                    AMOUNTINCURRENCY as AMOUNT 
                from 
                    dbo.UFN_OPPORTUNITY_AMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID) O
                    inner join dbo.PROSPECTPLAN PP on O.PROSPECTPLANID = PP.ID
                    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<@FUZZYTODAY
                    and (
                      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
                    and (
                          coalesce(O.RESPONSEDATE, O.ASKDATE, O.EXPECTEDASKDATE) between OPH.DATEFROM and coalesce(OPH.DATETO, convert(nvarchar(8), getdate(), 112))
                            or coalesce(O.RESPONSEDATE, O.ASKDATE, O.EXPECTEDASKDATE) is null
                        )
             ) as OVERDUERESULT   
            end

          select 
            @OVERDUEASKSCOUNT 'Overdue asks count',
            @OVERDUEASKSAMOUNT 'Overdue asks amount',
            @OVERDUERESPONSESCOUNT 'Overdue response count',
            @OVERDUERESPONSESAMOUNT 'Overdue response amount',
            @CURRENCYID CURRENCYID

          return 0;
        end