USP_REVENUE_FIXPAYMENTS

Updates attributes on payments applied to a commitment.

Parameters

Parameter Parameter Type Mode Description
@REVENUEID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN

Definition

Copy


            CREATE procedure dbo.USP_REVENUE_FIXPAYMENTS
            (
                @REVENUEID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier,
                @CHANGEDATE datetime
            )
            as

            /* 
             *    NOTE: This procedure is no longer called by any Blackbaud code.
             *    It updates payments with some (but not all) of the attributes 
             *    of the records they pay. This behavior may not be desirable.
             *
             *    This procedure currently exists only for backwards compatibility
             *    with Blackbaud Enterprise 1.0.
             */            

            set nocount on;

                declare @PLEDGECURSOR cursor;
            declare @RGCURSOR cursor;

            declare @PAYMENTID uniqueidentifier;

            declare @TYPECODE tinyint;
            declare @SOURCECODE nvarchar(50);
            declare @APPEALID uniqueidentifier;
            declare @GIVENANONYMOUSLY bit;

            select 
                @TYPECODE = TRANSACTIONTYPECODE,
                @SOURCECODE = SOURCECODE,
                @APPEALID = APPEALID,
                @GIVENANONYMOUSLY = GIVENANONYMOUSLY
            from dbo.REVENUE
            where ID = @REVENUEID;

            if @TYPECODE = 1 or @TYPECODE = 3 --Pledge and MG Pledge

            begin
                set @PLEDGECURSOR = cursor local fast_forward for
                    select distinct 
                        PAYMENTID
                    from dbo.INSTALLMENTPAYMENT
                    where PLEDGEID = @REVENUEID;

                open @PLEDGECURSOR;
                    fetch next from @PLEDGECURSOR into @PAYMENTID;
                    while @@FETCH_STATUS = 0
                    begin
                        update dbo.REVENUE_EXT
                            set APPEALID = @APPEALID,
                                SOURCECODE = @SOURCECODE,
                                GIVENANONYMOUSLY = @GIVENANONYMOUSLY
                        where ID = @PAYMENTID;

                        fetch next from @PLEDGECURSOR into @PAYMENTID;
                    end
                --When a cursor is used, it should be explicitly closed/deallocated in case of blocking or USP running long

                close @PLEDGECURSOR;
                deallocate @PLEDGECURSOR;
            end
            else if @TYPECODE = 2 --Recurring gift

            begin
                set @RGCURSOR = cursor local fast_forward for
                    select distinct
                        PAYMENTREVENUEID
                    from dbo.RECURRINGGIFTACTIVITY
                    where SOURCEREVENUEID = @REVENUEID 
                    and not PAYMENTREVENUEID is null;

                open @RGCURSOR;
                    fetch next from @RGCURSOR into @PAYMENTID;
                    while @@FETCH_STATUS = 0
                    begin
                        update dbo.REVENUE_EXT
                            set APPEALID = @APPEALID,
                                SOURCECODE = @SOURCECODE,
                                GIVENANONYMOUSLY = @GIVENANONYMOUSLY
                        from dbo.REVENUE_EXT
            inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
            inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
                        inner join dbo.REVENUESPLIT_EXT on dbo.REVENUESPLIT_EXT.ID = dbo.FINANCIALTRANSACTIONLINEITEM.ID
                        where REVENUESPLIT_EXT.ID = @PAYMENTID;

                        fetch next from @RGCURSOR into @PAYMENTID;
                    end
                --When a cursor is used, it should be explicitly closed/deallocated in case of blocking or USP running long

                close @RGCURSOR;
                deallocate @RGCURSOR;
            end