USP_UNAPPLIEDMG_UPDATEPAYMENT

Updates unapplied matching gift payments.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@REVENUEID uniqueidentifier IN
@AMOUNT money IN
@DESIGNATIONID uniqueidentifier IN
@CAMPAIGNS xml IN
@RECOGNITIONCREDITS xml IN
@SOLICITORS xml IN
@CATEGORYCODEID uniqueidentifier IN
@CHANGEDATE datetime IN
@CHANGEAGENTID uniqueidentifier IN
@BASEAMOUNT money IN
@ORGANIZATIONAMOUNT money IN

Definition

Copy


            CREATE procedure dbo.USP_UNAPPLIEDMG_UPDATEPAYMENT
            (
                @ID uniqueidentifier,
                @REVENUEID uniqueidentifier,
                @AMOUNT money,
                @DESIGNATIONID uniqueidentifier,
                @CAMPAIGNS xml,
                @RECOGNITIONCREDITS xml,
                @SOLICITORS xml,
                @CATEGORYCODEID uniqueidentifier,
                @CHANGEDATE datetime = null,
                @CHANGEAGENTID uniqueidentifier = null,
                @BASEAMOUNT money = null,
                @ORGANIZATIONAMOUNT money = null
            )
            as
                set nocount on;

                --SlyyMu 8/19/10.  Updated the function to account for both T->B->O and T->O

                declare @TRANSACTIONCURRENCYID uniqueidentifier;
                declare @BASECURRENCYID uniqueidentifier;
                declare @BASEEXCHANGERATEID uniqueidentifier;
                declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
                declare @BASETOORGANIZATIONEXCHANGERATEID uniqueidentifier;
                declare @REVENUEDATE datetime;

                select
                    @REVENUEDATE = cast(REVENUE.DATE as datetime),
                    @BASECURRENCYID = CS.BASECURRENCYID,
                    @TRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID,
                    @BASEEXCHANGERATEID = REVENUE.BASEEXCHANGERATEID,
                    @ORGANIZATIONEXCHANGERATEID = REVENUE.ORGEXCHANGERATEID
                from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
                inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = REVENUESPLIT.ID
                inner join dbo.FINANCIALTRANSACTION REVENUE on REVENUE.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
                inner join dbo.PDACCOUNTSYSTEM PD on PD.ID = REVENUE.PDACCOUNTSYSTEMID
                inner join dbo.CURRENCYSET CS on CS.ID = PD.CURRENCYSETID
                where REVENUESPLIT.ID = @ID;

                -- Convert the applied amount into base and organization amounts.

                if @BASEAMOUNT is null or @ORGANIZATIONAMOUNT is null
                    exec dbo.USP_CURRENCY_GETCURRENCYVALUES @AMOUNT, @REVENUEDATE, @BASECURRENCYID, @BASEEXCHANGERATEID, @TRANSACTIONCURRENCYID, @BASEAMOUNT output, null, @ORGANIZATIONAMOUNT output, @ORGANIZATIONEXCHANGERATEID, 0, @BASETOORGANIZATIONEXCHANGERATEID output;
                else
                    set @BASETOORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTBASETOORGANIZATIONRATE(@BASECURRENCYID, @REVENUEDATE, null, @ORGANIZATIONEXCHANGERATEID);

                update dbo.FINANCIALTRANSACTIONLINEITEM set
                    TRANSACTIONAMOUNT = @AMOUNT
                    ,BASEAMOUNT = @BASEAMOUNT
                    ,ORGAMOUNT = @ORGANIZATIONAMOUNT
                    ,CHANGEDBYID = @CHANGEAGENTID
                    ,DATECHANGED = @CHANGEDATE
                where ID = @ID
                    and (
                        TRANSACTIONAMOUNT != @AMOUNT or
                        BASEAMOUNT != @BASEAMOUNT or
                        ORGAMOUNT != @ORGANIZATIONAMOUNT);

                -- adding applicationcode and typecode in the update since the Revenue Update batch can change the application type code without

                -- deleting the split record, so the applicationcode and typecode doesn't get set correctly if say, a donation is changed into

                -- a UMG.

                update dbo.REVENUESPLIT_EXT set
                    DESIGNATIONID = @DESIGNATIONID
                    ,APPLICATIONCODE = 7
                    ,TYPECODE = 0
                    ,CHANGEDBYID = @CHANGEAGENTID
                    ,DATECHANGED = @CHANGEDATE
                where ID = @ID
                    and (
                        DESIGNATIONID != @DESIGNATIONID or
                        TYPECODE != 0 or
                        APPLICATIONCODE != 7);

                exec dbo.USP_REVENUESPLIT_GETCAMPAIGNS_UPDATEFROMXML @ID, @CAMPAIGNS, @CHANGEAGENTID;

                if dbo.UFN_REVENUESPLIT_MATCHEDBYDONORCHALLENGE(@ID) = 1
                begin
                    --If the new rows do not have RECOGNITIONCREDITFKID or ID they won't be added (e.g. if credits were reset)

                    set @RECOGNITIONCREDITS = (select [AMOUNT], [BASECURRENCYID], [CONSTITUENT], [CONSTITUENTID], [DESIGNATION], [DESIGNATIONID], [DONOR], [EFFECTIVEDATE], [GROSSAMOUNT], 
                                                                            case when RECOGNITIONCREDITFKID is null and ID is null then newid() else ID end [ID], 
                                                                            [RECOGNITIONTYPE], [REVENUERECOGNITIONTYPECODEID],
                                                                            case when RECOGNITIONCREDITFKID is null then @ID else RECOGNITIONCREDITFKID end [RECOGNITIONCREDITFKID],
                                                                            case when RECOGNITIONCREDITFKID is null then 0 else DONORCHALLENGERECOGNITIONTYPECODE end [DONORCHALLENGERECOGNITIONTYPECODE] 
                                                                        from dbo.UFN_RECOGNITIONCREDIT_DONORCHALLENGE_GETRECOGNITIONS_FROMITEMLISTXML(@RECOGNITIONCREDITS)
                                                                        order by EFFECTIVEDATE asc, CONSTITUENT asc
                                                                        for xml raw('ITEM'),type,elements,root('RECOGNITIONS'),BINARY BASE64)
                    set @RECOGNITIONCREDITS = dbo.UFN_RECOGNITIONCREDIT_DONORCHALLENGE_CONVERTAMOUNTSINXML(@RECOGNITIONCREDITS, @BASECURRENCYID, @BASETOORGANIZATIONEXCHANGERATEID);
                    exec dbo.USP_RECOGNITIONCREDIT_DONORCHALLENGE_GETRECOGNITIONS_CUSTOMUPDATEFROMXML @ID, @RECOGNITIONCREDITS, @CHANGEAGENTID;
                end
                else
                begin
                set @RECOGNITIONCREDITS = dbo.UFN_REVENUERECOGNITION_CONVERTAMOUNTSINXML(@RECOGNITIONCREDITS,@BASECURRENCYID, @BASETOORGANIZATIONEXCHANGERATEID);
                exec dbo.USP_REVENUE_GETRECOGNITIONS_2_UPDATEFROMXML @ID, @RECOGNITIONCREDITS, @CHANGEAGENTID;
                end

                exec dbo.USP_REVENUE_GETSOLICITORS_UPDATEFROMXML @ID, @SOLICITORS, @CHANGEAGENTID;

                exec dbo.USP_REVENUECATEGORY_ADDEDIT @ID, @CATEGORYCODEID, @CHANGEAGENTID;