USP_DATAFORMTEMPLATE_VIEW_COMMUNITYMEMBERTEAMFUNDRAISINGGIFTSUMMARY

The load procedure used by the view dataform template "Community Member Team Fundraising Gift Summary View Form"

Parameters

Parameter Parameter Type Mode Description
@ID nvarchar(72) IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@TEAMID uniqueidentifier INOUT Team ID
@TEAMNAME nvarchar(100) INOUT Team
@INDIVIDUALGOAL money INOUT Individual goal
@TEAMGOAL money INOUT Team goal
@APPEALGOAL money INOUT Appeal goal
@TOTALRAISED money INOUT Total raised
@GOALDIFFERENCE money INOUT Difference
@GOALPERCENT decimal(6, 2) INOUT Percent of individual goal
@TOTALGIFTCOUNT int INOUT Total donations received
@ONLINEGIFTCOUNT int INOUT Online donations received
@OFFLINEGIFTCOUNT int INOUT Offline donations received
@OTHERGIFTCOUNT int INOUT Other donations received
@ONLINEGIFTTOTAL money INOUT Online donations
@OFFLINEGIFTTOTAL money INOUT Offline donations
@OTHERGIFTTOTAL money INOUT Other donations
@GIFTAVERAGE money INOUT Average donation
@LARGESTGIFTDONORNAME nvarchar(154) INOUT Largest single donation sponsor
@LARGESTGIFTAMOUNT money INOUT Largest single donation
@EMAILSENTCOUNT int INOUT Number of emails sent

Definition

