USP_DATALIST_SALESORDER_TICKETS

Lists all tickets belonging to a sales order.

Parameters

Parameter Parameter Type Mode Description
@CONTEXTID uniqueidentifier IN Input parameter indicating the context ID for the data list.

Definition

Copy


            CREATE procedure dbo.USP_DATALIST_SALESORDER_TICKETS
            (
                @CONTEXTID uniqueidentifier
            )
            as

                declare @FEESDISCOUNTSANDREFUNDS table (
                    SALESORDERITEMID uniqueidentifier,
                    FEES money,
                    DISCOUNTS money,
                    QUANTITYREFUNDED int,
                    AMOUNTREFUNDED money
                )

                insert into @FEESDISCOUNTSANDREFUNDS
                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].[STATUSCODE] = 2

                    ) 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] = @CONTEXTID

      declare @TICKETCOMBINATION table (
        SALESORDERID uniqueidentifier,
        TICKETCOMBINATIONID uniqueidentifier,
        PRICETYPECODEID uniqueidentifier,
        SALESORDERTICKETCOMBINATIONID 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 = @CONTEXTID

      update @TICKETCOMBINATION set SALESORDERTICKETCOMBINATIONID = newid()

      declare @CREDITTICKETCOMBINATION table (
        CREDITID uniqueidentifier,
        TICKETCOMBINATIONID uniqueidentifier,
        PRICETYPECODEID uniqueidentifier,
        CREDITTICKETCOMBINATIONID 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 = @CONTEXTID and FT.TYPECODE = 23;

      update @CREDITTICKETCOMBINATION set CREDITTICKETCOMBINATIONID = newid()

            select
                        [TICKETCOMBINATIONID],
                        [ID],
                        [DESCRIPTION],
                        [STARTDATE],
                        [STARTTIME],
                        [LOCATION],
                        [QUANTITY],
                        [PRICE],
                        [DISCOUNTS],
                        [FEES],
                        [TOTAL],
                        [EVENTID],
                        [PROGRAMID],
                        [PRICETYPECODEID],
                        [ISREFUND],
                        case PRICINGSTRUCTURECODE
                            when 2 then 1  -- when structure is override rate

                            else 0
                        end as [ISPRICEOVERRIDDEN],
                        [ORDERDISCOUNT],
                        [NAME],
                        [COMBINATIONID]
                from(
                    --Tickets

            select 
                        TICKETCOMBINATION.TICKETCOMBINATIONID,
                        [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],
                        [EVENT].[ID] as [EVENTID],
                        [PROGRAM].[ID] as [PROGRAMID],
                        [SALESORDERITEMTICKET].[PRICETYPECODEID],
                        0 as [ISREFUND],
                        [SALESORDERITEM].[DATEADDED],
                        SALESORDERITEM.PRICINGSTRUCTURECODE,
                        (
                            select coalesce(sum([AMOUNT]),0
                            from dbo.[SALESORDERITEMORDERDISCOUNTDETAIL] 
                            where [SALESORDERITEMID] = SALESORDERITEM.ID
                        ) as [ORDERDISCOUNT],  --Only calculated here for performance reasons (and not on the other unioned pieces) since this value is only one used online

                        isnull([EVENT].[NAME], PROGRAM.NAME) as NAME,
                        [SALESORDERITEMTICKETCOMBINATION].[COMBINATIONID]
                    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,
                TICKETCOMBINATION.SALESORDERTICKETCOMBINATIONID,
                [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]),
                ([SALESORDERITEM].[QUANTITY] - [FEESDISCOUNTSANDREFUNDS].[QUANTITYREFUNDED]) * dbo.UFN_SALESORDER_GETTICKETCOMBINATIONPRICE([SALESORDERITEM].[ID]) + dbo.UFN_SALESORDER_GETTICKETCOMBINATIONFEES([SALESORDERITEM].[ID]),
                null,
                null,
                 [SALESORDERITEMTICKET].[PRICETYPECODEID],
                0 as [ISREFUND],
                [SALESORDERITEM].[DATEADDED],
                SALESORDERITEM.PRICINGSTRUCTURECODE,
                0 as [ORDERDISCOUNT],
                COMBINATION.NAME,
                COMBINATION.ID as COMBINATIONID
        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] = @CONTEXTID and 
              [SALESORDERITEM].[QUANTITY] - [FEESDISCOUNTSANDREFUNDS].[QUANTITYREFUNDED] > 0

      union all

        --Refunded tickets

        select
            CREDITTICKETCOMBINATION.CREDITTICKETCOMBINATIONID,
            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,
            [EVENT].[ID] as [EVENTID],
            [PROGRAM].[ID] as [PROGRAMID],
            [SALESORDERITEMTICKET].[PRICETYPECODEID],
            1 as [ISREFUND],
            LI.[DATEADDED],
            SALESORDERITEM.PRICINGSTRUCTURECODE,
            0 as [ORDERDISCOUNT],
            isnull([EVENT].[NAME], PROGRAM.NAME) as NAME,
            [SALESORDERITEMTICKETCOMBINATION].[COMBINATIONID]
        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] = @CONTEXTID and FT.[TYPECODE] = 23

      union all

        -- Refunded combination tickets

        select distinct
            null,
            CREDITTICKETCOMBINATION.CREDITTICKETCOMBINATIONID as [ID],
            '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),
            null,
            null,
            [SALESORDERITEMTICKET].[PRICETYPECODEID],
            1 as [ISREFUND],
            LI.[DATEADDED],
            SALESORDERITEM.PRICINGSTRUCTURECODE,
            0 as [ORDERDISCOUNT],
            COMBINATION.NAME,
            [SALESORDERITEMTICKETCOMBINATION].[COMBINATIONID]
        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] = @CONTEXTID and FT.[TYPECODE] = 23
    ) as [TICKETS] 
            order by [DATEADDED], [TICKETS].[ID], [TICKETS].[ISREFUND]