USP_RESERVATIONSECURITYDEPOSITPAYMENT_DELETE

Deletes a reservation security deposit payment.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


        CREATE procedure dbo.USP_RESERVATIONSECURITYDEPOSITPAYMENT_DELETE
            (
                @ID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier = null
            )
            as begin
                declare @REVENUEID uniqueidentifier;
                declare @STATUSCODE tinyint;
                declare @SALESORDERID uniqueidentifier;
                declare @SALESMETHOD tinyint;
                declare @PAYMENTAMOUNT money
                declare @CURRENTDATE datetime;
                declare @RECONCILIATIONID uniqueidentifier;

                set @CURRENTDATE = getdate();

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

                select 
                    @STATUSCODE = [SALESORDER].[STATUSCODE],
                    @REVENUEID = [RESERVATIONSECURITYDEPOSITPAYMENT].[PAYMENTID],
                    @SALESORDERID = [RESERVATIONSECURITYDEPOSITPAYMENT].[RESERVATIONID],
                    @SALESMETHOD = [SALESORDER].[SALESMETHODTYPECODE],
                    @PAYMENTAMOUNT = [RESERVATIONSECURITYDEPOSITPAYMENT].[AMOUNT],
                    @RECONCILIATIONID = [RESERVATIONSECURITYDEPOSITPAYMENT].RECONCILIATIONID
                from dbo.[SALESORDER]
                inner join dbo.[RESERVATIONSECURITYDEPOSITPAYMENT] 
                    on [SALESORDER].[ID] = [RESERVATIONSECURITYDEPOSITPAYMENT].[RESERVATIONID]
                where [RESERVATIONSECURITYDEPOSITPAYMENT].[ID] = @ID

                --check deletion rules, if any

                if @STATUSCODE = 1
                    begin
                        raiserror('Payments cannot be deleted from completed sales orders.', 13, 1);
                        return 0;                    
                    end

                if @RECONCILIATIONID is not null
                begin
                    raiserror('Reconciled payments cannot be deleted.', 13, 1);
                    return 0;                    
                end

                -- change security deposit payment status 

                if dbo.UFN_RESERVATION_GETSECURITYDEPOSITAMOUNTDUE(@SALESORDERID) + @PAYMENTAMOUNT > 0
                    update dbo.RESERVATION set SECURITYDEPOSITSTATUSCODE = 0 where RESERVATION.ID = @SALESORDERID;

                -- use the system generated delete routine to allow proper recording of the deleting agent

                exec dbo.USP_REVENUE_DELETE @REVENUEID, @CHANGEAGENTID

                return 0;

            end