USP_REVENUE_MATCHINGGIFT_CHANGECONSTITUENT

Stored procedure for updating existing matching gifts to a new constituent

Parameters

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

Definition

Copy


            CREATE procedure dbo.USP_REVENUE_MATCHINGGIFT_CHANGECONSTITUENT
            (
                @REVENUEID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier,
                @CHANGEDATE datetime,
                @CURRENTAPPUSERID uniqueidentifier
            )
            as 
                set nocount on;

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

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

                -- Update rules for matching gifts

                -- 1) Cannot update a matching gift claim with a payment against it.


                declare @MATCHINGGIFTID uniqueidentifier;
                declare MGCURSOR cursor local fast_forward for
                    select 
                        FINANCIALTRANSACTION.ID
                    from dbo.FINANCIALTRANSACTION
                        inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
                        inner join REVENUEMATCHINGGIFT on FINANCIALTRANSACTION.ID = REVENUEMATCHINGGIFT.ID
                    where REVENUEMATCHINGGIFT.MGSOURCEREVENUEID = @REVENUEID
                    and dbo.UFN_PLEDGE_PAYMENTSEXIST(FINANCIALTRANSACTION.ID) = 0
                    and FINANCIALTRANSACTION.DELETEDON is null

                open MGCURSOR;
                fetch next from MGCURSOR into @MATCHINGGIFTID;
                while @@fetch_status = 0
                begin
                    exec dbo.USP_MATCHINGGIFTPLEDGE_DELETE @MATCHINGGIFTID, @CHANGEAGENTID;

                    fetch next from MGCURSOR into @MATCHINGGIFTID;
                end

                close MGCURSOR;
                deallocate MGCURSOR;

                declare @SPLITS xml;
                declare @APPLIEDAMOUNT money;
                declare @RECEIPTAMOUNT money;
                declare @CONSTITUENTID uniqueidentifier
                select @SPLITS = (select sum(FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT) AMOUNT, REVENUESPLIT_EXT.DESIGNATIONID, 0 as TYPECODE
                                    from dbo.FINANCIALTRANSACTIONLINEITEM
                                    inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
                                    where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @REVENUEID and REVENUESPLIT_EXT.TYPECODE = 0
                                        and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1
                                    group by REVENUESPLIT_EXT.DESIGNATIONID
                                    for xml raw('ITEM'),type,elements,root('SPLITS'),binary base64);

                if (select count(*)
                    from dbo.FINANCIALTRANSACTIONLINEITEM
                    inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
                    inner join dbo.DESIGNATION on REVENUESPLIT_EXT.DESIGNATIONID = DESIGNATION.ID
                    where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @REVENUEID and (REVENUESPLIT_EXT.TYPECODE = 0)
                    and DESIGNATION.ISACTIVE = 0 and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
                    and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1) > 0
                raiserror('Revenue cannot be added to inactive designations.', 13, 2);

                select @APPLIEDAMOUNT = sum(TRANSACTIONAMOUNT)
                    from dbo.FINANCIALTRANSACTIONLINEITEM
                    inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
                    where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @REVENUEID and REVENUESPLIT_EXT.TYPECODE = 0
                        and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1;

                select
                    @RECEIPTAMOUNT = REVENUE_EXT.RECEIPTAMOUNT,
                    @CONSTITUENTID = FINANCIALTRANSACTION.CONSTITUENTID
                from dbo.FINANCIALTRANSACTION
                inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
                where FINANCIALTRANSACTION.ID = @REVENUEID
                    and FINANCIALTRANSACTION.DELETEDON is null;

                if dbo.UFN_MATCHINGGIFTPREFERENCE_AUTOADDMG() > 0
                    exec USP_MATCHINGGIFTPLEDGE_AUTOADD @CONSTITUENTID, @CHANGEAGENTID, @REVENUEID, @CHANGEDATE, @APPLIEDAMOUNT, @RECEIPTAMOUNT, @SPLITS, @CURRENTAPPUSERID;

                if dbo.UFN_MATCHINGGIFTPREFERENCE_AUTOADDSPOUSEMG() > 0
                    exec USP_MATCHINGGIFTPLEDGE_AUTOADDFROMSPOUSE @CONSTITUENTID, @CHANGEAGENTID, @REVENUEID, @CHANGEDATE, @APPLIEDAMOUNT, @RECEIPTAMOUNT, @SPLITS, @CURRENTAPPUSERID;