USP_REPORT_CAMPAIGNSUMMARY

Parameters

Parameter Parameter Type Mode Description
@CAMPAIGNID uniqueidentifier IN
@CAMPAIGNHIERARCHYGOALID uniqueidentifier IN
@GROUPBY tinyint IN
@CURRENCYCODE tinyint IN

Definition

Copy

                create procedure dbo.USP_REPORT_CAMPAIGNSUMMARY
                (
                    @CAMPAIGNID uniqueidentifier = null,
                    @CAMPAIGNHIERARCHYGOALID uniqueidentifier = null,
                    @GROUPBY tinyint = null,
                    @CURRENCYCODE tinyint = null --0 = Record base, (null, 1) = Organization

                )
                as begin

                    --Retrieve campaign goal information we'll need later

                    declare @STARTDATE datetime;
                    declare @ENDDATE datetime;
                    select 
                        @STARTDATE=STARTDATE,
                        @ENDDATE=ENDDATE
                    from CAMPAIGNHIERARCHYGOAL
                    where ID = @CAMPAIGNHIERARCHYGOALID;

          declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
                    declare @SELECTEDCURRENCYID uniqueidentifier;
                    if coalesce(@CURRENCYCODE, 1) = 1
                    begin
                        set @SELECTEDCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
                    end

                    declare @HIERARCHYPATH hierarchyid;
                    select @HIERARCHYPATH = CAMPAIGN.HIERARCHYPATH from dbo.CAMPAIGN where CAMPAIGN.ID = @CAMPAIGNID;

                    if coalesce(@GROUPBY, 0) = 0
                    begin
                        -- Handle no grouping

                        with CAMPAIGNGOAL_CTE as (
                            -- pull back campaign hierarchy goal amounts for the root campaign

                            select
                                CAMPAIGNHIERARCHYGOAL.CAMPAIGNID,
                                case @CURRENCYCODE
                                    when 0 then CAMPAIGNHIERARCHYGOAL.AMOUNT
                                    else CAMPAIGNHIERARCHYGOAL.ORGANIZATIONAMOUNT
                                end [AMOUNT]
                            from
                                dbo.CAMPAIGNHIERARCHYGOAL
                            where
                                CAMPAIGNHIERARCHYGOAL.ID = @CAMPAIGNHIERARCHYGOALID

                            union all

                            -- pull back campaign goal amounts for subcampaigns

                            select
                                CAMPAIGNGOAL.CAMPAIGNID,
                                case @CURRENCYCODE
                                    when 0 then CAMPAIGNGOAL.AMOUNT
                                    else CAMPAIGNGOAL.ORGANIZATIONAMOUNT
                                end
                            from
                                dbo.CAMPAIGNGOAL
                            where
                                CAMPAIGNGOAL.CAMPAIGNHIERARCHYGOALID = @CAMPAIGNHIERARCHYGOALID
                        )
                        select
                            CAMPAIGN.NAME,
                            CAMPAIGNGOAL_CTE.AMOUNT [GOAL],
                            TOTALRECEIVED.TOTALRECEIVED,
                            PLEDGEBALANCE.PLEDGEBALANCE [TOTALEXPECTED],
                            TOTALRECEIVED.TOTALRECEIVED as [OVERALLTOTALRECEIVED],
                            PLEDGEBALANCE.PLEDGEBALANCE as [OVERALLTOTALEXPECTED],
                            case when CAMPAIGN.ID=@CAMPAIGNID then 1 else 0 end [ROOT],
                            '' as PERIOD,
                            PLANNEDGIFTS.TOTALPLANNEDGIFTS as [TOTALPLANNEDGIFTS],
                            PLANNEDGIFTS.TOTALPLANNEDGIFTS as [OVERALLTOTALPLANNEDGIFTS],
                            CURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
                            CURRENCYPROPERTIES.CURRENCYSYMBOL,
                            CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE]
                        from dbo.CAMPAIGN
                        left outer join
                            CAMPAIGNGOAL_CTE on CAMPAIGN.ID = CAMPAIGNGOAL_CTE.CAMPAIGNID
                        outer apply
                            dbo.UFN_CAMPAIGN_GETTOTALRECEIVEDINCURRENCY(CAMPAIGN.HIERARCHYPATH, @STARTDATE, @ENDDATE, coalesce(@SELECTEDCURRENCYID, CAMPAIGN.BASECURRENCYID),@ORGANIZATIONCURRENCYID) TOTALRECEIVED
                        outer apply
                            dbo.UFN_CAMPAIGN_GETPLEDGEBALANCEINCURRENCY(CAMPAIGN.HIERARCHYPATH, @STARTDATE, @ENDDATE, coalesce(@SELECTEDCURRENCYID, CAMPAIGN.BASECURRENCYID),@ORGANIZATIONCURRENCYID) PLEDGEBALANCE
                        outer apply
                            dbo.UFN_CAMPAIGN_GETTOTALPLANNEDGIFTSINCURRENCY(CAMPAIGN.HIERARCHYPATH, @STARTDATE, @ENDDATE, coalesce(@SELECTEDCURRENCYID, CAMPAIGN.BASECURRENCYID),@ORGANIZATIONCURRENCYID) PLANNEDGIFTS
                        outer apply
                            dbo.UFN_CURRENCY_GETPROPERTIES(coalesce(@SELECTEDCURRENCYID, CAMPAIGN.BASECURRENCYID)) CURRENCYPROPERTIES
                        where
                            (CAMPAIGN.ID = @CAMPAIGNID or CAMPAIGN.HIERARCHYPATH.GetAncestor(1) = @HIERARCHYPATH)
                        order by 
                            ROOT desc, PERIOD;
                    end
                    else
                    begin
                        -- Handle grouping by quarter and year

                        with CAMPAIGNGOAL_CTE as (
                            -- pull back campaign hierarchy goal amounts for the root campaign

                            select
                                CAMPAIGNHIERARCHYGOAL.CAMPAIGNID,
                                case @CURRENCYCODE
                                    when 0 then CAMPAIGNHIERARCHYGOAL.AMOUNT
                                    else CAMPAIGNHIERARCHYGOAL.ORGANIZATIONAMOUNT
                                end [AMOUNT]
                            from
                                dbo.CAMPAIGNHIERARCHYGOAL
                            where
                                CAMPAIGNHIERARCHYGOAL.ID = @CAMPAIGNHIERARCHYGOALID

                            union all

                            -- pull back campaign goal amounts for subcampaigns

                            select
                                CAMPAIGNGOAL.CAMPAIGNID,
                                case @CURRENCYCODE
                                    when 0 then CAMPAIGNGOAL.AMOUNT
                                    else CAMPAIGNGOAL.ORGANIZATIONAMOUNT
                                end
                            from
                                dbo.CAMPAIGNGOAL
                            where
                                CAMPAIGNGOAL.CAMPAIGNHIERARCHYGOALID = @CAMPAIGNHIERARCHYGOALID
                        )
                        select
                            CAMPAIGN.NAME,
                            CAMPAIGNGOAL_CTE.AMOUNT [GOAL],
                            TOTALRECEIVED.TOTALRECEIVED,
                            PLEDGEBALANCE.PLEDGEBALANCE [TOTALEXPECTED],
                            OVERALLTOTALRECEIVED.TOTALRECEIVED as [OVERALLTOTALRECEIVED],
                            OVERALLPLEDGEBALANCE.PLEDGEBALANCE as [OVERALLTOTALEXPECTED],
                            case when CAMPAIGN.ID=@CAMPAIGNID then 1 else 0 end [ROOT],
                            case @GROUPBY 
                                when 2 
                                    then 'Q' + convert(nvarchar(10),PERIODS.SEQUENCE) + ', ' 
                                        + convert(nvarchar(10),PERIODS.PERIODYEAR)
                                when 3
                                    then convert(nvarchar(10),PERIODS.PERIODYEAR)
                                else '' end PERIOD,
                            PLANNEDGIFTS.TOTALPLANNEDGIFTS as [TOTALPLANNEDGIFTS],
                            OVERALLPLANNEDGIFTS.TOTALPLANNEDGIFTS as [OVERALLTOTALPLANNEDGIFTS],
                            CURRENCYPROPERTIES.ISO4217 [ISOCURRENCYCODE],
                            CURRENCYPROPERTIES.CURRENCYSYMBOL,
                            CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE [CURRENCYSYMBOLDISPLAYSETTINGCODE]
                        from dbo.UFN_DESIGNATIONREPORT_GETPERIODS(@STARTDATE, @ENDDATE, @GROUPBY) PERIODS
                        cross join
                            dbo.CAMPAIGN
                        left outer join
                            CAMPAIGNGOAL_CTE on CAMPAIGN.ID = CAMPAIGNGOAL_CTE.CAMPAIGNID
                        outer apply
                            dbo.UFN_CAMPAIGN_GETTOTALRECEIVEDINCURRENCY(CAMPAIGN.HIERARCHYPATH, PERIODS.STARTDATE, PERIODS.ENDDATE, coalesce(@SELECTEDCURRENCYID, CAMPAIGN.BASECURRENCYID),@ORGANIZATIONCURRENCYID) TOTALRECEIVED
                        outer apply
                            dbo.UFN_CAMPAIGN_GETPLEDGEBALANCEINCURRENCY(CAMPAIGN.HIERARCHYPATH, PERIODS.STARTDATE, PERIODS.ENDDATE, coalesce(@SELECTEDCURRENCYID, CAMPAIGN.BASECURRENCYID),@ORGANIZATIONCURRENCYID) PLEDGEBALANCE
                        outer apply
                            dbo.UFN_CAMPAIGN_GETTOTALRECEIVEDINCURRENCY(CAMPAIGN.HIERARCHYPATH, @STARTDATE, @ENDDATE, coalesce(@SELECTEDCURRENCYID, CAMPAIGN.BASECURRENCYID),@ORGANIZATIONCURRENCYID) OVERALLTOTALRECEIVED
                        outer apply
                            dbo.UFN_CAMPAIGN_GETPLEDGEBALANCEINCURRENCY(CAMPAIGN.HIERARCHYPATH, @STARTDATE, @ENDDATE, coalesce(@SELECTEDCURRENCYID, CAMPAIGN.BASECURRENCYID),@ORGANIZATIONCURRENCYID) OVERALLPLEDGEBALANCE
                        outer apply 
                            dbo.UFN_CAMPAIGN_GETTOTALPLANNEDGIFTSINCURRENCY(CAMPAIGN.HIERARCHYPATH, PERIODS.STARTDATE, PERIODS.ENDDATE, coalesce(@SELECTEDCURRENCYID, CAMPAIGN.BASECURRENCYID),@ORGANIZATIONCURRENCYID) PLANNEDGIFTS
                        outer apply 
                            dbo.UFN_CAMPAIGN_GETTOTALPLANNEDGIFTSINCURRENCY(CAMPAIGN.HIERARCHYPATH, @STARTDATE, @ENDDATE, coalesce(@SELECTEDCURRENCYID, CAMPAIGN.BASECURRENCYID),@ORGANIZATIONCURRENCYID) OVERALLPLANNEDGIFTS
                        outer apply
                            dbo.UFN_CURRENCY_GETPROPERTIES(coalesce(@SELECTEDCURRENCYID, CAMPAIGN.BASECURRENCYID)) CURRENCYPROPERTIES
                        where
                            (CAMPAIGN.ID = @CAMPAIGNID or CAMPAIGN.HIERARCHYPATH.GetAncestor(1) = @HIERARCHYPATH)
                        order by 
                            ROOT desc, PERIOD;
                    end

                end