USP_DATAFORMTEMPLATE_VIEW_RESERVATION_DEPOSIT

The load procedure used by the view dataform template "Reservation Deposit Due Date View Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@DEPOSITREQUIRED bit INOUT Deposit required
@DEPOSITDUEDATE date INOUT Due date
@PASTDUE bit INOUT Past due
@DEPOSITPAIDDATE date INOUT Received
@DEPOSITPAID bit INOUT DEPOSITPAID
@DEPOSITAMOUNT money INOUT Amount
@BALANCE money INOUT Balance
@DAYSPASTDUE int INOUT Days past due
@RECALCULATEDEPOSIT money INOUT

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_RESERVATION_DEPOSIT
(
    @ID uniqueidentifier,
    @DATALOADED bit = 0 output,
    @DEPOSITREQUIRED bit = null output,
    @DEPOSITDUEDATE date = null output,
    @PASTDUE bit = null output,
    @DEPOSITPAIDDATE date = null output,
    @DEPOSITPAID bit = null output,
    @DEPOSITAMOUNT money = null output,
    @BALANCE money = null output,
    @DAYSPASTDUE integer = null output,
    @RECALCULATEDEPOSIT money = null output
)
as
    set nocount on;

    set @DATALOADED = 0;

    declare @CURRENTDATE date;
    set @CURRENTDATE = getdate();

    declare @AMOUNTPAID money;
    declare @AMOUNTREFUNDED money;

    select
        @DATALOADED = 1,
        @DEPOSITREQUIRED = RESERVATION.DEPOSITREQUIRED,
        @DEPOSITDUEDATE = RESERVATION.DEPOSITDUEDATE,
        @DEPOSITAMOUNT = RESERVATION.DEPOSITAMOUNT,
        @AMOUNTPAID = TOTALS.AMOUNTPAID,
        @AMOUNTREFUNDED = TOTALS.REFUNDS
    from
        dbo.RESERVATION
    outer apply
        dbo.UFN_SALESORDER_TOTALS(RESERVATION.ID) as TOTALS
    where
        RESERVATION.ID = @ID;


    set @BALANCE = @DEPOSITAMOUNT - @AMOUNTPAID + @AMOUNTREFUNDED;

    if @BALANCE < 0 begin
        set @BALANCE = 0;
    end

    if @DEPOSITREQUIRED = 1 begin
        set @DEPOSITPAID = dbo.UFN_RESERVATION_ISDEPOSITPAID(@ID);

        if @DEPOSITPAID = 1 begin
            select @DEPOSITPAIDDATE = dbo.UFN_RESERVATION_GETDEPOSITPAIDDATE(@ID);
            set @PASTDUE = 0;
        end
        else if @DEPOSITDUEDATE < @CURRENTDATE begin
            set @PASTDUE = 1;
            set @DAYSPASTDUE = datediff(day,@DEPOSITDUEDATE, @CURRENTDATE);
        end
    end

    declare @DEPOSITTYPE int;
    declare @DEPOSITPERCENT decimal(5,2);
    declare @DEPOSITREQUIREDDEFAULT bit;
    declare @TEMPRECALCULATEDEPOSIT money;

    select top 1
        @DEPOSITPERCENT = DEPOSITPERCENT,
        @DEPOSITTYPE = DEPOSITTYPECODE,
        @DEPOSITREQUIREDDEFAULT = DEPOSITREQUIRED
    from
        dbo.GROUPSALESDEFAULT;

    set @RECALCULATEDEPOSIT = 0;

    if @DEPOSITTYPE = 1 and @DEPOSITREQUIREDDEFAULT = 1 and exists (select 1 from dbo.SALESORDER where SALESORDER.STATUSCODE not in (1,5) and SALESORDER.ID = @ID) begin
        set @TEMPRECALCULATEDEPOSIT = round(dbo.UFN_SALESORDER_TOTAL(@ID) * @DEPOSITPERCENT * .01, 2);

        if @DEPOSITAMOUNT <> @TEMPRECALCULATEDEPOSIT begin
            set @RECALCULATEDEPOSIT = @TEMPRECALCULATEDEPOSIT;
        end
    end

    return 0;