USP_REPORT_DESIGNATIONPROGRESS

Returns the data necessary for the Campaign Progress report.

Parameters

Parameter Parameter Type Mode Description
@DESIGNATIONLEVELID uniqueidentifier IN
@GOALID uniqueidentifier IN
@CURRENCYCODE tinyint IN

Definition

Copy


            CREATE procedure dbo.USP_REPORT_DESIGNATIONPROGRESS
            (
                @DESIGNATIONLEVELID uniqueidentifier = null,
                @GOALID uniqueidentifier = null,
                @CURRENCYCODE tinyint = 0
            )
            as begin
            declare @STARTDATE datetime;
            declare @ENDDATE datetime;

            select @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(DLG.STARTDATE),
                @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(DLG.ENDDATE)
            from dbo.DESIGNATIONLEVELGOAL DLG
            where DLG.ID = @GOALID;

            -- If the user has selected "Base" then use the existing logic to return the values

            if @CURRENCYCODE = 0
            begin        
                select
                    'http://www.blackbaud.com/DESIGNATIONID?DESIGNATIONID=' + CONVERT(nvarchar(36),D.ID) as [DESIGNATIONID],
                    DL.NAME LEVEL1NAME,
                    DL2.NAME LEVEL2NAME,
                    DL3.NAME LEVEL3NAME,
                    DL4.NAME LEVEL4NAME,
                    DL5.NAME LEVEL5NAME,
                    DL.ID DESIGNATIONLEVEL1ID,
                    D.DESIGNATIONLEVEL2ID DESIGNATIONLEVEL2ID,
                    D.DESIGNATIONLEVEL3ID DESIGNATIONLEVEL3ID,
                    D.DESIGNATIONLEVEL4ID DESIGNATIONLEVEL4ID,
                    D.DESIGNATIONLEVEL5ID DESIGNATIONLEVEL5ID,
                    DLT.DESCRIPTION DESIGNATIONLEVELTYPE,
                    coalesce(DL5.DESIGNATIONLEVELCATEGORYCODEID,DL4.DESIGNATIONLEVELCATEGORYCODEID,DL3.DESIGNATIONLEVELCATEGORYCODEID,DL2.DESIGNATIONLEVELCATEGORYCODEID) LASTCATEGORYCODEID,
                    coalesce(DL5.DESIGNATIONLEVELTYPEID,DL4.DESIGNATIONLEVELTYPEID,DL3.DESIGNATIONLEVELTYPEID,DL2.DESIGNATIONLEVELTYPEID) LASTTYPEID,
                    LASTLEVELTYPE.DESCRIPTION LASTTYPE,        
                    DR1C.DESCRIPTION REPORTCODE1,
                    DR2C.DESCRIPTION REPORTCODE2,
                    case when D.DESIGNATIONLEVEL2ID is null then coalesce(DLG.GOAL, 0)
                        else coalesce(DG.GOAL, 0
                    end DESIGNATIONGOAL,                
                    coalesce(DLG.GOAL, 0) OVERALLGOAL,
                    DLG.NAME GOALNAME,
                    DLG.STARTDATE STARTDATE,
                    DLG.ENDDATE ENDDATE,
                    ISNULL(CONVERT(nvarchar(10), DLG.STARTDATE, 101) + ' to ' + CONVERT(nvarchar(10), DLG.ENDDATE, 101), '') DATERANGE,
                    coalesce(NEWCOMMITMENT.TOTALNEWCOMMITMENT,0) - (coalesce(NEWCOMMITMENT.TOTALWRITEOFFS,0)) TOTALEXPECTED,
                    coalesce(RECEIVED.TOTALRECEIVED,0) TOTALRECEIVED,
                    coalesce(PLANNEDGIFT.TOTALPLANNEDGIFT,0) TOTALPLANNEDGIFT,
                    isnull(REVINFO.NUMGIFTS,0) - isnull(REVINFO.NUMREFUNDED,0) TOTALGIFTS,
                    isnull(REVINFO.NUMDONORS,0) TOTALDONORS,
                    case when D.DESIGNATIONLEVEL2ID is null then 1
                        when D.DESIGNATIONLEVEL3ID is null then 2
                        when D.DESIGNATIONLEVEL4ID is null then 3
                        when D.DESIGNATIONLEVEL5ID is null then 4
                        else 5 end as LEVEL,
                    coalesce(cast(D.DESIGNATIONLEVEL1ID as nvarchar(36)), '') + coalesce(cast(D.DESIGNATIONLEVEL2ID as nvarchar(36)), ''
                        + coalesce(cast(D.DESIGNATIONLEVEL3ID as nvarchar(36)), '') + coalesce(cast(D.DESIGNATIONLEVEL4ID as nvarchar(36)), '')
                        + coalesce(cast(D.DESIGNATIONLEVEL5ID as nvarchar(36)), '') as [PATH],
                    case when D.DESIGNATIONLEVEL2ID is null then ''
                        when D.DESIGNATIONLEVEL3ID is null then coalesce(cast(D.DESIGNATIONLEVEL1ID as nvarchar(36)), '')
                        when D.DESIGNATIONLEVEL4ID is null then coalesce(cast(D.DESIGNATIONLEVEL1ID as nvarchar(36)), '') + coalesce(cast(D.DESIGNATIONLEVEL2ID as nvarchar(36)), '')
                        when D.DESIGNATIONLEVEL5ID is null then coalesce(cast(D.DESIGNATIONLEVEL1ID as nvarchar(36)), '') + coalesce(cast(D.DESIGNATIONLEVEL2ID as nvarchar(36)), ''
                            + coalesce(cast(D.DESIGNATIONLEVEL3ID as nvarchar(36)), '')
                        else coalesce(cast(D.DESIGNATIONLEVEL1ID as nvarchar(36)), '') + coalesce(cast(D.DESIGNATIONLEVEL2ID as nvarchar(36)), ''
                            + coalesce(cast(D.DESIGNATIONLEVEL3ID as nvarchar(36)), '') + coalesce(cast(D.DESIGNATIONLEVEL4ID as nvarchar(36)), '')
                    end as [PARENTPATH],
                    FNC_CURRENCYGETPROPERTIES.ID as CURRENCYID,
                    FNC_CURRENCYGETPROPERTIES.ISO4217 as CURRENCYISO,
                    FNC_CURRENCYGETPROPERTIES.DECIMALDIGITS as CURRENCYDECIMALDIGITS,
                    FNC_CURRENCYGETPROPERTIES.CURRENCYSYMBOL as CURRENCYSYMBOL,
                    FNC_CURRENCYGETPROPERTIES.SYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE,
                    D.ISACTIVE
                from 
                    dbo.DESIGNATIONLEVEL DL
                    inner join dbo.DESIGNATIONLEVELTYPE DLT on DLT.ID = DL.DESIGNATIONLEVELTYPEID
                    left join dbo.DESIGNATION D on DL.ID = D.DESIGNATIONLEVEL1ID
                    left join dbo.DESIGNATIONREPORT1CODE DR1C on DR1C.ID = D.DESIGNATIONREPORT1CODEID
                    left join dbo.DESIGNATIONREPORT2CODE DR2C on DR2C.ID = D.DESIGNATIONREPORT2CODEID
                    left join dbo.DESIGNATIONLEVELGOAL as DLG on DL.ID = DLG.DESIGNATIONLEVELID
                    left join dbo.DESIGNATIONGOAL as DG on DLG.ID = DG.DESIGNATIONLEVELGOALID and D.ID = DG.DESIGNATIONID
                    left join dbo.DESIGNATIONLEVEL DL2 on D.DESIGNATIONLEVEL2ID = DL2.ID
                    left join dbo.DESIGNATIONLEVEL DL3 on D.DESIGNATIONLEVEL3ID = DL3.ID
                    left join dbo.DESIGNATIONLEVEL DL4 on D.DESIGNATIONLEVEL4ID = DL4.ID
                    left join dbo.DESIGNATIONLEVEL DL5 on D.DESIGNATIONLEVEL5ID = DL5.ID
                    left join dbo.DESIGNATIONLEVELTYPE LASTLEVELTYPE on LASTLEVELTYPE.ID = COALESCE(DL5.DESIGNATIONLEVELTYPEID,DL4.DESIGNATIONLEVELTYPEID,DL3.DESIGNATIONLEVELTYPEID,DL2.DESIGNATIONLEVELTYPEID)
                    outer apply dbo.UFN_DESIGNATION_NEWCOMMITMENTREVENUEINCURRENCY(@STARTDATE,@ENDDATE, D.BASECURRENCYID, D.ID) NEWCOMMITMENT
                    outer apply dbo.UFN_DESIGNATION_REVENUERECEIVEDINCURRENCY(@STARTDATE,@ENDDATE, D.BASECURRENCYID, D.ID) RECEIVED
                    left join dbo.UFN_DESIGNATION_REVENUECOUNTS_2(@STARTDATE,@ENDDATE) REVINFO on D.ID = REVINFO.DESIGNATIONID
                    outer apply dbo.UFN_DESIGNATION_PLANNEDGIFTREVENUEINCURRENCY(@STARTDATE,@ENDDATE, D.BASECURRENCYID, D.ID) PLANNEDGIFT
                    outer apply dbo.UFN_CURRENCY_GETPROPERTIES(D.BASECURRENCYID) FNC_CURRENCYGETPROPERTIES

                    /*#IDSETEXTENSION*/

                where (DL.ID = @DESIGNATIONLEVELID OR @DESIGNATIONLEVELID IS NULL)
                    and    (DLG.ID = @GOALID or @GOALID is null)
                order by LEVEL1NAME, GOALNAME, LEVEL2NAME, LEVEL3NAME, LEVEL4NAME, LEVEL5NAME    
            end
            else -- The user has selected "Organization".  Use the "INCURRENCY" function(s) to return the converted amounts

            begin
                -- Return all data in Organization currency

                declare @CURRENCYID uniqueidentifier;
                declare @CURRENCYISO nvarchar(3);
                declare @CURRENCYDECIMALDIGITS tinyint;
                declare @CURRENCYSYMBOL nvarchar(5);
                declare @CURRENCYSYMBOLDISPLAYSETTINGCODE tinyint;

                select
                    @CURRENCYID = ID,
                    @CURRENCYISO = ISO4217,
                    @CURRENCYDECIMALDIGITS = DECIMALDIGITS,
                    @CURRENCYSYMBOL = CURRENCYSYMBOL,
                    @CURRENCYSYMBOLDISPLAYSETTINGCODE = SYMBOLDISPLAYSETTINGCODE
                from CURRENCY where ID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

                select
                    'http://www.blackbaud.com/DESIGNATIONID?DESIGNATIONID=' + CONVERT(nvarchar(36),D.ID) as [DESIGNATIONID],
                    DL.NAME LEVEL1NAME,
                    DL2.NAME LEVEL2NAME,
                    DL3.NAME LEVEL3NAME,
                    DL4.NAME LEVEL4NAME,
                    DL5.NAME LEVEL5NAME,
                    DL.ID DESIGNATIONLEVEL1ID,
                    D.DESIGNATIONLEVEL2ID DESIGNATIONLEVEL2ID,
                    D.DESIGNATIONLEVEL3ID DESIGNATIONLEVEL3ID,
                    D.DESIGNATIONLEVEL4ID DESIGNATIONLEVEL4ID,
                    D.DESIGNATIONLEVEL5ID DESIGNATIONLEVEL5ID,
                    DLT.DESCRIPTION DESIGNATIONLEVELTYPE,
                    coalesce(DL5.DESIGNATIONLEVELCATEGORYCODEID,DL4.DESIGNATIONLEVELCATEGORYCODEID,DL3.DESIGNATIONLEVELCATEGORYCODEID,DL2.DESIGNATIONLEVELCATEGORYCODEID) LASTCATEGORYCODEID,
                    coalesce(DL5.DESIGNATIONLEVELTYPEID,DL4.DESIGNATIONLEVELTYPEID,DL3.DESIGNATIONLEVELTYPEID,DL2.DESIGNATIONLEVELTYPEID) LASTTYPEID,
                    LASTLEVELTYPE.DESCRIPTION LASTTYPE,
                    DR1C.DESCRIPTION REPORTCODE1,
                    DR2C.DESCRIPTION REPORTCODE2,
                    case when D.DESIGNATIONLEVEL2ID is null then coalesce(DLG.ORGANIZATIONGOAL, 0) else coalesce(DG.ORGANIZATIONGOAL, 0) end DESIGNATIONGOAL,
                    coalesce(DLG.ORGANIZATIONGOAL, 0) OVERALLGOAL,
                    DLG.NAME GOALNAME,
                    DLG.STARTDATE STARTDATE,
                    DLG.ENDDATE ENDDATE,
                    ISNULL(CONVERT(nvarchar(10), DLG.STARTDATE, 101) + ' to ' + CONVERT(nvarchar(10), DLG.ENDDATE, 101), '') DATERANGE,
                    coalesce(NEWCOMMITMENT.TOTALNEWCOMMITMENT,0) - (coalesce(NEWCOMMITMENT.TOTALWRITEOFFS,0)) TOTALEXPECTED,
                    coalesce(RECEIVED.TOTALRECEIVED,0) TOTALRECEIVED,
                    coalesce(PLANNEDGIFT.TOTALPLANNEDGIFT,0) TOTALPLANNEDGIFT,
                    isnull(REVINFO.NUMGIFTS,0) - isnull(REVINFO.NUMREFUNDED,0) TOTALGIFTS,
                    isnull(REVINFO.NUMDONORS,0) TOTALDONORS,
                    case when D.DESIGNATIONLEVEL2ID is null then 1
                        when D.DESIGNATIONLEVEL3ID is null then 2
                        when D.DESIGNATIONLEVEL4ID is null then 3
                        when D.DESIGNATIONLEVEL5ID is null then 4
                        else 5 end as LEVEL,
                    coalesce(cast(D.DESIGNATIONLEVEL1ID as nvarchar(36)), '') + coalesce(cast(D.DESIGNATIONLEVEL2ID as nvarchar(36)), ''
                        + coalesce(cast(D.DESIGNATIONLEVEL3ID as nvarchar(36)), '') + coalesce(cast(D.DESIGNATIONLEVEL4ID as nvarchar(36)), '')
                        + coalesce(cast(D.DESIGNATIONLEVEL5ID as nvarchar(36)), '') as [PATH],
                    case when D.DESIGNATIONLEVEL2ID is null then ''
                        when D.DESIGNATIONLEVEL3ID is null then coalesce(cast(D.DESIGNATIONLEVEL1ID as nvarchar(36)), '')
                        when D.DESIGNATIONLEVEL4ID is null then coalesce(cast(D.DESIGNATIONLEVEL1ID as nvarchar(36)), '') + coalesce(cast(D.DESIGNATIONLEVEL2ID as nvarchar(36)), '')
                        when D.DESIGNATIONLEVEL5ID is null then coalesce(cast(D.DESIGNATIONLEVEL1ID as nvarchar(36)), '') + coalesce(cast(D.DESIGNATIONLEVEL2ID as nvarchar(36)), ''
                            + coalesce(cast(D.DESIGNATIONLEVEL3ID as nvarchar(36)), '')
                        else coalesce(cast(D.DESIGNATIONLEVEL1ID as nvarchar(36)), '') + coalesce(cast(D.DESIGNATIONLEVEL2ID as nvarchar(36)), ''
                            + coalesce(cast(D.DESIGNATIONLEVEL3ID as nvarchar(36)), '') + coalesce(cast(D.DESIGNATIONLEVEL4ID as nvarchar(36)), '')
                    end as [PARENTPATH],
                    @CURRENCYID as CURRENCYID,
                    @CURRENCYISO  as CURRENCYISO,
                    @CURRENCYDECIMALDIGITS as CURRENCYDECIMALDIGITS,
                    @CURRENCYSYMBOL as CURRENCYSYMBOL,
                    @CURRENCYSYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE,
                    D.ISACTIVE
                from 
                    dbo.DESIGNATIONLEVEL DL
                    inner join dbo.DESIGNATIONLEVELTYPE DLT on DLT.ID = DL.DESIGNATIONLEVELTYPEID
                    left join dbo.DESIGNATION D on DL.ID = D.DESIGNATIONLEVEL1ID
                    left join dbo.DESIGNATIONREPORT1CODE DR1C on DR1C.ID = D.DESIGNATIONREPORT1CODEID
                    left join dbo.DESIGNATIONREPORT2CODE DR2C on DR2C.ID = D.DESIGNATIONREPORT2CODEID
                    left join dbo.DESIGNATIONLEVELGOAL as DLG on DL.ID = DLG.DESIGNATIONLEVELID
                    left join dbo.DESIGNATIONGOAL as DG on DLG.ID = DG.DESIGNATIONLEVELGOALID and D.ID = DG.DESIGNATIONID
                    left join dbo.DESIGNATIONLEVEL DL2 on D.DESIGNATIONLEVEL2ID = DL2.ID
                    left join dbo.DESIGNATIONLEVEL DL3 on D.DESIGNATIONLEVEL3ID = DL3.ID
                    left join dbo.DESIGNATIONLEVEL DL4 on D.DESIGNATIONLEVEL4ID = DL4.ID
                    left join dbo.DESIGNATIONLEVEL DL5 on D.DESIGNATIONLEVEL5ID = DL5.ID
                    left join dbo.DESIGNATIONLEVELTYPE LASTLEVELTYPE on LASTLEVELTYPE.ID = COALESCE(DL5.DESIGNATIONLEVELTYPEID,DL4.DESIGNATIONLEVELTYPEID,DL3.DESIGNATIONLEVELTYPEID,DL2.DESIGNATIONLEVELTYPEID)
                    outer apply dbo.UFN_DESIGNATION_NEWCOMMITMENTREVENUEINCURRENCY(@STARTDATE,@ENDDATE, @CURRENCYID, D.ID) NEWCOMMITMENT
                    outer apply dbo.UFN_DESIGNATION_REVENUERECEIVEDINCURRENCY(@STARTDATE,@ENDDATE, @CURRENCYID, D.ID) RECEIVED
                    left join dbo.UFN_DESIGNATION_REVENUECOUNTS_2(@STARTDATE,@ENDDATE) REVINFO on D.ID = REVINFO.DESIGNATIONID
                    outer apply dbo.UFN_DESIGNATION_PLANNEDGIFTREVENUEINCURRENCY(@STARTDATE,@ENDDATE, @CURRENCYID, D.ID) PLANNEDGIFT

                    /*#IDSETEXTENSION*/

                where (DL.ID = @DESIGNATIONLEVELID OR @DESIGNATIONLEVELID IS NULL)
                    and    (DLG.ID = @GOALID or @GOALID is null)
                order by LEVEL1NAME, GOALNAME, LEVEL2NAME, LEVEL3NAME, LEVEL4NAME, LEVEL5NAME            
            end
            end