USP_DATAFORMTEMPLATE_EDIT_RESERVATIONSECURITYDEPOSITCREDIT

The save procedure used by the edit dataform template "Reservation Security Deposit Refund Edit Data 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.
@AMOUNTCHARGED money IN Amount charged
@AMOUNTPAID money IN Amount paid
@WITHHOLDREASONCODEID uniqueidentifier IN Reason
@AMOUNTWITHHELD money IN Amount
@REFUNDAMOUNT money IN Refund amount
@REFUNDMETHOD int IN Refund method
@COMMENT nvarchar(max) IN Comment
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.

Definition

Copy


create procedure dbo.USP_DATAFORMTEMPLATE_EDIT_RESERVATIONSECURITYDEPOSITCREDIT (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @AMOUNTCHARGED money,
    @AMOUNTPAID money,
    @WITHHOLDREASONCODEID uniqueidentifier,
    @AMOUNTWITHHELD money,
    @REFUNDAMOUNT money,
    @REFUNDMETHOD int,
    @COMMENT nvarchar(max),
    @CURRENTAPPUSERID uniqueidentifier
)
as

set nocount on;

declare  @CREDITID uniqueidentifier = newid()

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

declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()

begin try

    declare @AMOUNTREFUNDING money

    if @WITHHOLDREASONCODEID is null
        set @AMOUNTREFUNDING = @AMOUNTPAID
    else
        set @AMOUNTREFUNDING = @AMOUNTPAID - @AMOUNTWITHHELD

    if @WITHHOLDREASONCODEID is null and @AMOUNTREFUNDING > 0
    begin
        -- Refund

        declare @CONSTITUENTID uniqueidentifier
        select @CONSTITUENTID = [CONSTITUENTID] from dbo.[SALESORDER] where [ID] = @ID

        insert into dbo.CREDIT
        (
            ID,
            SALESORDERID,
            AMOUNT,
            COMMENT,
            CREDITREASONCODEID,
            TRANSACTIONDATE,
            CONSTITUENTID,
            APPUSERID,
            ADDEDBYID,
            CHANGEDBYID,
            DATEADDED,
            DATECHANGED
        )
        values
        (
            @CREDITID,
            @ID,
            @AMOUNTREFUNDING,
            @COMMENT,
            case @WITHHOLDREASONCODEID 
                when '00000000-0000-0000-0000-000000000000' then null
                else @WITHHOLDREASONCODEID
            end,
            @CURRENTDATE,
            @CONSTITUENTID,
            @CURRENTAPPUSERID,
            @CHANGEAGENTID
            @CHANGEAGENTID,
            @CURRENTDATE
            @CURRENTDATE
        );
    end

    -- Update security deposit status

    if @AMOUNTREFUNDING = @AMOUNTPAID
        update dbo.RESERVATION set SECURITYDEPOSITSTATUSCODE = 2, DATECHANGED = @CURRENTDATE, CHANGEDBYID = @CHANGEAGENTID
        where RESERVATION.ID = @ID
    else if @AMOUNTREFUNDING = 0
        update dbo.RESERVATION set SECURITYDEPOSITSTATUSCODE = 3, DATECHANGED = @CURRENTDATE, CHANGEDBYID = @CHANGEAGENTID
        where RESERVATION.ID = @ID
    else if @AMOUNTREFUNDING < @AMOUNTPAID
        update dbo.RESERVATION set SECURITYDEPOSITSTATUSCODE = 4, DATECHANGED = @CURRENTDATE, CHANGEDBYID = @CHANGEAGENTID
        where RESERVATION.ID = @ID

end try

begin catch
    exec dbo.USP_RAISE_ERROR
    return 1
end catch

return 0;