USP_PAYMENT_EDIT

Stored procedure to save a payment.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@TYPECODE tinyint IN
@DATE datetime IN
@AMOUNT money IN
@PAYMENTMETHODCODE tinyint IN
@CHECKDATE UDT_FUZZYDATE IN
@CHECKNUMBER nvarchar(20) IN
@REFERENCEDATE UDT_FUZZYDATE IN
@REFERENCENUMBER nvarchar(20) IN
@CARDHOLDERNAME nvarchar(255) IN
@CREDITCARDNUMBER nvarchar(4) IN
@CREDITTYPECODEID uniqueidentifier IN
@AUTHORIZATIONCODE nvarchar(20) IN
@EXPIRESON UDT_FUZZYDATE IN
@ISSUER nvarchar(100) IN
@NUMBEROFUNITS decimal(20, 3) IN
@SYMBOL nvarchar(25) IN
@MEDIANPRICE decimal(19, 4) IN
@GIFTINKINDSUBTYPECODEID uniqueidentifier IN
@PROPERTYSUBTYPECODEID uniqueidentifier IN
@RECEIPTAMOUNT money IN
@CONSTITUENTACCOUNTID uniqueidentifier IN
@SPLITS xml IN
@FINDERNUMBER bigint IN
@SOURCECODE nvarchar(50) IN
@APPEALID uniqueidentifier IN
@BENEFITS xml IN
@BENEFITSWAIVED bit IN
@GIVENANONYMOUSLY bit IN
@MAILINGID uniqueidentifier IN
@CHANNELCODEID uniqueidentifier IN
@DONOTACKNOWLEDGE bit IN
@DONOTRECEIPT bit IN
@CHANGEDATE datetime IN

Definition

