USP_DATALIST_RESERVATIONDUEDATES

Parameters

Parameter Parameter Type Mode Description
@RESERVATIONID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_DATALIST_RESERVATIONDUEDATES(@RESERVATIONID uniqueidentifier)
as
    set nocount on;

    declare @CLIENTCURRENTDATE date = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEFROMUTC(getutcdate());

    declare @DUEDATES table (
        DUEDATETYPECODE tinyint,
        DUEDATE date,
        METREQUIREMENT bit,
        SENT bit,
        VIEWDATAFORMID uniqueidentifier,
        HASCONTRACT bit default 0
    );

    declare @BALANCE money;
    declare @SECURITYDEPOSITAMOUNTPAID money;

    declare @DEPOSITREQUIRED bit = 0;
    declare @DEPOSITDUEDATE date;
    declare @DEPOSITAMOUNT money;

    declare @SECURITYDEPOSITREQUIRED bit = 0;
    declare @SECURITYDEPOSITDUEDATE date;
    declare @SECURITYDEPOSITAMOUNT money;

    declare @CONTRACTREQUIRED bit = 0;
    declare @CONTRACTDUEDATE date;
    declare @CONTRACTSENT bit = 0;
    declare @CONTRACTRECEIVED bit = 0;
    declare @HASCONTRACT bit = 0;

    declare @FINALDUEDATE date;
    declare @ORDERBALANCESENT bit = 0;

    declare @FINALCOUNTREQUIRED bit = 0;
    declare @FINALCOUNTDUEDATE date;
    declare @FINALCOUNTRECEIVED bit = 0;

    select
        @DEPOSITREQUIRED = RESERVATION.DEPOSITREQUIRED,
        @DEPOSITDUEDATE = RESERVATION.DEPOSITDUEDATE,
        @DEPOSITAMOUNT = RESERVATION.DEPOSITAMOUNT,
        @SECURITYDEPOSITREQUIRED = RESERVATION.SECURITYDEPOSITREQUIRED,
        @SECURITYDEPOSITDUEDATE = RESERVATION.SECURITYDEPOSITDUEDATE,
        @SECURITYDEPOSITAMOUNT = RESERVATION.SECURITYDEPOSITAMOUNT,
        @CONTRACTREQUIRED = RESERVATION.CONTRACTREQUIRED,
        @CONTRACTSENT = RESERVATION.CONTRACTSENT,
        @CONTRACTDUEDATE = RESERVATION.CONTRACTDUEDATE,
        @CONTRACTRECEIVED = RESERVATION.CONTRACTRECEIVED,
        @FINALDUEDATE = RESERVATION.FINALDUEDATE,
        @ORDERBALANCESENT = RESERVATION.ORDERBALANCESENT,
        @FINALCOUNTREQUIRED = RESERVATION.FINALCOUNTREQUIRED,
        @FINALCOUNTDUEDATE = RESERVATION.FINALCOUNTDUEDATE,
        @FINALCOUNTRECEIVED = RESERVATION.FINALCOUNTRECEIVED,
        @BALANCE = TOTALS.BALANCE,
        @SECURITYDEPOSITAMOUNTPAID = TOTALS.SECURITYDEPOSITAMOUNTPAID
    from
        dbo.RESERVATION
    outer apply
        dbo.UFN_SALESORDER_TOTALS(RESERVATION.ID) as TOTALS
    where
        RESERVATION.ID = @RESERVATIONID;

    if @DEPOSITREQUIRED = 1 begin
        insert into @DUEDATES (DUEDATETYPECODE, DUEDATE, METREQUIREMENT, SENT, VIEWDATAFORMID)
        values (0, @DEPOSITDUEDATE, dbo.UFN_RESERVATION_ISDEPOSITPAID(@RESERVATIONID), 0, '066ec611-2f2a-4cf9-a410-cecd25f71362');
    end

    if @SECURITYDEPOSITREQUIRED = 1 begin
        insert into @DUEDATES (DUEDATETYPECODE, DUEDATE, METREQUIREMENT, SENT, VIEWDATAFORMID)
        values (1, @SECURITYDEPOSITDUEDATE, case when @SECURITYDEPOSITAMOUNTPAID < @SECURITYDEPOSITAMOUNT then 0 else 1 end, 0, '43a395c6-57e1-47c2-b153-1897db42bc3b');
    end

    if @CONTRACTREQUIRED = 1 begin
        if exists (select * from dbo.RESERVATIONATTACHMENT where RESERVATIONID = @RESERVATIONID and ISCONTRACT = 1) begin
            set @HASCONTRACT = 1;
        end

        insert into @DUEDATES (DUEDATETYPECODE, DUEDATE, METREQUIREMENT, SENT, HASCONTRACT, VIEWDATAFORMID)
        values (2, @CONTRACTDUEDATE, @CONTRACTRECEIVED, @CONTRACTSENT, @HASCONTRACT, '273FB09E-34CE-4FEF-A58D-17B8256EBAA1');
    end

    if @FINALCOUNTREQUIRED = 1 begin
        insert into @DUEDATES (DUEDATETYPECODE, DUEDATE, METREQUIREMENT, SENT, VIEWDATAFORMID)
        values (3, @FINALCOUNTDUEDATE, @FINALCOUNTRECEIVED, 0, '854AE2C2-0828-46D7-9FF9-42B979E6D0EE');
    end

    insert into @DUEDATES (DUEDATETYPECODE, DUEDATE, METREQUIREMENT, SENT, VIEWDATAFORMID)
    values (4, @FINALDUEDATE, case when @BALANCE > 0 then 0 else 1 end, @ORDERBALANCESENT, 'E4F77003-06D9-48FB-BE24-A9FCC3BC4777');

    select
        @RESERVATIONID as ID,
        DUEDATETYPECODE,
        DUEDATETYPECODE as DUEDATETYPE,
        DUEDATE,
        case
            when METREQUIREMENT = 1 then
                N'RES:check'
            when @CLIENTCURRENTDATE > DUEDATE then
                N'RES:warning'
            else
                null
        end as IMAGEKEY,
        SENT,
        METREQUIREMENT,
        HASCONTRACT,
        VIEWDATAFORMID
    from
        @DUEDATES
    order by
        DUEDATE, DUEDATETYPECODE;

    return 0;