USP_DATAFORMTEMPLATE_VIEW_RESERVATIONSUMMARY

The load procedure used by the view dataform template "Reservation Summary 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.
@NAME nvarchar(100) INOUT Reservation name
@ARRIVALDATE datetime INOUT Visit date
@CONTACTCONSTITUENTNAME nvarchar(80) INOUT Contact
@CONTACTADDRESS nvarchar(300) INOUT CONTACTADDRESS
@CONTACTPHONENUMBER nvarchar(100) INOUT CONTACTPHONENUMBER
@CONTACTEMAILADDRESS UDT_EMAILADDRESS INOUT CONTACTEMAILADDRESS
@COMMENTS nvarchar(1000) INOUT Comments
@AMOUNTDUE money INOUT Balance
@TOTALVISITORS int INOUT Total visitors
@STATUS nvarchar(20) INOUT Status
@DEPOSITREQUIRED bit INOUT DEPOSITREQUIRED
@DEPOSITDUEDATE date INOUT Reservation deposit due
@FINALDUEDATE date INOUT Order balance due
@DEPOSITPASTDUE bit INOUT DEPOSITPASTDUE
@FINALPAYMENTPASTDUE bit INOUT FINALPAYMENTPASTDUE
@FINALCOUNTREQUIRED bit INOUT FINALCOUNTREQUIRED
@FINALCOUNTRECEIVED bit INOUT FINALCOUNTRECEIVED
@FINALCOUNTPASTDUE bit INOUT FINALCOUNTPASTDUE
@FINALCOUNTRECEIVEDDATE date INOUT Final count received
@FINALCOUNTDUEDATE date INOUT Final count due
@CONTRACTREQUIRED bit INOUT CONTRACTREQUIRED
@CONTRACTRECEIVED bit INOUT CONTRACTRECEIVED
@CONTRACTDUEDATE date INOUT Contract due
@CONTRACTPASTDUE bit INOUT CONTRACTPASTDUE
@CONTRACTRECEIVEDDATE date INOUT Contract received
@PRICING nvarchar(100) INOUT Pricing structure
@RATESCALE nvarchar(100) INOUT Rate scale
@CONTACTDONOTMAIL bit INOUT CONTACTDONOTMAIL
@CONTACTDONOTCALL bit INOUT CONTACTDONOTCALL
@CONTACTDONOTEMAIL bit INOUT CONTACTDONOTEMAIL
@DEPOSITPAID bit INOUT Deposit has been paid
@DEPOSITPAIDDATE date INOUT Reservation deposit paid
@RESERVATIONTOTAL money INOUT Total
@AMOUNTPAID money INOUT Amount paid
@FINALPAYMENTRECEIVED bit INOUT Final payment received
@FINALPAYMENTRECEIVEDDATE date INOUT Order balance paid
@HASINVALIDDEPOSITAMOUNT bit INOUT HASINVALIDDEPOSITAMOUNT
@STATUSCODE tinyint INOUT STATUSCODE
@SECURITYDEPOSITREQUIRED bit INOUT SECURITYDEPOSITREQUIRED
@SECURITYDEPOSITDUEDATE date INOUT Security deposit due
@SECURITYDEPOSITPASTDUE bit INOUT SECURITYDEPOSITPASTDUE
@SECURITYDEPOSITPAID bit INOUT Security deposit has been paid
@SECURITYDEPOSITPAIDDATE date INOUT Security deposit paid
@HASINVALIDSECURITYDEPOSITAMOUNT bit INOUT HASINVALIDSECURITYDEPOSITAMOUNT

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_RESERVATIONSUMMARY
(
    @ID uniqueidentifier,
    @DATALOADED bit = 0 output,
    @NAME nvarchar(100) = null output,
    @ARRIVALDATE datetime = null output,
    @CONTACTCONSTITUENTNAME nvarchar(80) = null output,
    @CONTACTADDRESS nvarchar(300) = null output,
    @CONTACTPHONENUMBER nvarchar(100) = null output,
    @CONTACTEMAILADDRESS dbo.UDT_EMAILADDRESS = null output,
    @COMMENTS nvarchar(1000) = null output,
    @AMOUNTDUE money = null output,
    @TOTALVISITORS int = null output,
    @STATUS nvarchar(20) = null output,
    @DEPOSITREQUIRED bit = null output,
    @DEPOSITDUEDATE date = null output,
    @FINALDUEDATE date = null output,
    @DEPOSITPASTDUE bit = null output,
    @FINALPAYMENTPASTDUE bit = null output,
    @FINALCOUNTREQUIRED bit = null output,
    @FINALCOUNTRECEIVED bit = null output,
    @FINALCOUNTPASTDUE bit = null output,
    @FINALCOUNTRECEIVEDDATE date = null output,
    @FINALCOUNTDUEDATE date = null output,
    @CONTRACTREQUIRED bit = null output,
    @CONTRACTRECEIVED bit = null output,
    @CONTRACTDUEDATE date = null output,
    @CONTRACTPASTDUE bit = null output,
    @CONTRACTRECEIVEDDATE date = null output,
    @PRICING nvarchar(100) = null output,
    @RATESCALE nvarchar(100) = null output,
    @CONTACTDONOTMAIL bit = null output,
    @CONTACTDONOTCALL bit = null output,
    @CONTACTDONOTEMAIL bit = null output,
    @DEPOSITPAID bit = null output,
    @DEPOSITPAIDDATE date = null output,
    @RESERVATIONTOTAL money = null output,
    @AMOUNTPAID money = null output,
    @FINALPAYMENTRECEIVED bit = null output,
    @FINALPAYMENTRECEIVEDDATE date = null output,
    @HASINVALIDDEPOSITAMOUNT bit = null output,
    @STATUSCODE tinyint = null output,
    @SECURITYDEPOSITREQUIRED bit = null output,
    @SECURITYDEPOSITDUEDATE date = null output,
    @SECURITYDEPOSITPASTDUE bit = null output,
    @SECURITYDEPOSITPAID bit = null output,
    @SECURITYDEPOSITPAIDDATE date = null output,
    @HASINVALIDSECURITYDEPOSITAMOUNT bit = null output
)
as
    set nocount on;

    set @DATALOADED = 0;

    declare @CONTACTID uniqueidentifier;
    declare @ADDRESSID uniqueidentifier;
    declare @PHONEID uniqueidentifier;
    declare @EMAILADDRESSID uniqueidentifier;
    declare @DEPOSITAMOUNT money = 0;
    declare @PRICINGCODE bit;
    declare @SECURITYDEPOSITAMOUNT money = 0;

    select
        @DATALOADED = 1,
        @NAME = RESERVATION.NAME,
        @ARRIVALDATE = RESERVATION.ARRIVALDATE,
        @COMMENTS = SALESORDER.COMMENTS,
        @STATUS = SALESORDER.STATUS,
        @CONTACTID = SALESORDER.RECIPIENTID,
        @ADDRESSID = CONTACTRECORDS.ADDRESSID,
        @PHONEID = CONTACTRECORDS.PHONEID,
        @EMAILADDRESSID = CONTACTRECORDS.EMAILADDRESSID,
        @DEPOSITREQUIRED = DEPOSITREQUIRED,
        @DEPOSITAMOUNT = DEPOSITAMOUNT,
        @DEPOSITDUEDATE = DEPOSITDUEDATE,
        @FINALDUEDATE = FINALDUEDATE,
        @DEPOSITPASTDUE = dbo.UFN_RESERVATION_DEPOSITPASTDUE(@ID,getdate()),
        @FINALPAYMENTPASTDUE = dbo.UFN_RESERVATION_FINALPAYMENTPASTDUE(@ID,getdate()),
        @FINALCOUNTREQUIRED = FINALCOUNTREQUIRED,
        @FINALCOUNTDUEDATE = FINALCOUNTDUEDATE,
        @FINALCOUNTRECEIVED = FINALCOUNTRECEIVED,
        @FINALCOUNTRECEIVEDDATE = FINALCOUNTRECEIVEDDATE,
        @CONTRACTREQUIRED = CONTRACTREQUIRED,
        @CONTRACTRECEIVED = CONTRACTRECEIVED,
        @CONTRACTDUEDATE = CONTRACTDUEDATE,
        @PRICINGCODE = PRICINGCODE,
        @PRICING = PRICING,
        @DEPOSITPAID = dbo.UFN_RESERVATION_ISDEPOSITPAID(@ID),
        @DEPOSITPAIDDATE = dbo.UFN_RESERVATION_GETDEPOSITPAIDDATE(@ID),
        @STATUSCODE = SALESORDER.STATUSCODE,
        @SECURITYDEPOSITREQUIRED = SECURITYDEPOSITREQUIRED,
        @SECURITYDEPOSITAMOUNT = SECURITYDEPOSITAMOUNT,
        @SECURITYDEPOSITDUEDATE = SECURITYDEPOSITDUEDATE,
        @SECURITYDEPOSITPASTDUE = case when datediff(d, @SECURITYDEPOSITDUEDATE, getdate()) > 0 and dbo.UFN_RESERVATION_GETSECURITYDEPOSITAMOUNTDUE(@ID) > 0 then 1
                                        else 0 end,
        @SECURITYDEPOSITPAID = case when SECURITYDEPOSITREQUIRED = 1 and dbo.UFN_RESERVATION_GETSECURITYDEPOSITAMOUNTDUE(@ID) <= 0 and SECURITYDEPOSITAMOUNT > 0 then 1
                                        else 0 end,
        @SECURITYDEPOSITPAIDDATE = (select max(PAYMENT.DATEADDED) from dbo.RESERVATIONSECURITYDEPOSITPAYMENT PAYMENT where PAYMENT.RESERVATIONID = @ID),
        @RESERVATIONTOTAL = TOTALS.TOTAL,
        @AMOUNTDUE = TOTALS.BALANCE,
        @AMOUNTPAID = TOTALS.AMOUNTPAID
    from
        dbo.RESERVATION
    inner join
        dbo.SALESORDER on RESERVATION.ID = SALESORDER.ID
    inner join
        dbo.CONSTITUENT on SALESORDER.CONSTITUENTID = CONSTITUENT.ID
    outer apply
        dbo.UFN_SALESORDER_TOTALS(RESERVATION.ID) as TOTALS
    outer apply
        dbo.UFN_SALESORDER_CONTACTRECORDS(RESERVATION.ID) as CONTACTRECORDS
    where
        RESERVATION.ID = @ID;

    if @DATALOADED = 1 begin
        declare @CURRENTDATE date;
        set @CURRENTDATE = getdate()

        set @CONTRACTPASTDUE = 0;

        if @CONTRACTREQUIRED = 1 and @CONTRACTRECEIVED = 0 and @CONTRACTDUEDATE < @CURRENTDATE
            set @CONTRACTPASTDUE = 1;

        set @HASINVALIDDEPOSITAMOUNT = 0
        if @DEPOSITREQUIRED = 1 and @DEPOSITAMOUNT = 0
            set @HASINVALIDDEPOSITAMOUNT = 1

        declare @DEPOSITTYPE int
        declare @DEPOSITPERCENT decimal(5,2)
        declare @SECURITYDEPOSITTYPE int
        declare @SECURITYDEPOSITPERCENT decimal(5,2)
        declare @DEPOSITREQUIREDDEFAULT bit
        declare @SECURITYDEPOSITREQUIREDDEFAULT bit

        select top 1
            @DEPOSITPERCENT = DEPOSITPERCENT,
            @DEPOSITTYPE = DEPOSITTYPECODE,
            @SECURITYDEPOSITTYPE = SECURITYDEPOSITTYPECODE,
            @SECURITYDEPOSITPERCENT = SECURITYDEPOSITPERCENT,
            @DEPOSITREQUIREDDEFAULT = DEPOSITREQUIRED,
            @SECURITYDEPOSITREQUIREDDEFAULT = SECURITYDEPOSITREQUIRED
        from
            dbo.GROUPSALESDEFAULT

        if @DEPOSITTYPE = 1 and @DEPOSITREQUIREDDEFAULT = 1 begin
            if @DEPOSITAMOUNT <> round(@RESERVATIONTOTAL * @DEPOSITPERCENT * .01, 2) and @STATUSCODE not in (1, 5)
                set @HASINVALIDDEPOSITAMOUNT = 1;
        end

        set @HASINVALIDSECURITYDEPOSITAMOUNT = 0
        if @SECURITYDEPOSITREQUIRED = 1 and @SECURITYDEPOSITAMOUNT = 0
            set @HASINVALIDSECURITYDEPOSITAMOUNT = 1

        if @SECURITYDEPOSITTYPE = 1 and @SECURITYDEPOSITREQUIREDDEFAULT = 1 begin
            if @SECURITYDEPOSITAMOUNT <> round(@RESERVATIONTOTAL * @SECURITYDEPOSITPERCENT * .01, 2) and @STATUSCODE not in (1, 5)
                set @HASINVALIDSECURITYDEPOSITAMOUNT = 1;
        end

        if @CONTRACTRECEIVED = 1 begin
            select top 1 @CONTRACTRECEIVEDDATE = STATUSDATE
            from dbo.RESERVATIONSTATUSHISTORY 
            where RESERVATIONID = @ID and
                STATUSCODE = 7
            order by STATUSDATE desc
        end

        set @FINALCOUNTPASTDUE = 0;
        if @FINALCOUNTREQUIRED = 1 and @FINALCOUNTRECEIVED = 0 begin
            if @FINALCOUNTDUEDATE < @CURRENTDATE
                set @FINALCOUNTPASTDUE = 1;
        end

        set @TOTALVISITORS = dbo.UFN_RESERVATION_TOTALVISITORCOUNT(@ID)

        set @CONTACTCONSTITUENTNAME = dbo.UFN_CONSTITUENTSEARCH_DISPLAYNAME(@CONTACTID);

        select
            @CONTACTADDRESS = dbo.UFN_BUILDFULLADDRESS(ID, ADDRESSBLOCK, CITY, STATEID, POSTCODE, COUNTRYID),
            @CONTACTDONOTMAIL = DONOTMAIL
        from dbo.ADDRESS where ID = @ADDRESSID    

        select 
            @CONTACTPHONENUMBER = NUMBER,
            @CONTACTDONOTCALL = DONOTCALL
        from dbo.PHONE where ID = @PHONEID

        select
            @CONTACTEMAILADDRESS = EMAILADDRESS,
            @CONTACTDONOTEMAIL = DONOTEMAIL
        from dbo.EMAILADDRESS where ID = @EMAILADDRESSID

        if @PRICINGCODE = 1 begin
            declare @RATESCALEID uniqueidentifier;

            select
                @RATESCALEID = RATESCALEID
            from dbo.RESERVATIONRATESCALE
            where ID = @ID

            select @RATESCALE = NAME
            from dbo.RATESCALE
            where ID = @RATESCALEID
        end

        select top 1 @FINALPAYMENTRECEIVEDDATE = [REVENUE].[DATE]
        from dbo.[SALESORDERPAYMENT]
        inner join dbo.[REVENUE] on [REVENUE].[ID] = [SALESORDERPAYMENT].[PAYMENTID]
        where [SALESORDERPAYMENT].[SALESORDERID] = @ID
        order by REVENUE.DATE desc;

        set @FINALPAYMENTRECEIVED = 0
        if @AMOUNTPAID >= @RESERVATIONTOTAL and @FINALPAYMENTRECEIVEDDATE is not null
            set @FINALPAYMENTRECEIVED = 1
    end

    return 0;