USP_REPORT_DESIGNATIONLEVELREVENUE_BYAPPEAL

Returns the data necessary for the Designation Level Revenue report broken down by appeal.

Parameters

Parameter Parameter Type Mode Description
@START datetime IN
@END datetime IN
@CATEGORYCODEID uniqueidentifier IN
@DESIGNATIONLEVELTYPEID uniqueidentifier IN
@GROUPBY tinyint IN
@SELECTIONID uniqueidentifier IN
@CAMPAIGNHIERARCHYPATH hierarchyid IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


            -- WITH PLEDGES, MATCHING GIFTS, AND PLANNED GIFTS (AND THEIR PAYMENTS)

            -- IF BOTH THE PLEDGED REVENUE AND THE REVENUE PAYMENT DO NOT MATCH IN THE

            -- APPEAL FIELD, THESE NUMBERS WILL SEEM INCORRECT

            -- THIS MAY BE FIXED WHEN DESIGN DESIDES WHAT ACTION TO TAKE ON THIS

            CREATE procedure dbo.USP_REPORT_DESIGNATIONLEVELREVENUE_BYAPPEAL
                (
                    @START datetime = null,
                    @END datetime = null,
                    @CATEGORYCODEID uniqueidentifier = null,
                    @DESIGNATIONLEVELTYPEID uniqueidentifier = null,
                    @GROUPBY tinyint = 0,
                    @SELECTIONID uniqueidentifier = null,
                    @CAMPAIGNHIERARCHYPATH hierarchyid = null,
                    @CURRENTAPPUSERID uniqueidentifier = null
                )
            as    
                begin
                    set @START = dbo.UFN_DATE_GETEARLIESTTIME(@START);
                    set @END = dbo.UFN_DATE_GETLATESTTIME(@END);

                    if @END < @START
                        raiserror('The start date must be on or before the end date.',13,1);                        

                    with 
                        APPEALRECEIVED_CTE as (
                            select AR.APPEALID,
                                AR.DESIGNATIONLEVELID,
                                SUM(AR.TOTALRECEIVED) as RECEIVED
                            from dbo.UFN_DESIGNATIONLEVEL_REVENUERECEIVED_BYAPPEAL(@START,@END, @GROUPBY,@CAMPAIGNHIERARCHYPATH) AR
                            group by AR.DESIGNATIONLEVELID, AR.APPEALID
                        ),
                        APPEALPLEDGE_CTE as (
                            select AP.APPEALID,
                                AP.DESIGNATIONLEVELID,
                                sum(AP.TOTALPLEDGED) - (sum(AP.TOTALPAID) + sum(AP.TOTALWRITEOFFS)) as EXPECTED
                            from dbo.UFN_DESIGNATIONLEVEL_REVENUEPLEDGED_BYAPPEAL(@START,@END, @GROUPBY,@CAMPAIGNHIERARCHYPATH) AP
                            group by AP.DESIGNATIONLEVELID, AP.APPEALID
                        ),
                        APPEALCOUNTS_CTE as (
                            select AC.APPEALID,
                                AC.DESIGNATIONLEVELID,
                                sum(AC.NUMDONORS) AS NUMDONORS,
                                SUM(AC.NUMGIFTS) AS NUMGIFTS,
                                MAX(AC.MAXGIFT) AS MAXGIFT,
                                SUM(AC.TOTALGIFT) AS TOTALGIFT
                            from dbo.UFN_DESIGNATIONLEVEL_REVENUECOUNTS_BYAPPEAL(@START,@END, @GROUPBY,@CAMPAIGNHIERARCHYPATH) AC
                            group by AC.DESIGNATIONLEVELID, AC.APPEALID
                        ),
                        APPEALS_CTE as (
                            select distinct 
                                case @GROUPBY 
                                    when 0 then APPEAL.ID
                                    when 1 then APPEALBUSINESSUNIT.BUSINESSUNITCODEID
                                    when 2 then APPEAL.APPEALREPORT1CODEID
                                    end as APPEALID,
                                case @GROUPBY when 0 then APPEAL.NAME
                                    when 1 then BUSINESSUNITCODE.DESCRIPTION
                                    when 2 then APPEALREPORTCODE.DESCRIPTION
                                    end as APPEALNAME
                            from dbo.APPEAL
                left join dbo.APPEALBUSINESSUNIT on APPEALBUSINESSUNIT.APPEALID = APPEAL.ID
                                left join dbo.BUSINESSUNITCODE on APPEALBUSINESSUNIT.BUSINESSUNITCODEID = BUSINESSUNITCODE.ID
                                left join dbo.APPEALREPORT1CODE APPEALREPORTCODE on APPEAL.APPEALREPORT1CODEID = APPEALREPORTCODE.ID
                        )
                    select distinct
                        'http://www.blackbaud.com?DESIGNATIONLEVELID=' + CONVERT(nvarchar(36),DL.ID) as [DESIGNATIONLEVELID],
                        DL.NAME,
                        1 as SEQUENCE,    
                        YEAR(@END) as PERIODYEAR, 
                        coalesce(DLOVERALLINFO.NUMGIFTS, 0) as TOTALNUMGIFTS,
                        coalesce(DLOVERALLINFO.NUMDONORS, 0) as TOTALDONORS,
                        (coalesce(AREC.RECEIVED, 0) + coalesce(AP.EXPECTED, 0)) as TOTALRAISED,
                        coalesce(AC.NUMGIFTS, 0) as PERIODNUMGIFTS,
                        coalesce(AC.MAXGIFT, 0) as MAXGIFT,
                        case 
                            when AC.NUMGIFTS > 0 then AC.TOTALGIFT / AC.NUMGIFTS
                            else 0
                            end PERIODAVGGIFT,
                        coalesce(DLOVERALLINFO.TOTALGIFT, 0) as OVERALLTOTALRAISED,
                        coalesce(OVERALLRECEIVED.TOTALRECEIVED, 0) AS OVERALLTOTALRECEIVED,
                        coalesce(OVERALLPLEDGE.TOTALPLEDGED - (OVERALLPLEDGE.TOTALPAID + OVERALLPLEDGE.TOTALWRITEOFFS), 0) as OVERALLTOTALEXPECTED,
                        case 
                            when DLOVERALLINFO.NUMGIFTS > 0 then DLOVERALLINFO.TOTALGIFT / DLOVERALLINFO.NUMGIFTS
                            else 0
                            end TOTALAVGGIFT,
                        coalesce(AREC.RECEIVED, 0) as TOTALRECEIVED,
                        coalesce(AP.EXPECTED, 0) as TOTALEXPECTED,
                        coalesce(AC.NUMDONORS, 0) as PERIODNUMDONORS,
                        A.APPEALNAME
                    from APPEALS_CTE as APPEALS
                        cross join dbo.DESIGNATIONLEVEL DL
                        left join dbo.UFN_DESIGNATIONLEVEL_REVENUECOUNTS(@START, @END,@CAMPAIGNHIERARCHYPATH) DLOVERALLINFO 
                            on DL.ID = DLOVERALLINFO.DESIGNATIONLEVELID
                        left join dbo.UFN_DESIGNATIONLEVEL_REVENUERECEIVED(@START, @END,@CAMPAIGNHIERARCHYPATH) OVERALLRECEIVED 
                            on DL.ID = OVERALLRECEIVED.DESIGNATIONLEVELID
                        left join dbo.UFN_DESIGNATIONLEVEL_REVENUEPLEDGED(@START, @END,@CAMPAIGNHIERARCHYPATH) OVERALLPLEDGE 
                            on DL.ID = OVERALLPLEDGE.DESIGNATIONLEVELID
                        left join APPEALRECEIVED_CTE AREC on DL.ID = AREC.DESIGNATIONLEVELID and APPEALS.APPEALID = AREC.APPEALID
                        left join APPEALPLEDGE_CTE AP on DL.ID = AP.DESIGNATIONLEVELID and APPEALS.APPEALID = AP.APPEALID
                        left join APPEALCOUNTS_CTE AC on DL.ID = AC.DESIGNATIONLEVELID and APPEALS.APPEALID = AC.APPEALID
                        left join APPEALS_CTE A on A.APPEALID = coalesce(AREC.APPEALID, AP.APPEALID)
                where
                    --(AP.EXPECTED > 0 OR AREC.RECEIVED > 0) and

                    (DL.DESIGNATIONLEVELCATEGORYCODEID = @CATEGORYCODEID or @CATEGORYCODEID is null
                    and (DL.DESIGNATIONLEVELTYPEID = @DESIGNATIONLEVELTYPEID or @DESIGNATIONLEVELTYPEID IS NULL
                    and (@SELECTIONID is null or DL.ID in (select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID)))
                    and dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID,DL.SITEID) = 1
                order by DL.NAME, A.APPEALNAME
            end