USP_REPORT_TEAMFUNDRAISINGTEAMPERFORMANCE

Returns rows for Team Fundraising Team Performance report.

Parameters

Parameter Parameter Type Mode Description
@TEAMQUERYID uniqueidentifier IN
@TEAMID uniqueidentifier IN
@GROUPSONLY bit IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@REPORTUSERID nvarchar(128) IN
@ALTREPORTUSERID nvarchar(128) IN
@CURRENCYCODE tinyint IN

Definition

Copy


            CREATE procedure dbo.USP_REPORT_TEAMFUNDRAISINGTEAMPERFORMANCE
            (
                @TEAMQUERYID uniqueidentifier = null,
                @TEAMID uniqueidentifier = null,
                @GROUPSONLY bit = 0,
                @STARTDATE datetime = null,
                @ENDDATE datetime = null,
                @REPORTUSERID nvarchar(128),
                @ALTREPORTUSERID nvarchar(128) = null,
        @CURRENCYCODE tinyint = null
            )
            as

                set nocount on;                

                begin try

                    create table #FUNDRAISERINFO
                    (
                        GROUPID uniqueidentifier,
                        TEAMID uniqueidentifier,
                        PARENTTEAMID uniqueidentifier,
                        TEAMGOAL money,
                        EVENTID uniqueidentifier,
                        FUNDRAISERID uniqueidentifier,
                        REVENUEID uniqueidentifier,
                        AMOUNTSOLICITED money,
                        ISINGROUP bit,
                        SHOWINREPORT bit
                    )
                    declare @CURRENTAPPUSERID uniqueidentifier;
                    set @CURRENTAPPUSERID = dbo.UFN_APPUSER_GETREPORTAPPUSERID(@REPORTUSERID, @ALTREPORTUSERID);

          declare @SELECTEDCURRENCYID uniqueidentifier;

              if @CURRENCYCODE = 3
              begin
                    if dbo.UFN_CURRENCYSET_GETAPPUSERCURRENCYSET(@CURRENTAPPUSERID) is not null
                    begin                    
                        select @SELECTEDCURRENCYID = CURRENCYSET.BASECURRENCYID
                            from dbo.CURRENCYSET
                            where
                                CURRENCYSET.ID = dbo.UFN_CURRENCYSET_GETAPPUSERCURRENCYSET(@CURRENTAPPUSERID);
                    end
                    else
                    begin
                        select @SELECTEDCURRENCYID = CURRENCYSET.BASECURRENCYID
                            from dbo.CURRENCYSET
                            where
                                CURRENCYSET.ID = dbo.UFN_CURRENCYSET_GETAPPUSERDEFAULTCURRENCYSET();
                    end
                end
                else
                    set @SELECTEDCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

                    -- Retrieve the table for the selection, if there is one.

                    declare @DBOBJECTNAME nvarchar(128);
                    declare @DBOBJECTTYPE smallint;

                    if @TEAMQUERYID is not null begin
                        if not exists(select ID from dbo.IDSETREGISTER where ID = @TEAMQUERYID) raiserror('ID set does not exist in the database.', 15, 1);
                        select @DBOBJECTNAME = DBOBJECTNAME, @DBOBJECTTYPE = OBJECTTYPE from dbo.IDSETREGISTER where ID = @TEAMQUERYID;
                        if @DBOBJECTTYPE = 1 set @DBOBJECTNAME = @DBOBJECTNAME + '()';
                        else if @DBOBJECTTYPE = 2 set @DBOBJECTNAME = @DBOBJECTNAME + '(''' + convert(nvarchar(36), @TEAMQUERYID) + ''')';
                    end

                    declare @SQLTOEXEC nvarchar(max);
                    set @SQLTOEXEC = 
                        'declare @INCLUDEDTEAM table(
                            ID uniqueidentifier,
                            PARENTTEAMID uniqueidentifier,
                            TEAMFUNDRAISINGTEAMGROUPID uniqueidentifier,
                            GOAL money,
                            APPEALID uniqueidentifier,
                            SHOWINREPORT bit
                        )
                        if @TEAMID is not null
                        begin
                            insert into @INCLUDEDTEAM
                            (
                                ID,
                                PARENTTEAMID,
                                TEAMFUNDRAISINGTEAMGROUPID,
                                GOAL,
                                APPEALID,
                                SHOWINREPORT
                            )          
                            select 
                                TEAM.ID, 
                                TEAM.PARENTTEAMID, 
                                TEAM.TEAMFUNDRAISINGTEAMGROUPID, 
                                case
                  when @SELECTEDCURRENCYID = TEAM.BASECURRENCYID then
                    TEAM.GOAL
                  when (@CURRENCYCODE = 3)  and (@SELECTEDCURRENCYID <> dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()) then
                    dbo.UFN_CURRENCY_CONVERT(TEAM.ORGANIZATIONGOAL, dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @SELECTEDCURRENCYID, (select [INNERAPPEAL].DATEADDED from dbo.APPEAL [INNERAPPEAL] where [INNERAPPEAL].ID = TEAM.APPEALID), 1, null))
                  else
                    TEAM.ORGANIZATIONGOAL
                end GOAL,
                                TEAM.APPEALID,
                                1
                            from dbo.TEAMFUNDRAISINGTEAM TEAM
                                inner join dbo.TEAMFUNDRAISINGTEAM TEAMFILTER on TEAM.TEAMFUNDRAISINGTEAMGROUPID=TEAMFILTER.TEAMFUNDRAISINGTEAMGROUPID 
                                    or (TEAMFILTER.TEAMFUNDRAISINGTEAMGROUPID is null and TEAM.ID=TEAMFILTER.ID)
                            where  TEAMFILTER.ID=@TEAMID    
                        end
                        else
                        begin
                            insert into @INCLUDEDTEAM
                            (
                                ID,
                                PARENTTEAMID,
                                TEAMFUNDRAISINGTEAMGROUPID,
                                GOAL,
                                APPEALID,
                                SHOWINREPORT
                            )          
                            select 
                                TEAM.ID, 
                                TEAM.PARENTTEAMID, 
                                TEAM.TEAMFUNDRAISINGTEAMGROUPID,  
                                case
                  when @SELECTEDCURRENCYID = TEAM.BASECURRENCYID then
                    TEAM.GOAL
                  when (@CURRENCYCODE = 3)  and (@SELECTEDCURRENCYID <> dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()) then
                    dbo.UFN_CURRENCY_CONVERT(TEAM.ORGANIZATIONGOAL, dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @SELECTEDCURRENCYID, (select [INNERAPPEAL].DATEADDED from dbo.APPEAL [INNERAPPEAL] where [INNERAPPEAL].ID = TEAM.APPEALID), 1, null))
                  else
                    TEAM.ORGANIZATIONGOAL
                end GOAL,
                                TEAM.APPEALID,
                                1
                            from dbo.TEAMFUNDRAISINGTEAM TEAM
                        ' + nchar(13);

                            if @TEAMQUERYID is not null
                            begin
                                set @SQLTOEXEC = @SQLTOEXEC + 
                                    'inner join dbo.TEAMFUNDRAISINGTEAM TEAMFILTER on TEAM.TEAMFUNDRAISINGTEAMGROUPID=TEAMFILTER.TEAMFUNDRAISINGTEAMGROUPID 
                                        or (TEAMFILTER.TEAMFUNDRAISINGTEAMGROUPID is null and TEAM.ID=TEAMFILTER.ID)
                                    inner join dbo.' + @DBOBJECTNAME + ' as teamquerytable on teamquerytable.[ID] = TEAMFILTER.[ID]' + nchar(13);
                            end

                            set @SQLTOEXEC = @SQLTOEXEC + '
                                end;
                                '
                --(NOTE: This comment is NOT in the @SQLTOEXEC string because that string became longer than nvarchar(max) :(

                                -- Retrieve all the data that will be need to do

                                -- the report calculations


                                -- The CTE collect subteams of included teams for the purposes of 

                                -- rollup calculations, but if they are not already in the list, do not

                                -- show them on the report

                +'
                                with CTE_TEAMHIERARCHY(ID,PARENTTEAMID,TEAMFUNDRAISINGTEAMGROUPID,GOAL,APPEALID,SHOWINREPORT)        
                                as
                                (
                                    select
                                        *
                                    from @INCLUDEDTEAM
                                    union all
                                    select 
                                        TEAMFUNDRAISINGTEAM.ID, 
                                        TEAMFUNDRAISINGTEAM.PARENTTEAMID, 
                                        TEAMFUNDRAISINGTEAM.TEAMFUNDRAISINGTEAMGROUPID,
                    case
                      when @SELECTEDCURRENCYID = TEAMFUNDRAISINGTEAM.BASECURRENCYID then
                        TEAMFUNDRAISINGTEAM.GOAL
                      when (@CURRENCYCODE = 3)  and (@SELECTEDCURRENCYID <> dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()) then
                        dbo.UFN_CURRENCY_CONVERT(TEAMFUNDRAISINGTEAM.ORGANIZATIONGOAL, dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @SELECTEDCURRENCYID, (select [INNERAPPEAL].DATEADDED from dbo.APPEAL [INNERAPPEAL] where [INNERAPPEAL].ID = TEAMFUNDRAISINGTEAM.APPEALID), 1, null))
                      else
                        TEAMFUNDRAISINGTEAM.ORGANIZATIONGOAL
                    end TEAMGOAL,
                                        TEAMFUNDRAISINGTEAM.APPEALID,
                                        convert(bit,0)
                                    from dbo.TEAMFUNDRAISINGTEAM
                                        inner join CTE_TEAMHIERARCHY on TEAMFUNDRAISINGTEAM.PARENTTEAMID = CTE_TEAMHIERARCHY.ID
                                )
                                insert into #FUNDRAISERINFO
                                (
                                    GROUPID,
                                    TEAMID,
                                    PARENTTEAMID,
                                    TEAMGOAL,
                                    EVENTID,
                                    FUNDRAISERID,
                                    REVENUEID,
                                    AMOUNTSOLICITED,
                                    ISINGROUP,
                                    SHOWINREPORT
                                )'

                set @SQLTOEXEC = @SQLTOEXEC + '
                                select 
                                    coalesce(INCLUDEDTEAM.TEAMFUNDRAISINGTEAMGROUPID,INCLUDEDTEAM.ID),
                                    INCLUDEDTEAM.ID,
                                    INCLUDEDTEAM.PARENTTEAMID,
                                    INCLUDEDTEAM.GOAL,
                                    EVENT.ID,
                                    TEAMFUNDRAISER.ID,
                                    REVENUE.ID,
                                    case when REVENUE.ID is null then 0 else SUM(coalesce(dbo.UFN_REVENUESOLICITOR_GETAMOUNTINCURRENCY(REVENUESOLICITOR.ID, @SELECTEDCURRENCYID),0)) end,
                                    case when INCLUDEDTEAM.TEAMFUNDRAISINGTEAMGROUPID is null then 0 else 1 end,
                                    INCLUDEDTEAM.SHOWINREPORT
                                from (select distinct * from CTE_TEAMHIERARCHY) INCLUDEDTEAM
                                    inner join dbo.APPEAL on INCLUDEDTEAM.APPEALID = APPEAL.ID
                                    inner join dbo.EVENT on EVENT.APPEALID=APPEAL.ID
                                    left join dbo.TEAMFUNDRAISINGTEAMMEMBER on TEAMFUNDRAISINGTEAMMEMBER.TEAMFUNDRAISINGTEAMID=INCLUDEDTEAM.ID
                                    left join dbo.TEAMFUNDRAISER 
                                        on TEAMFUNDRAISER.ID = TEAMFUNDRAISINGTEAMMEMBER.TEAMFUNDRAISERID and TEAMFUNDRAISER.APPEALID = APPEAL.ID
                                    left join dbo.REVENUESOLICITOR on REVENUESOLICITOR.CONSTITUENTID = TEAMFUNDRAISER.CONSTITUENTID
                                    left join dbo.REVENUESPLIT on REVENUESPLIT.ID = REVENUESOLICITOR.REVENUESPLITID
                                    left join dbo.REVENUE with (nolock) on REVENUE.APPEALID = APPEAL.ID and REVENUESPLIT.REVENUEID = REVENUE.ID
                                where 
                                    (APPEAL.STARTDATE >= @STARTDATE or @STARTDATE is null)   --On or after start date

                                    and (APPEAL.STARTDATE <= @ENDDATE or @ENDDATE is null)   --On or before end date

                                    and 
                                    (
                                        (
                                            (REVENUE.TRANSACTIONTYPECODE = 1 
                                                or (REVENUE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE in (0,3))
                                                --adding event registration donation 

                                                or (REVENUE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE = 1 and REVENUESPLIT.TYPECODE = 0)                                                
                                            )   --Revenue is a pledge, gift, and recurring gift payment

                                        )    --Fundraiser has raised money for the event/appeal in question

                                        or REVENUESOLICITOR.ID is null    --Fundraiser has not raised anything yet

                                        or ((not REVENUESOLICITOR.ID is null) and REVENUE.ID is null)    --Fundraiser has raised money, but it is not for the appeal/event in question

                                    )
                                    and (@CURRENTAPPUSERID is null or dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, EVENT.ID) = 1)   --Check site security on event

                                group by INCLUDEDTEAM.ID, INCLUDEDTEAM.TEAMFUNDRAISINGTEAMGROUPID, INCLUDEDTEAM.PARENTTEAMID, INCLUDEDTEAM.GOAL, 
                                    EVENT.ID, TEAMFUNDRAISER.ID, REVENUESOLICITOR.ID, REVENUE.ID, INCLUDEDTEAM.SHOWINREPORT
                                ' + nchar(13);

                    exec sp_executesql @SQLTOEXEC
                        N'@TEAMQUERYID uniqueidentifier,@TEAMID uniqueidentifier, @GROUPSONLY bit, @STARTDATE datetime, @ENDDATE datetime, @CURRENTAPPUSERID uniqueidentifier, @CURRENCYCODE tinyint, @SELECTEDCURRENCYID uniqueidentifier',
                        @TEAMQUERYID=@TEAMQUERYID, @TEAMID=@TEAMID, @GROUPSONLY=@GROUPSONLY, @STARTDATE=@STARTDATE, @ENDDATE=@ENDDATE,@CURRENTAPPUSERID=@CURRENTAPPUSERID,@CURRENCYCODE=@CURRENCYCODE,@SELECTEDCURRENCYID=@SELECTEDCURRENCYID;



                    --Filter collected data for calculating team totals

                    declare @GROUPINFO table(
                        GROUPID uniqueidentifier,
                        LATESTTEAMID uniqueidentifier,
                        REVENUEID uniqueidentifier,
                        AMOUNTSOLICITED money
                    )
                    insert into @GROUPINFO
                    (
                        GROUPID,
                        LATESTTEAMID,
                        REVENUEID,
                        AMOUNTSOLICITED
                    )
                    select distinct 
                        GROUPID, 
                        dbo.UFN_TEAMFUNDRAISINGTEAMGROUP_GETLATESTTEAMONEVENT(GROUPID,@STARTDATE,@ENDDATE), 
                        REVENUEID,
                        AMOUNTSOLICITED
                    from #FUNDRAISERINFO

                    ----Filter collected data for calculating event totals

                    declare @EVENTTEAMINFO table(
                        GROUPID uniqueidentifier,
                        TEAMID uniqueidentifier,
                        PARENTTEAMID uniqueidentifier,
                        TEAMGOAL money,
                        ID uniqueidentifier,
                        TOTAL money,
                        NUMGIFTS int,
                        MAXGIFT money
                    )
                    insert into @EVENTTEAMINFO
                    (
                        GROUPID,
                        TEAMID,
                        PARENTTEAMID,
                        TEAMGOAL,
                        ID,
                        TOTAL,
                        NUMGIFTS,
                        MAXGIFT                    
                    )
                    select
                        GROUPID, 
                        TEAMID, 
                        PARENTTEAMID,
                        TEAMGOAL, 
                        EVENTID ID, 
                        sum(AMOUNTSOLICITED) TOTAL,
                        count(REVENUEID) NUMGIFTS, 
                        max(AMOUNTSOLICITED) MAXGIFT
                    from 
                        (                            
                            select distinct 
                                GROUPID, 
                                TEAMID, 
                                PARENTTEAMID,
                                TEAMGOAL, 
                                EVENTID, 
                                REVENUEID,
                                AMOUNTSOLICITED
                            from #FUNDRAISERINFO
                        ) EVENTINFO
                    group by GROUPID, TEAMID, TEAMGOAL, PARENTTEAMID, EVENTID;


                    -- Calculate totals and build dataset

                    with CTE_TEAMCHILDREN( TEAMID, ANCESTORTEAMID, ANCESTORGROUPID, TEAMREVENUE ) as
                    (
                        select 
                            TEAMID, 
                            TEAMID, 
                            GROUPID, 
                            TOTAL
                        from @EVENTTEAMINFO
                        where TEAMID in (
                            select PARENTTEAMID
                            from @EVENTTEAMINFO
                        )
                        union all
                        select 
                            EVENTTEAMINFO.TEAMID, 
                            CTE_TEAMCHILDREN.ANCESTORTEAMID, 
                            CTE_TEAMCHILDREN.ANCESTORGROUPID, 
                            EVENTTEAMINFO.TOTAL
                        from @EVENTTEAMINFO EVENTTEAMINFO
                            inner join CTE_TEAMCHILDREN on EVENTTEAMINFO.PARENTTEAMID=CTE_TEAMCHILDREN.TEAMID
                    )
                    select  
                        dbo.UFN_IDSET_GETNAME(@TEAMQUERYID) QUERYNAME,
                        GROUPINFO.ID GROUPID,
                        dbo.UFN_TEAMFUNDRAISINGTEAM_BUILDFULLNAME(coalesce(GROUPINFO.LATESTTEAMID,EVENTTEAMINFO.TEAMID)) GROUPNAME, 
                        coalesce(GROUPROLLUPTOTALS.ROLLUPTOTAL,GROUPINFO.TOTAL) GROUPROLLUPTOTAL,
                        GROUPINFO.TOTAL GROUPTOTAL, 
                        coalesce(dbo.UFN_TEAMFUNDRAISINGTEAMGROUP_GETGROUPGOALFOREVENTSINCURRENCY(GROUPINFO.ID,@STARTDATE,@ENDDATE, @SELECTEDCURRENCYID),EVENTTEAMINFO.TEAMGOAL) GROUPGOAL, 
                        GROUPINFO.NUMGIFTS GROUPNUMGIFTS, 
                        GROUPINFO.MAXGIFT GROUPMAXGIFT,

                        'http://www.blackbaud.com?EVENTID=' + convert(nvarchar(36),EVENT.ID) as EVENTID,
                        case dbo.UFN_TEAMFUNDRAISINGTEAM_BUILDFULLNAME(coalesce(GROUPINFO.LATESTTEAMID,EVENTTEAMINFO.TEAMID)) 
                            when dbo.UFN_TEAMFUNDRAISINGTEAM_BUILDFULLNAME(EVENTTEAMINFO.TEAMID) then EVENT.NAME 
                            else EVENT.NAME+' ('+dbo.UFN_TEAMFUNDRAISINGTEAM_BUILDFULLNAME(EVENTTEAMINFO.TEAMID)+')' 
                        end EVENTNAME, 
                        coalesce(TEAMROLLUPTOTALS.ROLLUPTOTAL,EVENTTEAMINFO.TOTAL) EVENTROLLUPTOTAL,
                        EVENTTEAMINFO.TOTAL EVENTTOTAL,
                        EVENTTEAMINFO.TEAMGOAL EVENTGOAL, 
                        EVENTTEAMINFO.NUMGIFTS EVENTNUMGIFTS, 
                        EVENTTEAMINFO.MAXGIFT EVENTMAXGIFT,
                        FUNDRAISERINFO.ID FUNDRAISERID,
                        NF.NAME FUNDRAISERNAME, 
                        FUNDRAISERINFO.TOTAL FUNDRAISERTOTAL,
                        case
                            when @SELECTEDCURRENCYID = TEAMFUNDRAISER.BASECURRENCYID then
                                TEAMFUNDRAISER.GOAL
                            when (@CURRENCYCODE = 3)  and (@SELECTEDCURRENCYID <> dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()) then
                                dbo.UFN_CURRENCY_CONVERT(TEAMFUNDRAISER.ORGANIZATIONGOAL, dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @SELECTEDCURRENCYID, (select [INNERAPPEAL].DATEADDED from dbo.APPEAL [INNERAPPEAL] where [INNERAPPEAL].ID = TEAMFUNDRAISER.APPEALID), 1, null))
                            else
                                TEAMFUNDRAISER.ORGANIZATIONGOAL
                        end FUNDRAISERGOAL,
                        FUNDRAISERINFO.NUMGIFTS FUNDRAISERNUMGIFTS, 
                        FUNDRAISERINFO.MAXGIFT FUNDRAISERMAXGIFT,
                      CURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
                      CURRENCYPROPERTIES.CURRENCYSYMBOL,
                      CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE],
                      CURRENCYPROPERTIES.DECIMALDIGITS
                    from(
                            select
                                GROUPID, 
                                EVENTID, 
                                FUNDRAISERID ID, 
                                sum(AMOUNTSOLICITED) TOTAL,
                                count(REVENUEID) NUMGIFTS, 
                                max(AMOUNTSOLICITED) MAXGIFT
                            from #FUNDRAISERINFO
                            where 
                                SHOWINREPORT = 1
                                and(
                                    @GROUPSONLY = 0 
                                    or ISINGROUP = 1
                                )
                            group by GROUPID, EVENTID, FUNDRAISERID
                        ) FUNDRAISERINFO
                        left join dbo.TEAMFUNDRAISER on TEAMFUNDRAISER.ID = FUNDRAISERINFO.ID
                        left join dbo.CONSTITUENT with (nolock) on CONSTITUENT.ID = TEAMFUNDRAISER.CONSTITUENTID
                        inner join @EVENTTEAMINFO EVENTTEAMINFO 
                            on EVENTTEAMINFO.ID = FUNDRAISERINFO.EVENTID and EVENTTEAMINFO.GROUPID=FUNDRAISERINFO.GROUPID
                        inner join dbo.EVENT on EVENT.ID = EVENTTEAMINFO.ID
                        inner join(
                            select
                                GROUPID ID, 
                                LATESTTEAMID, 
                                sum(AMOUNTSOLICITED) TOTAL,
                                count(REVENUEID) NUMGIFTS, 
                                max(AMOUNTSOLICITED) MAXGIFT
                            from @GROUPINFO
                            group by GROUPID, LATESTTEAMID
                        ) GROUPINFO on GROUPINFO.ID = FUNDRAISERINFO.GROUPID
                        left join(
                            select
                                ANCESTORTEAMID TEAMID,
                                sum(TEAMREVENUE) ROLLUPTOTAL
                            from CTE_TEAMCHILDREN
                            group by ANCESTORTEAMID
                        ) TEAMROLLUPTOTALS on TEAMROLLUPTOTALS.TEAMID=EVENTTEAMINFO.TEAMID
                        left join(
                            select
                                ANCESTORGROUPID GROUPID,
                                sum(TEAMREVENUE) ROLLUPTOTAL
                            from CTE_TEAMCHILDREN
                            group by ANCESTORGROUPID
                        ) GROUPROLLUPTOTALS on GROUPROLLUPTOTALS.GROUPID=GROUPINFO.ID
                        outer apply dbo.UFN_CURRENCY_GETPROPERTIES(@SELECTEDCURRENCYID) CURRENCYPROPERTIES
                        outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
                    order by dbo.UFN_TEAMFUNDRAISINGTEAM_BUILDFULLNAME(coalesce(GROUPINFO.LATESTTEAMID,EVENTTEAMINFO.TEAMID)), 
                        EVENT.STARTDATE, CONSTITUENT.KEYNAME;

                    drop table #FUNDRAISERINFO;
                end try

                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    drop table #FUNDRAISERINFO;
                    return 1;
                end catch

                return 0;