Copy


                CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_COMMUNITYMEMBERTEAMFUNDRAISINGGIFTSUMMARY
                (
                    @ID nvarchar(72),
                    @DATALOADED bit = 0 output,
                    @TEAMID uniqueidentifier = null output,
                    @TEAMNAME nvarchar(100) = null output,
                    @INDIVIDUALGOAL money = null output,
                    @TEAMGOAL money = null output,
                    @APPEALGOAL money = null output,
                    @TOTALRAISED money = null output,
                    @GOALDIFFERENCE money = null output,
                    @GOALPERCENT decimal(6,2) = null output,
                    @TOTALGIFTCOUNT int = null output,
                    @ONLINEGIFTCOUNT int = null output,
                    @OFFLINEGIFTCOUNT int = null output,
                    @OTHERGIFTCOUNT int = null output,
                    @ONLINEGIFTTOTAL money = null output,
                    @OFFLINEGIFTTOTAL money = null output,
                    @OTHERGIFTTOTAL money = null output,
                    @GIFTAVERAGE money = null output,
                    @LARGESTGIFTDONORNAME nvarchar(154) = null output,
                    @LARGESTGIFTAMOUNT money = null output,
                    @EMAILSENTCOUNT int = null output
                )
                as
                    set nocount on;

                    set @DATALOADED = 0;

                    declare @CONSTITUENTID uniqueidentifier;
                    declare @APPEALID uniqueidentifier;

                    set @CONSTITUENTID = left(@ID, 36);
                    if len(@ID) = 72
                        set @APPEALID = right(@ID, 36);

                    select
                        @DATALOADED = 1,
                        @TEAMID = TEAMFUNDRAISINGTEAM.ID,
                        @TEAMNAME = TEAMFUNDRAISINGTEAM.NAME,
                        @INDIVIDUALGOAL = TEAMFUNDRAISER.GOAL,
                        @TEAMGOAL = TEAMFUNDRAISINGTEAM.GOAL,
                        @APPEALGOAL = APPEAL.GOAL,
                        @TOTALRAISED = coalesce(sum(REVENUESOLICITOR.AMOUNT), 0),
                        @GOALDIFFERENCE = (coalesce(sum(REVENUESOLICITOR.AMOUNT), 0) - TEAMFUNDRAISER.GOAL),
                        @GOALPERCENT = (coalesce(sum(REVENUESOLICITOR.AMOUNT), 0) / TEAMFUNDRAISER.GOAL),
                        @TOTALGIFTCOUNT = count(REVENUESOLICITOR.ID),
                        @ONLINEGIFTCOUNT =
                        count
                        (
                            case
                                when REVENUEBBNC.ISTEAMFUNDRAISINGOFFLINEGIFT = 0 and REVENUESOLICITOR.ID is not null then 1
                                else null
                            end
                        ),
                        @OFFLINEGIFTCOUNT = 
                        count
                        (
                            case
                                when REVENUEBBNC.ISTEAMFUNDRAISINGOFFLINEGIFT = 1 and REVENUESOLICITOR.ID is not null then 1
                                else null
                            end
                        ),
                        @OTHERGIFTCOUNT = 
                        count
                        (
                            case
                                when REVENUEBBNC.ID is null and REVENUESOLICITOR.ID is not null then 1
                                else null
                            end
                        ),
                        @ONLINEGIFTTOTAL = 
                        coalesce
                        (
                            sum
                            (
                                case
                                    when REVENUEBBNC.ISTEAMFUNDRAISINGOFFLINEGIFT = 0 then REVENUESOLICITOR.AMOUNT
                                    else null
                                end
                            ),
                            0
                        ),
                        @OFFLINEGIFTTOTAL = 
                        coalesce
                        (
                            sum
                            (
                                case
                                    when REVENUEBBNC.ISTEAMFUNDRAISINGOFFLINEGIFT = 1 then REVENUESOLICITOR.AMOUNT
                                    else null
                                end
                            ),
                            0
                        ),
                        @OTHERGIFTTOTAL = 
                        coalesce
                        (
                            sum
                            (
                                case
                                    when REVENUEBBNC.ID is null then REVENUESOLICITOR.AMOUNT
                                    else null
                                end
                            ),
                            0
                        ),
                        @GIFTAVERAGE = coalesce(avg(REVENUESOLICITOR.AMOUNT), 0)
                    from
                        dbo.TEAMFUNDRAISER
                        inner join dbo.APPEAL on TEAMFUNDRAISER.APPEALID = APPEAL.ID
                        left join dbo.REVENUE on TEAMFUNDRAISER.APPEALID = REVENUE.APPEALID
                        left join dbo.REVENUESPLIT on REVENUE.ID = REVENUESPLIT.REVENUEID
                        left join dbo.REVENUESOLICITOR on
                            TEAMFUNDRAISER.CONSTITUENTID = REVENUESOLICITOR.CONSTITUENTID
                            and REVENUESPLIT.ID = REVENUESOLICITOR.REVENUESPLITID
                        left join dbo.REVENUEBBNC on REVENUE.ID = REVENUEBBNC.ID
                        outer apply
                        (
                            select top (1)
                                TEAMFUNDRAISINGTEAMMEMBER.TEAMFUNDRAISINGTEAMID
                            from
                                dbo.TEAMFUNDRAISINGTEAMMEMBER
                            where
                                TEAMFUNDRAISINGTEAMMEMBER.TEAMFUNDRAISERID = TEAMFUNDRAISER.ID
                            order by
                                TEAMFUNDRAISINGTEAMMEMBER.DATECHANGED desc
                        ) [TEAMFUNDRAISINGTEAMMEMBERFORBBNC]
                        left join dbo.TEAMFUNDRAISINGTEAM on [TEAMFUNDRAISINGTEAMMEMBERFORBBNC].TEAMFUNDRAISINGTEAMID = TEAMFUNDRAISINGTEAM.ID
                    where
                        TEAMFUNDRAISER.CONSTITUENTID = @CONSTITUENTID
                        and APPEAL.ID = @APPEALID
                        and
                        (
                            REVENUESPLIT.ID is null --TMV 10/05/2007 CR284921-100507 Return a row for the constituent even if there is no associated revenue

                            or
                            ( --TMV 10/04/2007 CR284708-100307 Don't double count pledge payments

                                (REVENUE.TRANSACTIONTYPECODE = 1 and REVENUESPLIT.APPLICATIONCODE = 0) --Pledge

                                or
                                (REVENUE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE in (0, 3)) --Payment (Gift or Recurring gift payment)

                            )
                        )
                    group by
                        APPEAL.ID,
                        APPEAL.NAME,
                        TEAMFUNDRAISINGTEAM.ID,
                        TEAMFUNDRAISINGTEAM.NAME,
                        TEAMFUNDRAISER.GOAL,
                        TEAMFUNDRAISINGTEAM.GOAL,
                        APPEAL.GOAL;

                    select top (1)
                        @LARGESTGIFTDONORNAME = dbo.UFN_CONSTITUENT_BUILDNAME(REVENUE.CONSTITUENTID),
                        @LARGESTGIFTAMOUNT = REVENUESOLICITOR.AMOUNT
                    from
                        dbo.REVENUESOLICITOR
                        inner join dbo.REVENUESPLIT on REVENUESOLICITOR.REVENUESPLITID = REVENUESPLIT.ID
                        inner join dbo.REVENUE on REVENUESPLIT.REVENUEID = REVENUE.ID
                    where
                        REVENUESOLICITOR.CONSTITUENTID = @CONSTITUENTID
                        and REVENUE.APPEALID = @APPEALID
                        and
                        ( -- TMV 10/04/2007 CR284708-100307 Don't double count pledge payments

                            (REVENUE.TRANSACTIONTYPECODE = 1 and REVENUESPLIT.APPLICATIONCODE = 0) --Pledge

                            or
                            (REVENUE.TRANSACTIONTYPECODE = 0 and REVENUESPLIT.APPLICATIONCODE in (0, 3)) --Payment (Gift or Recurring gift payment)

                        )
                    order by
                        REVENUESOLICITOR.AMOUNT desc;

                    select top (1)
                        @EMAILSENTCOUNT = count([TFEMAILDISTINCT].[EMAILRECIPIENTMAPID])
                    from
                        (
                            select distinct
                                [NETCOMMUNITYCLIENTUSER].[ID],
                                [NETCOMMUNITYCLIENTUSER].[USERUPDATEDATE],
                                [NETCOMMUNITYTEAMFUNDRAISEREMAIL].[EMAILRECIPIENTMAPID]
                            from
                                dbo.NETCOMMUNITYCLIENTUSER
                                left join dbo.NETCOMMUNITYTEAMFUNDRAISEREMAIL on
                                    [NETCOMMUNITYCLIENTUSER].[ID] = [NETCOMMUNITYTEAMFUNDRAISEREMAIL].[NETCOMMUNITYCLIENTUSERID]
                                    and @APPEALID  = [NETCOMMUNITYTEAMFUNDRAISEREMAIL].[APPEALID]
                            where
                                [NETCOMMUNITYCLIENTUSER].[CONSTITUENTID] = @CONSTITUENTID
                                and [NETCOMMUNITYCLIENTUSER].[ACTIVE] = 1
                                and [NETCOMMUNITYCLIENTUSER].[DELETED] = 0
                        ) [TFEMAILDISTINCT]
                    group by
                        [TFEMAILDISTINCT].[ID],
                        [TFEMAILDISTINCT].[USERUPDATEDATE]
                    order by
                        [TFEMAILDISTINCT].[USERUPDATEDATE];

                    return 0;