UFN_CREDIT_GETSALESORDERITEMTICKETS

Returns order ticket items for a given sales order id

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@SALESORDERID uniqueidentifier IN

Definition

Copy


    create function dbo.UFN_CREDIT_GETSALESORDERITEMTICKETS
    (
      @SALESORDERID uniqueidentifier

    ) returns @SALESORDERITEMTICKETS table
    (
                    ID uniqueidentifier,
                    DESCRIPTION nvarchar(510),
                    STARTDATE datetime,
                    STARTTIME UDT_HOURMINUTE,
                    PRICE money,
                    DISCOUNTS money,
                    FEES money,
                    TOTAL money,
          QUANTITYAVAILABLE int,
          QUANTITYREFUNDING int
    )
    begin

                declare @FEESANDDISCOUNTS table (
                    SALESORDERITEMID uniqueidentifier,
                    FEES money,
                    DISCOUNTS money,
          QUANTITYREFUNDEDALREADY int
                );

                insert into @FEESANDDISCOUNTS
                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]
                    ) as [FEES],
                    (
                        select coalesce(sum([AMOUNT]),0.0)
                        from dbo.[SALESORDERITEMITEMDISCOUNT]
                        where [SALESORDERITEMID] = [SALESORDERITEM].[ID]
                    ) as [DISCOUNTS],
          (
                        select coalesce(sum([QUANTITY]),0.0)
                        from dbo.[CREDITITEM]
                        where [SALESORDERITEMID] = [SALESORDERITEM].[ID]
                    ) as [QUANTITYREFUNDEDALREADY]
                from dbo.[SALESORDERITEM]
                where [SALESORDERITEM].[SALESORDERID] = @SALESORDERID;


        insert into @SALESORDERITEMTICKETS 
        select
                    [SALESORDERITEM].[ID],
                    [SALESORDERITEM].[DESCRIPTION],
                    [EVENT].[STARTDATE],
                    [EVENT].[STARTTIME],
                    [SALESORDERITEM].[PRICE],
                    [FEESANDDISCOUNTS].[DISCOUNTS],
                    [FEESANDDISCOUNTS].[FEES],
                    [SALESORDERITEM].[TOTAL] + [FEESANDDISCOUNTS].[FEES] - [FEESANDDISCOUNTS].[DISCOUNTS] as [TOTAL],
                    [SALESORDERITEM].QUANTITY - FEESANDDISCOUNTS.QUANTITYREFUNDEDALREADY as QUANTITYAVAILABLE,
                    [SALESORDERITEM].QUANTITY - FEESANDDISCOUNTS.QUANTITYREFUNDEDALREADY as QUANTITYREFUNDING
                from dbo.[SALESORDERITEM]
                inner join @FEESANDDISCOUNTS as [FEESANDDISCOUNTS] on [SALESORDERITEM].[ID] = [FEESANDDISCOUNTS].[SALESORDERITEMID]
                inner join dbo.[SALESORDERITEMTICKET] on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
                left join dbo.[EVENT] on [SALESORDERITEMTICKET].[EVENTID] = [EVENT].[ID]
        where [SALESORDERITEM].QUANTITY - FEESANDDISCOUNTS.QUANTITYREFUNDEDALREADY > 0;


        return;

      end