UFN_APPLYTICKETSTOMEMBERSHIP_GETTICKETS

Returns tickets fro a sales order that can be applied to a membership

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@SALESORDERID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_APPLYTICKETSTOMEMBERSHIP_GETTICKETS
(
    @SALESORDERID uniqueidentifier
) returns @SALESORDERITEMS table
(
    APPLIEDSALESORDERITEMID uniqueidentifier,
    TICKETID uniqueidentifier,
    SALESORDERITEMID uniqueidentifier,
    DESCRIPTION nvarchar(510),
    PRICE money,
    DISCOUNT money,
    AMOUNTALREADYAPPLIED money
)
begin

    -- Get unapplied tickets from the sales order

    insert into @SALESORDERITEMS     
    select
        null,
        TICKETS.ID,
        SALESORDERITEM.ID,
        SALESORDERITEM.DESCRIPTION,
        SALESORDERITEMTICKET.PRICE,
        TICKETS.TOTALDISCOUNTSAPPLIED,
        0.0
    from
        dbo.SALESORDER
        inner join dbo.SALESORDERITEM on
            SALESORDER.ID = SALESORDERITEM.SALESORDERID
        inner join dbo.SALESORDERITEMTICKET on
            SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
        inner join
            (
                select
                    ID,
                    SALESORDERITEMTICKETID,
                    ORDERLEVELDISCOUNTSAPPLIED + ITEMLEVELDISCOUNTSAPPLIED as TOTALDISCOUNTSAPPLIED
                from
                    dbo.TICKET
                where
                    TICKET.STATUSCODE in (0, 1)
                    and TICKET.ISREFUNDED = 0
                    and TICKET.APPLIEDTOMEMBERSHIP = 0
            ) TICKETS on
            SALESORDERITEMTICKET.ID = TICKETS.SALESORDERITEMTICKETID
        left join dbo.SALESORDERITEMTICKETCOMBINATION on
            SALESORDERITEM.ID = SALESORDERITEMTICKETCOMBINATION.ID
    where
        SALESORDER.ID = @SALESORDERID and
        SALESORDERITEMTICKETCOMBINATION.ID is null and
        SALESORDERITEM.TYPECODE = 0

    -- Get applied tickets from the sales order

    insert into @SALESORDERITEMS
    select
        SALESORDERITEMMEMBERSHIPITEMPROMOTION.SALESORDERITEMID,
        TICKET.ID,
        SALESORDERITEM.ID,
        SALESORDERITEM.DESCRIPTION,
        SALESORDERITEM.PRICE,
        TICKET.ORDERLEVELDISCOUNTSAPPLIED + TICKET.ITEMLEVELDISCOUNTSAPPLIED,
        PROMO.AMOUNTAPPLIED
    from 
        dbo.SALESORDERITEMMEMBERSHIPITEMPROMOTION 
        inner join dbo.SALESORDERITEMMEMBERSHIPITEMPROMOTIONAPPLIEDITEM on
            SALESORDERITEMMEMBERSHIPITEMPROMOTION.ID = SALESORDERITEMMEMBERSHIPITEMPROMOTIONAPPLIEDITEM.SALESORDERITEMMEMBERSHIPITEMPROMOTIONID
        inner join dbo.SALESORDERITEM on
            SALESORDERITEMMEMBERSHIPITEMPROMOTIONAPPLIEDITEM.APPLIEDSALESORDERITEMID = SALESORDERITEM.ID
        inner join SALESORDERITEMMEMBERSHIPITEMPROMOTIONAPPLIEDITEMTICKET PROMO on
            PROMO.SALESORDERITEMMEMBERSHIPITEMPROMOTIONAPPLIEDITEMID = SALESORDERITEMMEMBERSHIPITEMPROMOTIONAPPLIEDITEM.ID
        inner join dbo.TICKET on
            PROMO.TICKETID = TICKET.ID
    where
        SALESORDERITEM.SALESORDERID = @SALESORDERID
        and TICKET.STATUSCODE in (0, 1)
        and TICKET.ISREFUNDED = 0
        and TICKET.APPLIEDTOMEMBERSHIP = 1

return
end