USP_DATAFORMTEMPLATE_EDIT_PLEDGEPAYMENTDETAILS

The save procedure used by the edit dataform template "Pledge Payment Details Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@PAYMENTMETHODCODE tinyint IN Payment method
@AUTOPAY bit IN Pay automatically by:
@CARDHOLDERNAME nvarchar(255) IN Name on card
@CREDITCARDNUMBER nvarchar(20) IN Card number
@CREDITTYPECODEID uniqueidentifier IN Card type
@EXPIRESON UDT_FUZZYDATE IN Expires on
@REFERENCEDATE UDT_FUZZYDATE IN Reference date
@REFERENCENUMBER nvarchar(20) IN Reference number
@ACCOUNTID uniqueidentifier IN Account
@CREDITCARDTOKEN uniqueidentifier IN Card token

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PLEDGEPAYMENTDETAILS
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @PAYMENTMETHODCODE tinyint,
                        @AUTOPAY bit,
                        @CARDHOLDERNAME nvarchar(255),
                        @CREDITCARDNUMBER nvarchar(20),
                        @CREDITTYPECODEID uniqueidentifier,
                        @EXPIRESON dbo.UDT_FUZZYDATE,
                        @REFERENCEDATE dbo.UDT_FUZZYDATE,
                        @REFERENCENUMBER nvarchar(20),
                        @ACCOUNTID uniqueidentifier,
                        @CREDITCARDTOKEN uniqueidentifier
                    )    
                    as
                    set nocount on;

                    declare @CURRENTDATE datetime;

                    begin try
                        if @AUTOPAY = 0
                            set @PAYMENTMETHODCODE = 9;

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

                        set @CURRENTDATE = getdate();

                        if @PAYMENTMETHODCODE <> 2 --Credit card

                            set @CREDITCARDTOKEN = null

                        if @CREDITCARDTOKEN is null    
                            update dbo.REVENUESCHEDULE set
                                CREDITCARDID = null,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where ID = @ID

                        update dbo.REVENUEPAYMENTMETHOD
                            set PAYMENTMETHODCODE = @PAYMENTMETHODCODE,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                        where REVENUEID = @ID;

                        declare @NEWCREDITCARDID uniqueidentifier

                        if @PAYMENTMETHODCODE = 2 --Credit debit

                        begin
                            declare @PREVIOUSCREDITCARDID uniqueidentifier
                            select @PREVIOUSCREDITCARDID = CREDITCARDID
                            from dbo.REVENUESCHEDULE where ID = @ID

                            exec dbo.USP_CREDITCARD_SAVE
                                    @ID = @NEWCREDITCARDID output,
                                    @CREDITCARDTOKEN = @CREDITCARDTOKEN,
                                    @CARDHOLDERNAME = @CARDHOLDERNAME,
                                    @CREDITCARDPARTIALNUMBER = @CREDITCARDNUMBER,
                                    @CREDITTYPECODEID = @CREDITTYPECODEID,
                                    @EXPIRESON = @EXPIRESON,
                                    @CHANGEAGENTID = @CHANGEAGENTID,
                                    @CURRENTDATE = @CURRENTDATE,
                                    @PREVIOUSCREDITCARDID = @PREVIOUSCREDITCARDID,
                                    @OWNINGRECORDID = @ID
                        end

                        update dbo.REVENUESCHEDULE set
                            CREDITCARDID = @NEWCREDITCARDID,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where ID = @ID

                        if @PAYMENTMETHODCODE = 3 --Direct debit

                        begin
                            update dbo.REVENUESCHEDULEDIRECTDEBITPAYMENT
                                set 
                                    REFERENCEDATE = @REFERENCEDATE,
                                    REFERENCENUMBER = @REFERENCENUMBER,
                                    CONSTITUENTACCOUNTID = @ACCOUNTID,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                                where ID = @ID;

                            if @@ROWCOUNT = 0
                                insert into dbo.REVENUESCHEDULEDIRECTDEBITPAYMENT
                                    (ID, REFERENCEDATE, REFERENCENUMBER, CONSTITUENTACCOUNTID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                    values (@ID, @REFERENCEDATE, @REFERENCENUMBER, @ACCOUNTID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
                        end
                        else
                            exec dbo.USP_REVENUESCHEDULEDIRECTDEBITPAYMENT_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID;

                    end try
                    begin catch
                        exec dbo.USP_RAISE_ERROR;

                        close symmetric key sym_BBInfinity;

                        return 1;
                    end catch

                    return 0;