UFN_SALESORDERTICKET_VALIDQUANTITY

Validates the quantity of tickets for a sales order event.

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@EVENTID uniqueidentifier IN
@ORDERID uniqueidentifier IN
@QUANTITY int IN

Definition

Copy


        CREATE function dbo.UFN_SALESORDERTICKET_VALIDQUANTITY(@EVENTID uniqueidentifier, @ORDERID uniqueidentifier, @QUANTITY int)
        returns bit
        with execute as caller
        as begin
            declare @CURRENTDATE datetime;
            set @CURRENTDATE = getdate();

            declare @RETVAL bit;
            set @RETVAL = 0;

            declare @AVAILABILITY int
            declare @CURRENTTICKETS int

            select @CURRENTTICKETS = isnull(sum(SALESORDERITEM.QUANTITY),0)
            from dbo.SALESORDERITEM
            inner join dbo.SALESORDERITEMTICKET on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
            where 
                SALESORDERITEM.SALESORDERID = @ORDERID and
                SALESORDERITEMTICKET.EVENTID = @EVENTID and
                --Don't count expired tickets

                not exists(
                    select 1 
                    from dbo.SALESORDERRESERVEDITEM 
                    where 
                        SALESORDERRESERVEDITEM.[ID] = [SALESORDERITEM].[ID] and 
                        [EXPIRATIONDATE] <= @CURRENTDATE
                )

            select @AVAILABILITY = AVAILABILITY
            from dbo.V_PROGRAMEVENT_TICKETCOUNTS
            where ID = @EVENTID

            -- Put the number we are trying to modify back into availability

            set @AVAILABILITY = @AVAILABILITY + @CURRENTTICKETS

            if @AVAILABILITY >= @QUANTITY
                set @RETVAL = 1;

            return @RETVAL;

        end