USP_BBNC_COMMITFUNDRAISERTEAMFUNDRAISERADD

Adds a team fundraiser's information from a fundraiser Blackbaud Internet Solutions transaction to the system from a given batch.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@BBNCMAPID int INOUT
@APPEALID uniqueidentifier IN
@TEAMFUNDRAISINGTEAMID uniqueidentifier IN
@CONSTITUENTID uniqueidentifier IN
@GOAL money IN
@CONSTITUENCYCODEID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN
@ISTEAMCAPTAIN bit IN
@ISOCODE nvarchar(3) IN

Definition

Copy


            CREATE procedure dbo.USP_BBNC_COMMITFUNDRAISERTEAMFUNDRAISERADD
            (
                @ID uniqueidentifier = null output,
                @BBNCMAPID int = null output,
                @APPEALID uniqueidentifier = null,
                @TEAMFUNDRAISINGTEAMID uniqueidentifier = null,
                @CONSTITUENTID uniqueidentifier = null,
                @GOAL money = 0,
                @CONSTITUENCYCODEID uniqueidentifier = null,
                @CHANGEAGENTID uniqueidentifier = null,
                @CHANGEDATE datetime = null,
                @ISTEAMCAPTAIN bit = 0,
        @ISOCODE nvarchar(3) = null
            )
            as
                set nocount on;

                if @CHANGEAGENTID is null                
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                if @CHANGEDATE is null
                    set @CHANGEDATE = getdate();

                --Used for adding constituency, not for DATEADDED/DATECHANGED

                declare @CURRENTDATE datetime
                set @CURRENTDATE = getdate();

       --Multicurrency Info Grab

      declare @TRANSACTIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETCURRENCYFROMISO(@ISOCODE)
      declare @BASECURRENCYID uniqueidentifier = (select BASECURRENCYID from dbo.APPEAL where APPEAL.ID = @APPEALID)
      declare @BASEEXCHANGERATEID uniqueidentifier = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@TRANSACTIONCURRENCYID,@BASECURRENCYID,@CHANGEDATE,1,null)
      declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@TRANSACTIONCURRENCYID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),@CHANGEDATE,1,null)
      declare @ORGANIZATIONAMOUNT  money = dbo.UFN_CURRENCY_CONVERT(@GOAL,@ORGANIZATIONEXCHANGERATEID)

      if @BASECURRENCYID <> @TRANSACTIONCURRENCYID
      begin
       set @GOAL = dbo.UFN_CURRENCY_CONVERT(@GOAL,@BASEEXCHANGERATEID)
      end

                begin try
                    declare @CURRENTGOAL money;
                    select
                        @ID = TEAMFUNDRAISER.ID,
                        @CURRENTGOAL = TEAMFUNDRAISER.GOAL
                    from
                        dbo.APPEAL
                        left join dbo.TEAMFUNDRAISER on
                            APPEAL.ID = TEAMFUNDRAISER.APPEALID
                            and @CONSTITUENTID = TEAMFUNDRAISER.CONSTITUENTID
                    where
                        APPEAL.ID = @APPEALID;

                    if @ID is null
                    begin
                        set @ID = newid();

                        insert into dbo.TEAMFUNDRAISER
                            (ID,APPEALID,CONSTITUENTID,GOAL,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED,ORGANIZATIONGOAL,ORGANIZATIONEXCHANGERATEID,BASECURRENCYID)
                        values
                            (@ID,@APPEALID,@CONSTITUENTID,@GOAL,@CHANGEAGENTID,@CHANGEAGENTID,@CHANGEDATE,@CHANGEDATE,@ORGANIZATIONAMOUNT,@ORGANIZATIONEXCHANGERATEID,@BASECURRENCYID);
                    end
                    else
                        if @GOAL <> @CURRENTGOAL
                            update
                                dbo.TEAMFUNDRAISER
                            set
                                GOAL = @GOAL
                            where
                                ID = @ID;

                    insert into dbo.TEAMFUNDRAISINGTEAMMEMBER
                        (TEAMFUNDRAISINGTEAMID,TEAMFUNDRAISERID,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
                    values
                        (@TEAMFUNDRAISINGTEAMID,@ID,@CHANGEAGENTID,@CHANGEAGENTID,@CHANGEDATE,@CHANGEDATE);

                    if @ISTEAMCAPTAIN = 1
                    and @TEAMFUNDRAISINGTEAMID is not null
                    and not exists(select 1 from dbo.TEAMFUNDRAISINGTEAMCAPTAIN where TEAMFUNDRAISINGTEAMID = @TEAMFUNDRAISINGTEAMID and CONSTITUENTID = @CONSTITUENTID)
                        insert into dbo.TEAMFUNDRAISINGTEAMCAPTAIN
                            (TEAMFUNDRAISINGTEAMID, CONSTITUENTID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        values
                            (@TEAMFUNDRAISINGTEAMID, @CONSTITUENTID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);

                    if @CONSTITUENCYCODEID is not null
                    and not exists
                    (
                        select
                            1
                        from
                            dbo.CONSTITUENCY
                        where
                            [CONSTITUENTID] = @CONSTITUENTID
                            and [CONSTITUENCYCODEID] = @CONSTITUENCYCODEID
                            and 
                            (    /* JamesWill 02/22/2008 CR294342-022208 Copied this where clause from USP_BBNC_COMMITFUNDRAISERTEAMFUNDRAISERUPDATE to pick up all the existing constituencies */
                                ([DATEFROM] is null and [DATETO] is null)
                                or ([DATEFROM] <= dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE) and [DATETO] is null)
                                or ([DATEFROM] is null and dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE) <= [DATETO])
                                or (dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE) between [DATEFROM] and [DATETO])
                            )
                    )
                        begin
                            declare @CONSTITUENCYDATETO datetime;

                            select top (1)
                                @CONSTITUENCYDATETO = dateadd(day, -1, [CONSTITUENCY].[DATEFROM])
                            from
                                dbo.CONSTITUENCY
                            where
                                [CONSTITUENCY].[CONSTITUENTID] = @CONSTITUENTID
                                and [CONSTITUENCY].[CONSTITUENCYCODEID] = @CONSTITUENCYCODEID
                                and [CONSTITUENCY].[DATEFROM] > dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE)
                            order by
                                [DATETO];

                            insert into dbo.CONSTITUENCY
                            (
                                [CONSTITUENTID],
                                [CONSTITUENCYCODEID],
                                [DATEFROM],
                                [DATETO],
                                [ADDEDBYID],
                                [CHANGEDBYID],
                                [DATEADDED],
                                [DATECHANGED]
                            )
                            values
                            (
                                @CONSTITUENTID,
                                @CONSTITUENCYCODEID,
                                dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE),
                                dbo.UFN_DATE_GETEARLIESTTIME(@CONSTITUENCYDATETO),
                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CHANGEDATE,
                                @CHANGEDATE
                            );
                        end

                    select
                        @BBNCMAPID = [ID]
                    from
                        dbo.BBNCTEAMFUNDRAISERIDMAP
                    where
                        TEAMFUNDRAISERID = @ID;
                end try
                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch

                return 0;