UFN_SALESORDER_TICKETS

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@SALESORDERID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_SALESORDER_TICKETS (@SALESORDERID uniqueidentifier)
returns @TICKETS table (ID uniqueidentifier, DESCRIPTION nvarchar(1024), STARTDATE date, STARTTIME char(4), LOCATION nvarchar(500), QUANTITY int, PRICE money, DISCOUNTS money, FEES money, TOTAL money)
as
begin
declare @FEESDISCOUNTSANDREFUNDS table (
    SALESORDERITEMID uniqueidentifier,
    FEES money,
    DISCOUNTS money,
    QUANTITYREFUNDED int,
    AMOUNTREFUNDED money
)

insert into @FEESDISCOUNTSANDREFUNDS (SALESORDERITEMID, FEES, DISCOUNTS, QUANTITYREFUNDED, AMOUNTREFUNDED)
select 
    [SALESORDERITEM].[ID],
    (
        (select coalesce(sum([FEESALESORDERITEM].[TOTAL]),0.0)
        from dbo.[SALESORDERITEM] as [FEESALESORDERITEM]
        inner join dbo.[SALESORDERITEMFEE] on [FEESALESORDERITEM].[ID] = [SALESORDERITEMFEE].[ID]
        where [SALESORDERITEMFEE].[SALESORDERITEMID] = [SALESORDERITEM].[ID])
        -
        (select isnull(sum((LI.QUANTITY * LI.UNITVALUE) - CREDITITEM_EXT.DISCOUNTS),0)
        from dbo.SALESORDERITEMFEE
        inner join dbo.CREDITITEM_EXT on SALESORDERITEMFEE.ID = CREDITITEM_EXT.SALESORDERITEMID
        inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = CREDITITEM_EXT.ID
        where SALESORDERITEMFEE.SALESORDERITEMID = SALESORDERITEM.ID)
    ) as [FEES],
    (
        select coalesce(sum([AMOUNT]),0.0)
        from dbo.[SALESORDERITEMITEMDISCOUNT]
        where [SALESORDERITEMID] = [SALESORDERITEM].[ID]
    ) as [DISCOUNTS], --Item Discounts

    (
        select coalesce(count([ID]), 0)
        from dbo.[TICKET]
        where [TICKET].SALESORDERITEMTICKETID = [SALESORDERITEM].[ID] and
            [TICKET].[ISREFUNDED] = 1

    ) as [REFUNDEDQUANTITY],
    (
        select
            isnull(sum((LI.QUANTITY * LI.UNITVALUE) - CREDITITEM_EXT.DISCOUNTS), 0)
        from
            dbo.CREDITITEM_EXT
        inner join
          dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = CREDITITEM_EXT.ID
        inner join
            dbo.FINANCIALTRANSACTION FT on FT.ID = CREDITITEM_EXT.CREDITID
        where
            CREDITITEM_EXT.SALESORDERITEMID = SALESORDERITEM.ID
            and FT.TYPECODE = 23  -- Refund

    ) as [AMOUNTREFUNDED]
from dbo.[SALESORDERITEM]
where [SALESORDERITEM].[SALESORDERID] = @SALESORDERID

declare @TICKETCOMBINATION table (
SALESORDERID uniqueidentifier,
TICKETCOMBINATIONID uniqueidentifier,
PRICETYPECODEID uniqueidentifier
)

insert into @TICKETCOMBINATION (SALESORDERID, TICKETCOMBINATIONID, PRICETYPECODEID)
select distinct SALESORDERITEM.SALESORDERID, SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID, SALESORDERITEMTICKET.PRICETYPECODEID
from dbo.[SALESORDERITEM]
    inner join dbo.[SALESORDERITEMTICKET] on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
inner join dbo.[SALESORDERITEMTICKETCOMBINATION] on [SALESORDERITEMTICKET].[ID] = [SALESORDERITEMTICKETCOMBINATION].[ID]
    where SALESORDERITEM.SALESORDERID = @SALESORDERID

declare @CREDITTICKETCOMBINATION table (
CREDITID uniqueidentifier,
TICKETCOMBINATIONID uniqueidentifier,
PRICETYPECODEID uniqueidentifier
)