Copy


            CREATE procedure dbo.USP_PAYMENT_EDIT
            (
                @ID uniqueidentifier,
                @CURRENTAPPUSERID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier,
                @TYPECODE tinyint,
                @DATE datetime,
                @AMOUNT money,                    
                @PAYMENTMETHODCODE tinyint,
                @CHECKDATE dbo.UDT_FUZZYDATE,
                @CHECKNUMBER nvarchar(20),
                @REFERENCEDATE dbo.UDT_FUZZYDATE,
                @REFERENCENUMBER nvarchar(20),
                @CARDHOLDERNAME nvarchar(255),
                @CREDITCARDNUMBER nvarchar(4),
                @CREDITTYPECODEID uniqueidentifier,
                @AUTHORIZATIONCODE nvarchar(20),
                @EXPIRESON dbo.UDT_FUZZYDATE,
                @ISSUER nvarchar(100),
                @NUMBEROFUNITS decimal(20,3),
                @SYMBOL nvarchar(25),
                @MEDIANPRICE decimal(19,4),
                @GIFTINKINDSUBTYPECODEID uniqueidentifier,
                @PROPERTYSUBTYPECODEID uniqueidentifier,
                @RECEIPTAMOUNT money,
                @CONSTITUENTACCOUNTID uniqueidentifier,
                @SPLITS xml,
                @FINDERNUMBER bigint,
                @SOURCECODE nvarchar(50),
                @APPEALID uniqueidentifier,
                @BENEFITS xml,
                @BENEFITSWAIVED bit,
                @GIVENANONYMOUSLY bit,
                @MAILINGID uniqueidentifier,
                @CHANNELCODEID uniqueidentifier,
                @DONOTACKNOWLEDGE bit,
                @DONOTRECEIPT bit,
                @CHANGEDATE datetime = null
            )
            as
            set nocount on;

            declare @SALEDATE datetime;
            declare @SALEAMOUNT money;
            declare @BROKERFEE money;
            declare @SALEPOSTDATE datetime;
            declare @SALEPOSTSTATUSCODE tinyint;

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

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

            if @AMOUNT < 0
                raiserror('The amount cannot be negative.', 13, 1);

            if @PAYMENTMETHODCODE = 5
                select top 1
                    @SALEDATE = SALEDATE,
                    @SALEAMOUNT = SALEAMOUNT,
                    @BROKERFEE = BROKERFEE,
                    @SALEPOSTDATE = SALEPOSTDATE,
                    @SALEPOSTSTATUSCODE = SALEPOSTSTATUSCODE
                from dbo.PROPERTYDETAIL
                where 
                    PROPERTYDETAIL.ID = @ID and
                    ISSOLD = 1

            declare @OLDAMOUNT money;

            select @OLDAMOUNT = AMOUNT
            from dbo.REVENUE
            where ID = @ID;

            /*JamesWill CR270391-031907 2007/03/19 Validate to make sure that the new amount does not overpay a commitment*/
            if not @TYPECODE in (0, 5) --You can't overpay gifts or recurring gifts, so it doesn't apply here

            begin
                declare @COMMITMENTID uniqueidentifier;
                declare @BALANCE money;

                if @TYPECODE in (4, 8) --Pledge Payment, Matching Gift Pledge Payment

                begin
                    select @COMMITMENTID = PLEDGEID
                    from dbo.INSTALLMENTPAYMENT where PAYMENTID = @ID;

                    set @BALANCE = dbo.UFN_PLEDGE_GETBALANCE(@COMMITMENTID);
                end
                else if @TYPECODE = 6 --Event registration fee

                begin
                    select @COMMITMENTID = REGISTRANTID
                    from dbo.EVENTREGISTRANTPAYMENT where PAYMENTID = @ID;

                    set @BALANCE = dbo.UFN_EVENTREGISTRANT_GETBALANCE(@COMMITMENTID);
                end
                else
                    set @BALANCE = 0; --Unknown


                set @BALANCE = @BALANCE + @OLDAMOUNT; --The original amount for this revenue no longer applies. 

                set @BALANCE = @BALANCE - @AMOUNT
                if @BALANCE < 0
                    raiserror('The amount applied towards an application cannot be greater than its balance.', 13, 1);
            end

            if not (@TYPECODE in (6, 4, 8))-- update splits if not Event Fee\Pledge\MG payment

                exec dbo.USP_REVENUESPLIT_VALIDATESPLITS @SPLITS, @AMOUNT;

            /* Validate payment information */

            if @FINDERNUMBER is null
                set @FINDERNUMBER = 0;

      if @OLDAMOUNT <> @AMOUNT 
        -- make sure we aren't trying to modify revenue in a locked/closed deposit/bank

        exec dbo.USP_EDIT_REVENUE_VALIDATE_DEPOSIT_STATUS @ID;

            update dbo.REVENUE
            set    AMOUNT = @AMOUNT
                RECEIPTAMOUNT = @RECEIPTAMOUNT
                FINDERNUMBER = @FINDERNUMBER,
                SOURCECODE = @SOURCECODE
                APPEALID = @APPEALID
                BENEFITSWAIVED = @BENEFITSWAIVED,
                GIVENANONYMOUSLY = @GIVENANONYMOUSLY
                MAILINGID = @MAILINGID
                CHANNELCODEID = @CHANNELCODEID
                DONOTACKNOWLEDGE = @DONOTACKNOWLEDGE
                DATE = @DATE,
                DONOTRECEIPT = @DONOTRECEIPT,
                CHANGEDBYID = @CHANGEAGENTID
                DATECHANGED = @CHANGEDATE 
            where ID = @ID;


            if not (@TYPECODE in (6, 4, 8))-- update splits if not Event Fee\Pledge\MG payment

                exec dbo.USP_REVENUE_GETSPLITS_UPDATEFROMXML @ID, @SPLITS, @CHANGEAGENTID, @CHANGEDATE;

            -- update benefits

            exec dbo.USP_REVENUE_GETBENEFITS_UPDATEFROMXML @ID, @BENEFITS, @CHANGEAGENTID, @CHANGEDATE;

            -- Update solicitors

            exec dbo.USP_REVENUE_UPDATESOLICITORS @ID, @CHANGEAGENTID, @CHANGEDATE;

            -- update the payment information for each revenue record in the transaction

            exec dbo.USP_REVENUE_UPDATEPAYMENTDETAILS @ID, @PAYMENTMETHODCODE, @CHECKDATE, @CHECKNUMBER, @CONSTITUENTACCOUNTID, @REFERENCEDATE, @REFERENCENUMBER, @CARDHOLDERNAME, @CREDITCARDNUMBER, @CREDITTYPECODEID, @AUTHORIZATIONCODE, @EXPIRESON, @ISSUER, @NUMBEROFUNITS, @SYMBOL, @MEDIANPRICE, @PROPERTYSUBTYPECODEID, @GIFTINKINDSUBTYPECODEID, @SALEDATE, @SALEAMOUNT, @BROKERFEE, @SALEPOSTDATE, @SALEPOSTSTATUSCODE, @CHANGEAGENTID,@CHANGEDATE,@ORIGINALPAYMENTMETHODCODE=@PAYMENTMETHODCODE;

            /*Special handling for some payment types*/
            if @TYPECODE = 4 or @TYPECODE = 8 --Pledge\MG payment

                exec dbo.USP_PLEDGEPAYMENT_EDIT @ID, @AMOUNT, @CHANGEAGENTID, @CHANGEDATE

            if @TYPECODE = 5 --Recurring gift payment

                exec dbo.USP_RECURRINGPAYMENT_EDIT @ID, @AMOUNT, @CHANGEAGENTID, @CHANGEDATE

            return 0;