USP_DATALIST_FUNDINGREQUESTSUMMARYDASHBOARD

Returns a summary of funding requests for use by the dashboard.

Parameters

Parameter Parameter Type Mode Description
@ORGPOSITIONSSELECTIONID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@DATEFILTER tinyint IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@INCLUDENODATE bit 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_DATALIST_FUNDINGREQUESTSUMMARYDASHBOARD
                (
                    @ORGPOSITIONSSELECTIONID uniqueidentifier = null,
                    @CURRENTAPPUSERID uniqueidentifier = null,
                    @DATEFILTER tinyint,
                    @STARTDATE datetime = null,
                    @ENDDATE datetime = null
                    @INCLUDENODATE bit = null,
                    @SECURITYFEATUREID uniqueidentifier = null,
                    @SECURITYFEATURETYPE tinyint = null
                )
                as
                    set nocount on;

                    exec dbo.USP_RESOLVEDATEFILTER @DATEFILTER, @STARTDATE output, @ENDDATE output;

                    declare @FUNDINGREQUEST table (ID uniqueidentifier, AMOUNT money);

                    declare @BASECURRENCYID uniqueidentifier = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID);

          declare @DECIMALDIGITS tinyint;
          declare @ROUNDINGTYPECODE tinyint;

          select @DECIMALDIGITS = DECIMALDIGITS, 
                 @ROUNDINGTYPECODE = ROUNDINGTYPECODE 
          from dbo.CURRENCY where ID = @BASECURRENCYID

                    if @ORGPOSITIONSSELECTIONID is null
                    begin
                        insert into @FUNDINGREQUEST
                            (ID, AMOUNT)
                        select
                            FUNDINGREQUEST.ID,
                            FRB.AMOUNTINCURRENCY
                        from dbo.FUNDINGREQUEST
            left join dbo.UFN_FUNDINGREQUEST_GETAMOUNTREQUESTEDINCURRENCY_BULK(@BASECURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),@DECIMALDIGITS, @ROUNDINGTYPECODE) FRB
            on FRB.ID = FUNDINGREQUEST.ID
                        inner join dbo.FUNDINGPLAN on FUNDINGPLAN.ID = FUNDINGREQUEST.FUNDINGPLANID
                        where FUNDINGPLAN.INACTIVE = 0
                            and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[FUNDINGPLAN].[SITEID] or (SITEID is null and [FUNDINGPLAN].[SITEID] is null)))                            
                            and (
                                (@INCLUDENODATE = 1 and FUNDINGREQUEST.DATESUBMITTED is null)
                                or (
                                    FUNDINGREQUEST.DATESUBMITTED >= @STARTDATE
                                    and FUNDINGREQUEST.DATESUBMITTED <= @ENDDATE
                                )
                            )
                    end
                    else                    
                    begin
                        declare @IDS as table(ID uniqueidentifier);
                        insert into @IDS exec USP_ORGANIZATIONHIERARCHY_IDSET_POSITIONHOLDERS @ORGPOSITIONSSELECTIONID, @CURRENTAPPUSERID;

                        declare @TODAY datetime;
                        set @TODAY = getdate();

                        insert into @FUNDINGREQUEST
                            (ID, AMOUNT)
                        select
                            FUNDINGREQUEST.ID,
                            FRB.AMOUNTINCURRENCY
                        from dbo.FUNDINGREQUEST
            left join dbo.UFN_FUNDINGREQUEST_GETAMOUNTREQUESTEDINCURRENCY_BULK(@BASECURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),@DECIMALDIGITS, @ROUNDINGTYPECODE) FRB
            on FRB.ID = FUNDINGREQUEST.ID
                            inner join dbo.ORGANIZATIONPOSITIONHOLDER 
                                on ORGANIZATIONPOSITIONHOLDER.CONSTITUENTID = FUNDINGREQUEST.PRIMARYMANAGERID 
                                    and @TODAY between ORGANIZATIONPOSITIONHOLDER.DATEFROM and coalesce(ORGANIZATIONPOSITIONHOLDER.DATETO, @TODAY)
                            inner join @IDS as SELECTION on ORGANIZATIONPOSITIONHOLDER.ID = SELECTION.ID
                            inner join dbo.FUNDINGPLAN on FUNDINGPLAN.ID = FUNDINGREQUEST.FUNDINGPLANID
                        where FUNDINGPLAN.INACTIVE = 0
                            and (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[FUNDINGPLAN].[SITEID] or (SITEID is null and [FUNDINGPLAN].[SITEID] is null)))                            
                            and (
                                (@INCLUDENODATE = 1 and FUNDINGREQUEST.DATESUBMITTED is null)
                                or (
                                    FUNDINGREQUEST.DATESUBMITTED >= @STARTDATE
                                    and FUNDINGREQUEST.DATESUBMITTED <= @ENDDATE
                                )
                            )
                    end

                    declare @AMOUNTREQUESTED money
                    declare @REQUESTEDCOUNT int
                    select @AMOUNTREQUESTED = sum(coalesce(AMOUNT,0)), @REQUESTEDCOUNT = count(ID)
                    from @FUNDINGREQUEST 

                    declare @AMOUNTAWARDED money
                    select @AMOUNTAWARDED = sum(coalesce(RB.AMOUNTINCURRENCY,0))
                    from dbo.REVENUE           
                        inner join dbo.REVENUEFUNDINGREQUEST on REVENUEFUNDINGREQUEST.ID = REVENUE.ID
                        inner join @FUNDINGREQUEST FUNDINGREQUEST on FUNDINGREQUEST.ID = REVENUEFUNDINGREQUEST.FUNDINGREQUESTID
            left join dbo.UFN_REVENUE_GETAMOUNTSINCURRENCY_BULK(@BASECURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),@DECIMALDIGITS, @ROUNDINGTYPECODE) RB on RB.ID = REVENUE.ID

                    declare @AWARDEDCOUNT int
                    select @AWARDEDCOUNT = count(ID)
                    from @FUNDINGREQUEST FUNDINGREQUEST
                    where exists(
                        select ID
                        from dbo.REVENUEFUNDINGREQUEST
                        where FUNDINGREQUESTID = FUNDINGREQUEST.ID
                    )

                    select coalesce(@AMOUNTREQUESTED, 0), @REQUESTEDCOUNT, coalesce(@AMOUNTAWARDED, 0), @AWARDEDCOUNT, @BASECURRENCYID