insert into @CREDITTICKETCOMBINATION (CREDITID, TICKETCOMBINATIONID, PRICETYPECODEID)
select distinct FT.ID, SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID, SALESORDERITEMTICKET.PRICETYPECODEID
from dbo.FINANCIALTRANSACTION FT
inner join dbo.CREDIT_EXT on FT.ID = CREDIT_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.FINANCIALTRANSACTIONID = FT.ID
inner join dbo.CREDITITEM_EXT on CREDITITEM_EXT.ID = LI.ID
inner join dbo.SALESORDERITEM on CREDITITEM_EXT.SALESORDERITEMID = SALESORDERITEM.ID
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
inner join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETCOMBINATION.ID
where CREDIT_EXT.SALESORDERID = @SALESORDERID and FT.TYPECODE = 23;

insert into @TICKETS (ID, DESCRIPTION, STARTDATE, STARTTIME, LOCATION, QUANTITY, PRICE, DISCOUNTS, FEES, TOTAL)
select
        [ID],
        [DESCRIPTION],
        [STARTDATE],
        [STARTTIME],
        [LOCATION],
        [QUANTITY],
        [PRICE],
        [DISCOUNTS],
        [FEES],
        [TOTAL]
from(
    --Tickets

    select 
            [SALESORDERITEM].[ID],
            [SALESORDERITEM].[DESCRIPTION],
            [EVENT].[STARTDATE],
            [EVENT].[STARTTIME],
            dbo.UFN_EVENT_GETLOCATIONNAME([EVENT].[ID]) as [LOCATION],
            [SALESORDERITEM].[QUANTITY] - [FEESDISCOUNTSANDREFUNDS].[QUANTITYREFUNDED] as [QUANTITY],
            [SALESORDERITEM].[PRICE],
            [FEESDISCOUNTSANDREFUNDS].[DISCOUNTS],
            [FEESDISCOUNTSANDREFUNDS].[FEES],
            SALESORDERITEM.TOTAL + FEESDISCOUNTSANDREFUNDS.FEES - FEESDISCOUNTSANDREFUNDS.DISCOUNTS - FEESDISCOUNTSANDREFUNDS.AMOUNTREFUNDED as [TOTAL]
        from dbo.[SALESORDERITEM]
        inner join @FEESDISCOUNTSANDREFUNDS as [FEESDISCOUNTSANDREFUNDS] on [SALESORDERITEM].[ID] = [FEESDISCOUNTSANDREFUNDS].[SALESORDERITEMID]
        inner join dbo.[SALESORDERITEMTICKET] on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
        inner join dbo.[PRICETYPECODE] on [SALESORDERITEMTICKET].[PRICETYPECODEID] = [PRICETYPECODE].[ID]
    left join dbo.[SALESORDERITEMTICKETCOMBINATION] on [SALESORDERITEMTICKET].[ID] = [SALESORDERITEMTICKETCOMBINATION].[ID]
    left join @TICKETCOMBINATION as TICKETCOMBINATION on [SALESORDERITEM].[SALESORDERID] = TICKETCOMBINATION.[SALESORDERID] 
                                                              and SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID = TICKETCOMBINATION.TICKETCOMBINATIONID
                                                              and SALESORDERITEMTICKET.PRICETYPECODEID = TICKETCOMBINATION.PRICETYPECODEID
        left join dbo.[EVENT] on [SALESORDERITEMTICKET].[EVENTID] = [EVENT].[ID]
        left join dbo.[PROGRAM] on [SALESORDERITEMTICKET].[PROGRAMID] = [PROGRAM].[ID]
        where ([FEESDISCOUNTSANDREFUNDS].[QUANTITYREFUNDED] = 0) or ([SALESORDERITEM].[QUANTITY] > [FEESDISCOUNTSANDREFUNDS].[QUANTITYREFUNDED])

    union all 
    -- combination tickets

    select distinct
    null,
      [COMBINATION].[NAME] + ' - ' + [PRICETYPECODE].[DESCRIPTION] as [DESCRIPTION],
    null as [STARTDATE],
    null as [STARTTIME],
    null as [LOCATION],
    [SALESORDERITEM].[QUANTITY] - [FEESDISCOUNTSANDREFUNDS].[QUANTITYREFUNDED] as [QUANTITY],
      dbo.UFN_SALESORDER_GETTICKETCOMBINATIONPRICE([SALESORDERITEM].[ID]),
      0,
    dbo.UFN_SALESORDER_GETTICKETCOMBINATIONFEES([SALESORDERITEM].[ID]) - dbo.UFN_SALESORDER_GETTICKETCOMBINATIONFEESREFUNDED([SALESORDERITEM].[ID]),
      ([SALESORDERITEM].[QUANTITY] - [FEESDISCOUNTSANDREFUNDS].[QUANTITYREFUNDED]) * dbo.UFN_SALESORDER_GETTICKETCOMBINATIONPRICE([SALESORDERITEM].[ID]) + dbo.UFN_SALESORDER_GETTICKETCOMBINATIONFEES([SALESORDERITEM].[ID])
    from dbo.[SALESORDERITEM]
        inner join @FEESDISCOUNTSANDREFUNDS as [FEESDISCOUNTSANDREFUNDS] on [SALESORDERITEM].[ID] = [FEESDISCOUNTSANDREFUNDS].[SALESORDERITEMID]
    inner join dbo.[SALESORDERITEMTICKET] on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
    inner join dbo.[SALESORDERITEMTICKETCOMBINATION] on [SALESORDERITEMTICKET].[ID] = [SALESORDERITEMTICKETCOMBINATION].[ID]
    inner join @TICKETCOMBINATION as TICKETCOMBINATION on [SALESORDERITEM].[SALESORDERID] = TICKETCOMBINATION.[SALESORDERID] 
                                                              and SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID = TICKETCOMBINATION.TICKETCOMBINATIONID
                                                              and SALESORDERITEMTICKET.PRICETYPECODEID = TICKETCOMBINATION.PRICETYPECODEID
    inner join dbo.[COMBINATION] on [SALESORDERITEMTICKETCOMBINATION].[COMBINATIONID] = [COMBINATION].[ID]
    inner join dbo.[COMBINATIONPRICETYPE] on [COMBINATIONPRICETYPE].PRICETYPECODEID  = [SALESORDERITEMTICKET].[PRICETYPECODEID]
                                      and [COMBINATION].[ID] = [COMBINATIONPRICETYPE].[COMBINATIONID] 
    inner join dbo.[PRICETYPECODE] on [SALESORDERITEMTICKET].[PRICETYPECODEID] = [PRICETYPECODE].[ID]
    where [SALESORDERITEM].[SALESORDERID] = @SALESORDERID and 
    [SALESORDERITEM].[QUANTITY] - [FEESDISCOUNTSANDREFUNDS].[QUANTITYREFUNDED] > 0

    union all

        --Refunded tickets

    select
            CREDITITEM_EXT.[ID] as [ID],
            'Refund ' + convert(nvarchar(20),cast(FT.DATE as datetime), 1) + ', ' + [SALESORDERITEM].[DESCRIPTION] as [DESCRIPTION],
            [EVENT].[STARTDATE],
            [EVENT].[STARTTIME],
            dbo.UFN_EVENT_GETLOCATIONNAME([EVENT].[ID]) as [LOCATION],
            LI.[QUANTITY],
            LI.UNITVALUE as [PRICE],
            CREDITITEM_EXT.[DISCOUNTS],
            CREDITITEM_EXT.[FEES],
            (LI.QUANTITY * LI.UNITVALUE) - CREDITITEM_EXT.DISCOUNTS + CREDITITEM_EXT.FEES
        from dbo.CREDITITEM_EXT
        inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = CREDITITEM_EXT.ID
        inner join dbo.FINANCIALTRANSACTION FT on FT.[ID] = LI.FINANCIALTRANSACTIONID
        inner join dbo.CREDIT_EXT on CREDIT_EXT.ID = FT.ID
        inner join dbo.[SALESORDERITEM] on CREDITITEM_EXT.[SALESORDERITEMID] = [SALESORDERITEM].[ID]
        inner join dbo.[SALESORDERITEMTICKET] on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
    left join dbo.[SALESORDERITEMTICKETCOMBINATION] on [SALESORDERITEMTICKET].[ID] = [SALESORDERITEMTICKETCOMBINATION].[ID]
    left join @CREDITTICKETCOMBINATION as CREDITTICKETCOMBINATION on CREDIT_EXT.[ID] = CREDITTICKETCOMBINATION.[CREDITID] 
                                                              and SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID = CREDITTICKETCOMBINATION.TICKETCOMBINATIONID
                                                              and SALESORDERITEMTICKET.PRICETYPECODEID = CREDITTICKETCOMBINATION.PRICETYPECODEID
        left join dbo.[EVENT] on [SALESORDERITEMTICKET].[EVENTID] = [EVENT].[ID]
        left join dbo.[PROGRAM] on [SALESORDERITEMTICKET].[PROGRAMID] = [PROGRAM].[ID]
        where CREDIT_EXT.[SALESORDERID] = @SALESORDERID and FT.[TYPECODE] = 23

    union all
    -- Refunded combination tickets

        select distinct
            null,
            'Refund ' + [COMBINATION].[NAME] + ' - ' + [PRICETYPECODE].[DESCRIPTION] as [DESCRIPTION],
            null,
            null,
            null,
            LI.[QUANTITY],
            dbo.UFN_SALESORDER_GETTICKETCOMBINATIONPRICE([SALESORDERITEM].[ID]),
            CREDITITEM_EXT.[DISCOUNTS],
            dbo.UFN_SALESORDER_GETTICKETCOMBINATIONFEESREFUNDED(LI.ID) as FEES,
            LI.[QUANTITY] * dbo.UFN_SALESORDER_GETTICKETCOMBINATIONPRICE([SALESORDERITEM].[ID]) + dbo.UFN_SALESORDER_GETTICKETCOMBINATIONFEESREFUNDED(LI.ID)
        from dbo.CREDITITEM_EXT
        inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = CREDITITEM_EXT.ID
        inner join dbo.FINANCIALTRANSACTION FT on FT.[ID] = LI.FINANCIALTRANSACTIONID
        inner join dbo.CREDIT_EXT on CREDIT_EXT.ID = FT.ID
        inner join dbo.[SALESORDERITEM] on CREDITITEM_EXT.[SALESORDERITEMID] = [SALESORDERITEM].[ID]
        inner join dbo.[SALESORDERITEMTICKET] on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
    inner join dbo.[SALESORDERITEMTICKETCOMBINATION] on [SALESORDERITEMTICKET].[ID] = [SALESORDERITEMTICKETCOMBINATION].[ID]
    inner join @CREDITTICKETCOMBINATION as CREDITTICKETCOMBINATION on CREDIT_EXT.[ID] = CREDITTICKETCOMBINATION.[CREDITID] 
                                                              and SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID = CREDITTICKETCOMBINATION.TICKETCOMBINATIONID
                                                              and SALESORDERITEMTICKET.PRICETYPECODEID = CREDITTICKETCOMBINATION.PRICETYPECODEID
    inner join dbo.[COMBINATION] on [SALESORDERITEMTICKETCOMBINATION].[COMBINATIONID] = [COMBINATION].[ID]
    inner join dbo.[COMBINATIONPRICETYPE] on [COMBINATIONPRICETYPE].PRICETYPECODEID  = [SALESORDERITEMTICKET].[PRICETYPECODEID]
                                                              and [COMBINATION].[ID] = [COMBINATIONPRICETYPE].[COMBINATIONID] 
    inner join dbo.[PRICETYPECODE] on [SALESORDERITEMTICKET].[PRICETYPECODEID] = [PRICETYPECODE].[ID]
    left join dbo.[PROGRAM] on [SALESORDERITEMTICKET].[PROGRAMID] = [PROGRAM].[ID]
    where CREDIT_EXT.[SALESORDERID] = @SALESORDERID and FT.[TYPECODE] = 23
    ) as [TICKETS] 

return
end