USP_RECEIVABLEPAYMENT_EDIT

Allows for the editing of a given receivable payment.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@AMOUNT money IN
@PAYMENTDATE datetime IN
@POSTSTATUSCODE tinyint IN
@POSTDATE datetime IN
@PAYMENTMETHODCODE tinyint IN
@CONSTITUENTACCOUNTID uniqueidentifier IN
@CHECKDATE UDT_FUZZYDATE IN
@CHECKNUMBER nvarchar(20) IN
@REFERENCEDATE UDT_FUZZYDATE IN
@REFERENCENUMBER nvarchar(20) IN
@CARDHOLDERNAME nvarchar(255) IN
@CREDITCARDPARTIALNUMBER nvarchar(4) IN
@CREDITTYPECODEID uniqueidentifier IN
@EXPIRESON UDT_FUZZYDATE IN
@AUTHORIZATIONCODE nvarchar(20) IN
@DIRECTDEBITRESULTCODE nvarchar(10) IN
@OTHERPAYMENTMETHODCODEID uniqueidentifier IN
@RECEIVABLEPAYMENTID nvarchar(60) IN

Definition

Copy


            CREATE procedure dbo.USP_RECEIVABLEPAYMENT_EDIT
            (
                @ID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier,
                @AMOUNT money = 0,
                @PAYMENTDATE datetime = null,
                @POSTSTATUSCODE tinyint = 1,
                @POSTDATE datetime = null,
                @PAYMENTMETHODCODE tinyint = 1,
                @CONSTITUENTACCOUNTID uniqueidentifier = null,
                @CHECKDATE dbo.UDT_FUZZYDATE = '00000000',
                @CHECKNUMBER nvarchar(20) = '',
                @REFERENCEDATE dbo.UDT_FUZZYDATE = '00000000',
                @REFERENCENUMBER nvarchar(20) = '',
                @CARDHOLDERNAME nvarchar(255) = '',
                @CREDITCARDPARTIALNUMBER nvarchar(4) = '',
                @CREDITTYPECODEID uniqueidentifier = null,
                @EXPIRESON dbo.UDT_FUZZYDATE = '00000000',
                @AUTHORIZATIONCODE nvarchar(20) = '',
                @DIRECTDEBITRESULTCODE nvarchar(10) = '',
                @OTHERPAYMENTMETHODCODEID uniqueidentifier = null,
                @RECEIVABLEPAYMENTID nvarchar(60) = null
            )
            as
            begin

            set nocount on;

            begin try
                begin tran   
                -- Setup the basic information

                      if (@CHANGEAGENTID is null)
                      begin
                          exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
                      end

                      declare @CURRENTDATE datetime;        
                      set @CURRENTDATE = GetDate();

                -- Setup the next receivable payment ID

                if ((@RECEIVABLEPAYMENTID is null) or (len(@RECEIVABLEPAYMENTID) = 0))
                begin
                    set @RECEIVABLEPAYMENTID = dbo.UFN_FINANCIALTRANSACTION_GETNEXTFINANCIALTRANSACTIONID(105);
                end

                declare @CONSTITUENTID uniqueidentifier;
                select @CONSTITUENTID = CONSTITUENTID
                from dbo.FINANCIALTRANSACTION
                where ID = @ID;

                -- Update the financial transaction

                exec dbo.USP_FINANCIALTRANSACTION_EDIT @ID=@ID, @CHANGEAGENTID=@CHANGEAGENTID, @CONSTITUENTID=@CONSTITUENTID, @USERDEFINEDID=@RECEIVABLEPAYMENTID, @AMOUNT=@AMOUNT, @DATE=@PAYMENTDATE, @POSTDATE=@POSTDATE, @POSTSTATUSCODE=@POSTSTATUSCODE;

                -- Update the basic line items with the new description

                update dbo.FINANCIALTRANSACTIONLINEITEM
                    set TRANSACTIONAMOUNT = @AMOUNT,
                        BASEAMOUNT = @AMOUNT,
                        ORGAMOUNT = @AMOUNT,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE,
                        POSTDATE = @POSTDATE,
                        POSTSTATUSCODE = @POSTSTATUSCODE
                from dbo.FINANCIALTRANSACTIONLINEITEM
                where (FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID) and 
                        (FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0) and
                        (FINANCIALTRANSACTIONLINEITEM.DELETEDON is null);

                -- Get the current payment method

                declare @CURRENTPAYMENTMETHODCODE tinyint;
                select @CURRENTPAYMENTMETHODCODE = PAYMENTMETHODCODE
                from dbo.RECEIVABLEPAYMENT
                where ID = @ID;

                -- Check to see if we are changing payment methods

                if (@CURRENTPAYMENTMETHODCODE != @PAYMENTMETHODCODE)
                begin
                    -- Since we are changing payment methods remove the old payment method information

                    if (@CURRENTPAYMENTMETHODCODE = 1) -- Check

                    begin
                        delete from dbo.RECEIVABLEPAYMENTCHECK
                        where ID = @ID;
                    end
                    else if (@CURRENTPAYMENTMETHODCODE = 2) -- Credit card

                    begin
                        delete from dbo.RECEIVABLEPAYMENTCREDITCARD
                        where ID = @ID;
                    end
                    else if (@CURRENTPAYMENTMETHODCODE = 3) -- Direct debit

                    begin
                        delete from dbo.RECEIVABLEPAYMENTDIRECTDEBIT
                        where ID = @ID;
                    end
                    else if (@CURRENTPAYMENTMETHODCODE = 10) -- Other

                    begin
                        delete from dbo.RECEIVABLEPAYMENTOTHERMETHOD
                        where ID = @ID;
                    end
                end

                -- Update into the receivable payment

                update dbo.RECEIVABLEPAYMENT
                        set PAYMENTMETHODCODE = @PAYMENTMETHODCODE,
                            REFERENCEDATE = @REFERENCEDATE,
                            REFERENCENUMBER = @REFERENCENUMBER,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                where ID = @ID;

                -- Based on the payment method save to a different "child" table

                if (@PAYMENTMETHODCODE = 1) -- Check

                begin
                    if (@CURRENTPAYMENTMETHODCODE != @PAYMENTMETHODCODE)
                    begin
                        -- Insert the extra check information

                        insert into dbo.RECEIVABLEPAYMENTCHECK
                            (ID, CHECKNUMBER, CHECKDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        values
                            (@ID, @CHECKNUMBER, @CHECKDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
                    end
                    else
                    begin
                        -- Update the extra check information

                        update dbo.RECEIVABLEPAYMENTCHECK
                                set CHECKNUMBER = @CHECKNUMBER,
                                    CHECKDATE = @CHECKDATE,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                        where ID = @ID;
                    end
                end
                else if (@PAYMENTMETHODCODE = 2) -- Credit card

                begin
                    if (@CURRENTPAYMENTMETHODCODE != @PAYMENTMETHODCODE)
                    begin
                        -- Insert the extra credit card information

                        insert into dbo.RECEIVABLEPAYMENTCREDITCARD
                            (ID, CARDHOLDERNAME, CREDITTYPECODEID, CREDITCARDPARTIALNUMBER, EXPIRESON, AUTHORIZATIONCODE, TRANSACTIONID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        values
                            (@ID, @CARDHOLDERNAME, @CREDITTYPECODEID, @CREDITCARDPARTIALNUMBER, @EXPIRESON, @AUTHORIZATIONCODE, null, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);                    
                    end
                    else
                    begin
                        -- Update the extra credit card information

                        update dbo.RECEIVABLEPAYMENTCREDITCARD
                                set CARDHOLDERNAME = @CARDHOLDERNAME,
                                    CREDITTYPECODEID = @CREDITTYPECODEID,
                                    CREDITCARDPARTIALNUMBER = @CREDITCARDPARTIALNUMBER,
                                    AUTHORIZATIONCODE = @AUTHORIZATIONCODE,
                                    EXPIRESON = @EXPIRESON,
                                    CHANGEDBYID = @CHANGEAGENTID
                                    DATECHANGED = @CURRENTDATE
                        where ID = @ID;
                    end
                end
                else if (@PAYMENTMETHODCODE = 3) -- Direct debit

                begin
                    if (@CURRENTPAYMENTMETHODCODE != @PAYMENTMETHODCODE)
                    begin
                        -- Insert the extra direct debit information

                        insert into dbo.RECEIVABLEPAYMENTDIRECTDEBIT
                            (ID, DIRECTDEBITRESULTCODE, CONSTITUENTACCOUNTID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        values
                            (@ID, @DIRECTDEBITRESULTCODE, @CONSTITUENTACCOUNTID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);                    
                    end
                    else
                    begin
                        -- Update the extra direct debit information

                        update dbo.RECEIVABLEPAYMENTDIRECTDEBIT
                                set DIRECTDEBITRESULTCODE = @DIRECTDEBITRESULTCODE,
                                    CONSTITUENTACCOUNTID = @CONSTITUENTACCOUNTID,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                        where ID = @ID;
                    end
                end
                else if (@PAYMENTMETHODCODE = 10) -- Other

                begin
                    if (@CURRENTPAYMENTMETHODCODE != @PAYMENTMETHODCODE)
                    begin
                        -- Insert the extra direct debit information

                        insert into dbo.RECEIVABLEPAYMENTOTHERMETHOD
                            (ID, OTHERPAYMENTMETHODCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        values
                            (@ID, @OTHERPAYMENTMETHODCODEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);                    
                    end
                    else
                    begin
                        -- Update the extra direct debit information

                        update dbo.RECEIVABLEPAYMENTOTHERMETHOD
                                set OTHERPAYMENTMETHODCODEID = @OTHERPAYMENTMETHODCODEID,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                        where ID = @ID;
                    end
                end

              end try
                begin catch
                rollback tran
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch
                commit tran
                return 0;
            end